Data Fetching Guide for iOS

    Airbridge Device ID

    Device identifier by Airbridge. (example: 82A16EC9-A273-48B6-9BB2-017EAB641109)

    iOS SDK (v4)

    12345
    import Airbridge
    
    Airbridge.fetchDeviceUUID { deviceUUID in
    
    }
    12345
    #import <Airbridge/Airbridge.h>
    
    [Airbridge fetchDeviceUUID:^(NSString * _Nonnull deviceUUID) {
    
    }];

    iOS SDK (Previous)

    123
    import AirBridge
    
    AirBridge.deviceUUID
    123
    #import <AirBridge/AirBridge.h>
    
    AirBridge.deviceUUID;

    Airbridge Generated ID

    Random UUID assigned by Airbridge upon app install on each device. (example: 82A16EC9-A273-48B6-9BB2-017EAB641109)

    iOS SDK (v4)

    12345
    import Airbridge
    
    Airbridge.fetchAirbridgeGeneratedUUID { airbridgeGeneratedUUID in
    
    }
    12345
        #import <Airbridge/Airbridge.h>
    
        [Airbridge fetchAirbridgeGeneratedUUID:^(NSString * _Nonnull airbridgeGeneratedUUID) {
            
        }];

    iOS SDK (Previous)

    12345
    import AirBridge
    
    AirBridge.fetchAirbridgeGeneratedUUID { uuid in
    
    }
    12345
        #import <AirBridge/AirBridge.h>
    
        [AirBridge fetchAirbridgeGeneratedUUID:^(NSString * _Nonnull uuid) {
            
        }];

    IDFA

    Advertising ID issued by Apple. (example: 82A16EC9-A273-48B6-9BB2-017EAB641109)

    123
    import AdSupport
    
    ASIdentifierManager.shared().advertisingIdentifier.uuidString
    123
    #import <AdSupport/AdSupport.h>
    
    ASIdentifierManager.sharedManager.advertisingIdentifier.UUIDString;

    IDFV

    Unique ID that publishers can use to identify which apps a specific user has installed. (example: 82A16EC9-A273-48B6-9BB2-017EAB641109)

    1
    UIDevice.current.identifierForVendor?.uuidString
    1
    UIDevice.currentDevice.identifierForVendor.UUIDString;

    Limit Ad Tracking

    Device's Limit AD Tracking information. (example: true)

    123
    import AdSupport
    
    ASIdentifierManager.shared().isAdvertisingTrackingEnabled
    123
    #import <AdSupport/AdSupport.h>
    
    ASIdentifierManager.sharedManager.advertisingTrackingEnabled;

    Device Model

    Device model name. (example: iPhone)

    1
    UIDevice.current.localizedModel
    1
    UIDevice.currentDevice.localizedModel;

    Device Identifier

    Device identifier name. (example: iPhone9,3)

    1234
    var systemInfo = utsname()
    uname(&systemInfo)
            
    return String(cString: &systemInfo.machine.0, encoding: .utf8)
    1234567
    #import <sys/utsname.h>
    
    struct utsname systemInfo;
    uname(&systemInfo);
            
    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];

    Device Manufacturer

    Device manufacturer information. (example: Apple)

    1
    "Apple"
    1
    @"Apple"

    OS Name

    Device OS name. (example: iOS)

    1
    UIDevice.current.systemName
    1
    UIDevice.currentDevice.systemName;

    OS Version

    Device OS version. (example: 13.3)

    1
    UIDevice.current.systemVersion
    1
    UIDevice.currentDevice.systemVersion;

    Locale

    Device locale settings. (example: ko-KR)

    1234567891011121314151617181920212223242526
    func getSystemLocale() -> String? {
        guard let language = getSystemLanguage() else { return nil }
        guard let country = getSystemCountry() else { return nil }
        
        return "\(language)-\(country)"
    }
    
    func getSystemLanguage() -> String? {
        let languages = Locale.preferredLanguages
        
        if languages.count < 1 {
            return nil
        }
        
        let languageSource = languages[0]
        
        guard let barIndex = languageSource.range(of: "-") else {
            return languageSource
        }
        
        return String(languageSource[..<barIndex.lowerBound])
    }
    
    func getSystemCountry() -> String? {
        return Locale.autoupdatingCurrent.regionCode
    }
    123456789101112131415161718192021222324252627282930313233343536373839
    + (NSString *)getSystemLocale {
        NSString* language = [#ClassName# getSystemLanguage];
        NSString* country = [#ClassName# getSystemCountry];
        
        if(language == nil || country == nil) {
            return nil;
        }
        
        return [NSString stringWithFormat:@"%@-%@", language, country];
    }
    
    + (NSString*) getSystemLanguage {
        NSArray* preferredLanguages = NSLocale.preferredLanguages;
        
        if (preferredLanguages.count < 1) {
            return nil;
        }
        
        NSString* languageSource = preferredLanguages[0];
        if (languageSource == nil) {
            return nil;
        }
        
        NSRange barIndex = [languageSource rangeOfString:@"-"];
        if (barIndex.location != NSNotFound) {
            languageSource = [languageSource substringToIndex:barIndex.location];
        }
        
        return languageSource;
    }
    
    + (NSString*) getSystemCountry {
        NSLocale* locale = NSLocale.autoupdatingCurrentLocale;
        if (locale == nil) {
            return nil;
        }
        
        return [locale objectForKey:NSLocaleCountryCode];
    }

    Timezone

    Device timezone settings. (example: US/Pacific)

    1
    TimeZone.current.description
    1
    NSTimeZone.systemTimeZone.name;

    Orientation

    Device display orientation. Values will be either "portrait" or "landscape". (example: portrait)

    12345
    if UIDevice.current.orientation.isLandscape {
        return @"landscape"
    } else {
        return @"portrait"
    }
    12345
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if (UIInterfaceOrientationIsLandscape(orientation))
        return @"landscape";
    else
        return @"portrait";

    Screen Density

    Device's screen density. (example: 3.000)

    1
    String(format: "%.3f", UIScreen.main.scale)
    1
    [NSString stringWithFormat:@"%.3f", UIScreen.mainScreen.scale];

    Screen Width

    Device's actual width. (example: 375.0)

    1
    String(format: "%.f", UIScreen.main.bounds.size.width)
    1
    [NSString stringWithFormat:@"%.f", UIScreen.mainScreen.bounds.size.width];

    Screen Height

    Device's actual height. (example: 667.0)

    1
    String(format: "%.f", UIScreen.main.bounds.size.height)
    1
    [NSString stringWithFormat:@"%.f", UIScreen.mainScreen.bounds.size.height];

    Network Carrier

    Device network carrier information.

    1234567891011
    import CoreTelephony
    
    let info = CTTelephonyNetworkInfo()
    
    if #available(iOS 12.1, *) {
        let providers = info.serviceSubscriberCellularProviders
        return providers?.values.first?.carrierName
    } else {
        let provider = info.subscriberCellularProvider
        return provider?.carrierName
    }
    123456789101112
    #import <CoreTelephony/CTCarrier.h>
    #import <CoreTelephony/CTTelephonyNetworkInfo.h>
    
    CTTelephonyNetworkInfo* networkInfo = [[CTTelephonyNetworkInfo alloc] init];
    
    if (@available(iOS 12.1, *)) {
        NSDictionary<NSString*, CTCarrier*>* providers = [networkInfo serviceSubscriberCellularProviders];
        return providers.allValues.firstObject.carrierName;
    } else {
        CTCarrier* provider = [networkInfo subscriberCellularProvider];
        return provider.carrierName;
    }

    Cellular Status

    Device mobile data status. (example: true)

    12345678910111213141516171819202122232425262728293031323334353637383940414243
    import SystemConfiguration
    
    func isCellular() -> Bool {
        return network() == .cellular
    }
    
    enum Network {
        case wifi
        case cellular
        case none
    }
    
    func getNetworkInfo() -> Network {
        var zeroAddress = sockaddr()
        bzero(&zeroAddress, MemoryLayout.size(ofValue: zeroAddress))
        zeroAddress.sa_len = __uint8_t(MemoryLayout.size(ofValue: zeroAddress))
        zeroAddress.sa_family = sa_family_t(AF_INET)
    
        guard let reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, &zeroAddress) else {
            return .none
        }
    
        var flags = SCNetworkReachabilityFlags()
        if !SCNetworkReachabilityGetFlags(reachability, &flags) {
            return .none
        }
    
        if !flags.contains(.reachable) {
            return .none
        }
    
        if flags.contains(.connectionRequired)
            && !((flags.contains(.connectionOnDemand) || flags.contains(.connectionOnTraffic))
                && !flags.contains(.interventionRequired)) {
            return .none
        }
        
        if flags.contains(.isWWAN) {
            return .cellular
        } else {
            return .wifi
        }
    }
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
    #import <SystemConfiguration/SystemConfiguration.h>
    #import <netinet/in.h>
    
    + (BOOL) isCellular {
        return [#ClassName# getNetworkInfo] == CELLULAR;
    }
    
    typedef enum : NSInteger {
        WIFI,
        CELLULAR,
        NONE
    } ABNetwork;
    
    + (ABNetwork) getNetworkInfo {
        struct sockaddr_in zeroAddress;
        bzero(&zeroAddress, sizeof(zeroAddress));
        zeroAddress.sin_len = sizeof(zeroAddress);
        zeroAddress.sin_family = AF_INET;
        
        SCNetworkReachabilityRef reachability
            = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *) &zeroAddress);
        if (reachability == nil) {
            return NONE;
        }
        
        SCNetworkReachabilityFlags flags;
        if (!SCNetworkReachabilityGetFlags(reachability, &flags)) {
            return NONE;
        }
        
        if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) {
            return NONE;
        }
        
        if (((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0)
            && !(((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0 || (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)
                 && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0))
        {
            return NONE;
        }
        
        if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) {
            return CELLULAR;
        } else {
            return WIFI;
        }
    }

    WiFi Status

    Device wifi status. (example: true)

    12345678910111213141516171819202122232425262728293031323334353637383940414243
    import SystemConfiguration
    
    func isWifi() -> Bool {
        return network() == .wifi
    }
    
    enum Network {
        case wifi
        case cellular
        case none
    }
    
    func getNetworkInfo() -> Network {
        var zeroAddress = sockaddr()
        bzero(&zeroAddress, MemoryLayout.size(ofValue: zeroAddress))
        zeroAddress.sa_len = __uint8_t(MemoryLayout.size(ofValue: zeroAddress))
        zeroAddress.sa_family = sa_family_t(AF_INET)
    
        guard let reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, &zeroAddress) else {
            return .none
        }
    
        var flags = SCNetworkReachabilityFlags()
        if !SCNetworkReachabilityGetFlags(reachability, &flags) {
            return .none
        }
    
        if !flags.contains(.reachable) {
            return .none
        }
    
        if flags.contains(.connectionRequired)
            && !((flags.contains(.connectionOnDemand) || flags.contains(.connectionOnTraffic))
                && !flags.contains(.interventionRequired)) {
            return .none
        }
        
        if flags.contains(.isWWAN) {
            return .cellular
        } else {
            return .wifi
        }
    }
    1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
    #import <SystemConfiguration/SystemConfiguration.h>
    #import <netinet/in.h>
    
    + (BOOL) isWifi {
        return [#ClassName# getNetworkInfo] == WIFI;
    }
    
    typedef enum : NSInteger {
        WIFI,
        CELLULAR,
        NONE
    } ABNetwork;
    
    + (ABNetwork) getNetworkInfo {
        struct sockaddr_in zeroAddress;
        bzero(&zeroAddress, sizeof(zeroAddress));
        zeroAddress.sin_len = sizeof(zeroAddress);
        zeroAddress.sin_family = AF_INET;
        
        SCNetworkReachabilityRef reachability
            = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *) &zeroAddress);
        if (reachability == nil) {
            return NONE;
        }
        
        SCNetworkReachabilityFlags flags;
        if (!SCNetworkReachabilityGetFlags(reachability, &flags)) {
            return NONE;
        }
        
        if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) {
            return NONE;
        }
        
        if (((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0)
            && !(((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0 || (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)
                 && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0))
        {
            return NONE;
        }
        
        if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) {
            return CELLULAR;
        } else {
            return WIFI;
        }
    }

    Package Name

    Application package name. (example: co.ab180.ablog)

    1
    Bundle.main.bundleIdentifier
    1
    NSBundle.mainBundle.bundleIdentifier;

    Version

    Application version name. (example: 1.0.0)

    1
    Bundle.main.infoDictionary?["CFBundleShortVersionString"]
    1
    [NSBundle.mainBundle.infoDictionary objectForKey:@"CFBundleShortVersionString"];

    Event Timestamp

    Timestamp(milliseconds) of when the event was sent. (example: 1581043739682)

    1
    UInt64(Date().timeIntervalSince1970 * 1000)
    1
    [NSNumber numberWithUnsignedLongLong:NSDate.date.timeIntervalSince1970 * 1000];

    このページは役に立ちましたか?

    ご質問やご提案はありますか?