iOS中keyChain 實現UUID 裝置唯一識別碼碰到的問題

來源:互聯網
上載者:User

iOS中keyChain 實現UUID 裝置唯一識別碼碰到的問題

廢話少說,置入正題:

 

最近在研究實現擷取裝置唯一識別碼時,經過各方面調研,發現使用蘋果官方推薦的keyChain還是挺不錯的。

Apple提供了一個叫GenericKeychain的例子程式,在這裡:http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_h.html#//apple_ref/doc/uid/DTS40007797-Classes_KeychainItemWrapper_h-DontLinkElementID_9,其中封裝了一個簡化Keychain操作的類:KeychainItemWrapper,可以拿來直接使用,記得加入Security.framework!吐槽下。蘋果demo也有記憶體流失,而且沒有適配arc,所以有警告記得在Build Phases 的.m檔案後加上-fno-objc-arc.

然後在Capabilities裡開啟keyChain Sharing ,新版本Xcode會自動產生一個name.entitlements檔案,舊版本就需要自己在工程目錄下建立一個KeychainAccessGroups.plist檔案,該檔案的結構中最頂層的節點必須是一個名為“keychain-access-groups”的Array,並且該Array中每一項都是一個描述分組的NSString。對於String的格式也有相應要求,格式為:AppIdentifier.com.xxxx.name,其中APPIdentifier就是你的開發人員帳號對應的ID。

其中AppIdentifier 這個新版本xcode要去鑰匙串裡去找。1.開啟鑰匙串 2.選擇我的認證 3.看自己使用的認證名字後面有個(xxxxxx)這十個大寫字母就是我們要找的東西。

這個寫錯了是有要報錯的。

 

下面在一個公用類裡加上

/*
uiid
*/
+(NSString *)getUUID
{
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc]
initWithIdentifier:@UUID
accessGroup:@4VXZQB2W6T.com.yjxh.pengsi];//YOUR_BUNDLE_SEED.
NSString *strUUID = [keychainItem objectForKey:(id)CFBridgingRelease(kSecValueData)];
//首次執行該方法時,uuid為空白
if ([strUUID isEqualToString:@])
{
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
strUUID = (NSString *)CFBridgingRelease(CFUUIDCreateString (kCFAllocatorDefault,uuidRef));

[keychainItem setObject:strUUID forKey:(id)CFBridgingRelease(kSecValueData)];
}

return strUUID;

}

就ok了

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.