jay*_*dev 31 iphone objective-c uniqueidentifier ios
我们的iOS应用程序适用于特定用户.因此,我们使用设备唯一标识符进行用户识别.这种方法适用于iOS 6,因为我们每次都获得相同的值.
NSString *strUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];
Run Code Online (Sandbox Code Playgroud)
在iOS 7中,上述方法返回不同的值,我们在用户识别方面遇到问题.iOS 7提供以下备用.
NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];
Run Code Online (Sandbox Code Playgroud)
我们替换uniqueIdentifier
了identifierForVendor
,并创建了一个Ad-hoc构建.然后,我们在iOS 7和iOS 6设备上安装了构建版本.到目前为止,在iOS 7中,我们每次都获得相同的值,但iOS 6 每次删除并重新安装应用程序时都会给出不同的值.
ner*_*lfe 31
使用这个小助手方法将密钥链中的标识符保存在app的安装/删除会话之间
-(NSString *)getUniqueDeviceIdentifierAsString
{
NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *strApplicationUUID = [SSKeychain passwordForService:appName account:@"incoding"];
if (strApplicationUUID == nil)
{
strApplicationUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
[SSKeychain setPassword:strApplicationUUID forService:appName account:@"incoding"];
}
return strApplicationUUID;
}
Run Code Online (Sandbox Code Playgroud)
将SSKeychain库添加到您的项目中,例如通过Cocoapodspod 'SSKeychain'
什么是UDID替换?
目前,Apple似乎计划用两种不同的标识符替换UDID:供应商ID和广告ID.
供应商ID
来自同一开发者的应用之间的ID相同.删除该团队ID的最后一个应用程序.
广告ID
该设备的独特之处.适用于所有应用; 用于广告 - iAd已从iOS 6及更高版本的UDID转换而来.使用"删除所有内容和设置"重置.
在大多数情况下,供应商ID将允许具有多个应用程序的开发人员将您识别为所有应用程序中的同一用户.这可以帮助开发人员更好地了解他们的受众并提供更好的服务.
广告ID仍会为设备创建唯一标识符,但与UDID不同,可以关闭或重置广告ID,就像可以在桌面或笔记本电脑上的浏览器中控制Cookie一样.
随着本周早些时候iOS7的发布,苹果又采取了一个措施,即关闭另一个独特的标识符 - 应用程序开发商和广告公司可以使用的"MAC地址",而不是新的广告ID.通过弥补这个漏洞,Apple正在采取强有力的措施,迫使这些公司只使用用户可以控制的跨应用程序标识符.
还有待观察的是,目标公司是否会继续寻求解决苹果公司授权的方法.其他技术,如"设备指纹识别",已经开发出来,可以在Apple框架之外唯一地识别您的设备.苹果是否会打击这些方法还有待观察.
如果设备上没有安装您签名的其他应用程序,则可以更改供应商标识符。此外,如果您通过不同的分发方法安装应用程序,则供应商的标识符可能会发生变化,即。当通过 XCode 安装以及通过 TestFlight 或 HockeyApp 分发时,应用程序可能不具有相同的供应商标识符。
归档时间: |
|
查看次数: |
49497 次 |
最近记录: |