国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ios上取得設備唯一標志的解決方案

2019-11-14 19:55:59
字體:
來源:轉載
供稿:網友

     iOS 7中蘋果再一次無情的封殺mac地址,現在已經不能獲取ios7設備的物理地址。那么在開發中如何才能標識設備的唯一性呢?apple公司提供的方法是通過keychain來存一些標志信息,然后通過存的標志信息來讓應用程序來識別該設備的唯一性。

 apple公司寫了一個簡單的操作keychain的工具類:https://developer.apple.com/library/ios/samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_m.html可以下載,把KeychainItemWrapper.h,.m文件引用xcode中,keychainItemWrapper.m文件可能出錯,這里是由于arc編譯造成的,我們可以根據提示進行解決,也可以用如下圖的方式解決:

 

 

 

接著設置keychain共享:如圖所示

    

此我們可以在項目中看到xxxxx.entitlements結尾的文件。<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/

<plist version="1.0">

<string>$(AppIdentifierPrefix)h.HelloWorld</string>

</plist>

其中的${AppldentifierPrefix}是開發者賬戶的的前綴,是apple的公司提供的,https://developer.apple.com/membercenter/index.action,可以用自已的賬戶進行查看。

存取:key chain:

java代碼 復制代碼 收藏代碼
  1. -(void) setKeyChainValue  
  2. {  
  3.     KeychainItemWrapper *keyChainItem=[[KeychainItemWrapper alloc]initWithIdentifier:@"TestUUID" accessGroup:@"XXXXXX.h.HelloWorld"];  
  4.     NSString *strUUID = [keyChainItem objectForKey:(id)kSecValueData];  
  5.     if (strUUID==nil||[strUUID isEqualToString:@""])  
  6.     {  
  7.         [keyChainItem setObject:[self gen_uuid] forKey:(id)kSecValueData];  
  8.     }  
  9.     [keyChainItem release];  
  10.   
  11. }  
  12.   
  13. -(NSString *) gen_uuid  
  14. {  
  15.     CFUUIDRef uuid_ref=CFUUIDCreate(nil);  
  16.     CFStringRef uuid_string_ref=CFUUIDCreateString(nil, uuid_ref);  
  17.     CFRelease(uuid_ref);  
  18.     NSString *uuid=[NSString stringWithString:uuid_string_ref];  
  19.     CFRelease(uuid_string_ref);  
  20.     return uuid;  
  21. }  
-(void) setKeyChainValue{    KeychainItemWrapper *keyChainItem=[[KeychainItemWrapper alloc]initWithIdentifier:@"TestUUID" accessGroup:@"XXXXXX.h.HelloWorld"];    NSString *strUUID = [keyChainItem objectForKey:(id)kSecValueData];    if (strUUID==nil||[strUUID isEqualToString:@""])    {        [keyChainItem setObject:[self gen_uuid] forKey:(id)kSecValueData];    }    [keyChainItem release];}-(NSString *) gen_uuid{    CFUUIDRef uuid_ref=CFUUIDCreate(nil);    CFStringRef uuid_string_ref=CFUUIDCreateString(nil, uuid_ref);    CFRelease(uuid_ref);    NSString *uuid=[NSString stringWithString:uuid_string_ref];    CFRelease(uuid_string_ref);    return uuid;}

   應用程序第一次在某臺設備上運行時,我們的應用程序保存一個uuid,來標識該設備。等設備把程序刪除時,該uuid依然存在于設備中。

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康保县| 北票市| 青神县| 宿州市| 盐山县| 游戏| 韶关市| 白河县| 蒙山县| 湛江市| 靖江市| 南郑县| 繁峙县| 筠连县| 永修县| 中山市| 思南县| 桂平市| 冷水江市| 于田县| 宁海县| 伊春市| 宜阳县| 沙河市| 新乐市| 大方县| 旌德县| 循化| 璧山县| 怀集县| 克什克腾旗| 称多县| 措勤县| 高安市| 万宁市| 延寿县| 新竹县| 称多县| 防城港市| 四子王旗| 凤庆县|