關於iOS裝置的那些事

來源:互聯網
上載者:User

標籤:系統   .com   dict   名稱   nil   uuid   tostring   name   err   

首先推薦一個在用的庫XYQuick 地址:https://github.com/uxyheaven/XYQuick

idfa:

擷取方式 [ASIdentifierManager sharedManager].advertisingIdentifier.UUIDString
每個裝置只有一個IDFA,不同APP在同一裝置上擷取IDFA的結果是一樣的裝置重啟不會產生新的IDFA但IDFA存在重建的情況:使用者完全重設系統(設定程式 -> 通用 -> 還原 -> 還原位置與隱私)使用者明確還原廣告(設定程式-> 通用 -> 關於本機 -> 廣告 -> 還原廣告標示符)
Appstore禁止不使用廣告而採集IDFA的app上架
檢查代碼中是否使用了idfa1、開啟終端cd到要檢查的檔案的根目錄。2、執行下列語句:grep -r advertisingIdentifier .   (別少了最後那個點號)。
由於idfa會出現取不到的情況,故絕不可以作為業務分析的主id,來識別使用者或者當idfa取不到就使用另外的方法產生具有相同作用的標示符儲存在鑰匙串中

 

idfv:

擷取方式[UIDevice currentDevice].identifierForVendor.UUIDString

  

特點: 根據vendor的值,如果vendor相同,則返回同一字串;如果vendor不同,則返回不同的字串。vendor解釋:英文解釋為賣家,小販。根據xcode文檔解釋,正常情況下,會根據App Store提供的資料進行判斷。但是如果app不是通過app store進行安裝的(如公司專屬應用程式或開發調試階段),那麼會根據bundle ID判斷。判斷準則:參考官方說明com.example.app1和com.example.app2,只有最後的尾碼不同,所以會產生相同的vendor ID
如果使用者將屬於此Vender的所有App卸載,則idfv的值會被重設,即再重裝此Vender的App,idfv的值和之前不同

 

udid:

UDID的全稱是Unique Device Identifier,顧名思義,它就是蘋果IOS裝置的唯一識別碼,它由40個字元的字母和數字組成。
在很多需要限制一台裝置一個帳號的應用中經常會用到。在iOS5中可以擷取到裝置的UDID,後來被蘋果禁止了。

 

uuid:

UUID是Universally Unique Identifier的縮寫,中文意思是通用唯一識別碼。它是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。
這樣,每個人都可以建立不與其它人衝突的 UUID。在此情況下,就不需考慮資料庫建立時的名稱重複問題。蘋果公司建議使用UUID為應用產生唯一標識字串。開發人員可以在應用第一次啟動時調用一 次,然後將該串儲存起來,替代UDID來使用。但是,如果使用者刪除該應用再次安裝時,又會產生新的字串,所以不能保證唯一識別該裝置。
使用UUID,就要考慮應用被刪除後再重新安裝時的處理。一個解決的辦法是:UUID一般只產生一次,儲存在iOS系統裡面,如果應用刪除了,重裝應用之後它的UUID還是一樣的,除非系統重設
。但是不能保證在以後的系統升級後還能用(如果系統儲存了該資訊就能用)

 

isJailbreaking:

手機是否越獄是根據手機檔案目錄來實現的,可以使用XYQuick提供的方法:[XYSystemInfo sharedInstance].isJailBroken

  

isDeviceSimulator:

- (BOOL)isDeviceSimulator{    struct utsname systemInfo;    uname(&systemInfo);        NSString *tmpDevStr = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];    if ([tmpDevStr isEqualToString:@"x86_64"]        || [tmpDevStr isEqualToString:@"i386"]        || [tmpDevStr isEqualToString:@"i586"]) {        return YES;    }        return NO;}

  

 Wi-FiMac:

通常指Wi-Fi的BSSID- (NSString *)wifiMac{    NSString *macIp = @"Not Found";    CFArrayRef myArray = CNCopySupportedInterfaces();    if (myArray != nil) {        CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));        if (myDict != nil) {            NSDictionary *dict = (NSDictionary*)CFBridgingRelease(myDict);            macIp = [dict valueForKey:@"BSSID"];        }    }    if(myArray){        CFRelease(myArray);    }    return macIp;}

Wi-Fi Name:

Wi-Fi Name通常指Wi-Fi的SSID- (NSString *)deviceSSID{    NSString *wifiName = nil;     CFArrayRef wifiInterfaces = CNCopySupportedInterfaces();        if (!wifiInterfaces) {        return nil;    }        NSArray *interfaces = (__bridge NSArray *)wifiInterfaces;        for (NSString *interfaceName in interfaces) {        CFDictionaryRef dictRef = CNCopyCurrentNetworkInfo((__bridge CFStringRef)(interfaceName));                if (dictRef) {            NSDictionary *networkInfo = (__bridge NSDictionary *)dictRef;            wifiName = [networkInfo objectForKey:(__bridge NSString *)kCNNetworkInfoKeySSID];                        CFRelease(dictRef);        }    }        CFRelease(wifiInterfaces);    return wifiName;}

 

deviceName:

- (NSString *)deviceName{#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)    return [UIDevice currentDevice].name;#else    return @"";#endif}

 

freeDiskSpace:

- (NSString *)freeDiskSpace{#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] ;    NSFileManager *fileManager = [[NSFileManager alloc ]init];    NSDictionary *fileSysAttributes = [fileManager attributesOfFileSystemForPath:path error:nil];    NSNumber *totalSpace = [fileSysAttributes objectForKey:NSFileSystemFreeSize];    return [NSString stringWithFormat:@"%.2fG",[totalSpace longLongValue]/1024.0/1024.0/1024.0];#else    return nil;#endif}

  

totalSpace:

- (NSString *)totalSpace{#if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] ;    NSFileManager *fileManager = [[NSFileManager alloc ]init];    NSDictionary *fileSysAttributes = [fileManager attributesOfFileSystemForPath:path error:nil];    NSNumber *totalSpace = [fileSysAttributes objectForKey:NSFileSystemSize];    return [NSString stringWithFormat:@"%.2fG",[totalSpace longLongValue]/1024.0/1024.0/1024.0];#else    return nil;#endif}

  

 

 

 

 

 

 

 

 

 

 

 

  

關於iOS裝置的那些事

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.