您的位置:首页 > 大数据 > 人工智能

利用KeyChain共享数据(唯一标示)

2016-01-11 23:00 519 查看

利用KeyChain共享数据(唯一标示)

下载KeychainItemWrapper

官方demo

https://developer.apple.com/library/ios/samplecode/GenericKeychain/GenericKeychain.zip

导入KeychainItemWrapper

在项目中导入KeychainItemWrapper,添加Security.framework库。

设置KeychainItemWrapper为非arc

TARGETS —> Build Phases —> Compile Sources

标记KeychainItemWrapper为:-fno-objc-arc

添加配置

添加配置有两种,可以添加plist文件或者添加entitlements文件。

添加plist文件

以下为官方demo的plist详情:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>keychain-access-groups</key>
<array>
<string>YOUR_APP_ID_HERE.com.yourcompany.GenericKeychain</string>
<string>YOUR_APP_ID_HERE.com.yourcompany.GenericKeychainSuite</string>
</array>
</dict>
</plist>


可从官方demo中看出内容格式为

YOUR_APP_ID_HERE.com.yourcompany.GenericKeychain

例如:
$(AppIdentifierPrefix)com.yourcompany.xxx


配置多个可在这些APP中共享数据。

TARGETS —> Build Settings —> Code Signing Entitlements

配置Entitlements:
$(SRCROOT)/plist在项目中绝对位置/xxxx.plist


例如:
$(SRCROOT)/keychain/KeychainAccessGroups.plist


添加entitlements文件

TARGETS —> Capabilities —> Keychain Sharing

设置Keychain Sharing状态为on

添加Keychain Groups:
com.yourcompany.xxx


设置唯一标示

假设以IDFV作为标示,利用KeyChain可以保证卸载以后仍是原IDFV,实现唯一标示。

可以实现多APP使用统一唯一标示。

+(NSString *)getIDFV
{
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"IDFV" accessGroup:nil];
NSString *strIDFV = [keychainItem objectForKey:(id)CFBridgingRelease(kSecValueData)];
if (strIDFV.length == 0)
{
strIDFV = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[keychainItem setObject:strIDFV forKey:(id)CFBridgingRelease(kSecValueData)];
}
return strIDFV;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: