ios7 设备唯一标志

转自:http://supershll.blog.163.com/blog/static/37070436201399111929848/

1、KeyChain方法:http://www.cnblogs.com/smileEvday/p/UDID.html  项目地质:https://github.com/smileEvday/SvUDID 使用项目中的SvUDIDTools即可。现摘录以下:

  苹果提供了一个方法允许同一个发商的多个APP访问各APP之间的途径,即在调SecItemAdd添加数据的时候指定AccessGroup,即访问组。一个APP可以属于同事属于多个分组,添加KeyChain数据访问组需要做一下两件事情:

  a、在APP target的bulibSetting里面设置Code Signing Entitlements,指向包含AceessGroup的分组信息的plist文件。该文件必须和工程文件在同一个目录下,我在添加访问分组的时候就 因为plist文件位置问题,操作KeyChain失败,查找这个问题还花了好久的时间。

ios7 设备唯一标志_第1张图片

  b、在工程目录下新建一个KeychainAccessGroups.plist文件,该文件的结构中最顶层的节点必须是一个名为“keychain-access-groups”的Array,并且该Array中每一项都是一个描述分组的NSString。

ios7 设备唯一标志 - supershll - 记忆里

“yourAppID.com.yourCompany.whatever”就是你要起的公共区名称,除了whatever字段可以随便定之外,其 他的都必须如实填写。这个文件的路径要配置 在 Project->build setting->Code Signing Entitlements里,否则公共区无效,配置好后, 须用你正式的证书签名编译才可通过,否则xcode会弹框告诉你code signing有问题。所以,苹果限制了你只能同公司的产品共享 KeyChain数据,别的公司访问不了你公司产品的KeyChain。

yourAppID从这里看:

ios7 设备唯一标志_第2张图片

其中第五列最开始的10个字符即为App Identifier

查询与添加或update详见https://github.com/smileEvday/SvUDID 使用项目中的SvUDIDTools.m文件。
首先创建一个Dictionary,其中设置一下查找条件,然后通过SecItemCopyMatching方法获取到我们之前保存到KeyChain中的数据。

最后,有一个小地方容易被忽略。配置好 C ode Signing Entitlements之后,就不能用team证书编译了,但这会给平时的版本迭代开发带来很大问题。其实仔细看Code Signing Entitlements,可以发现可以对Debug和Release分别配置。Debug模式不配置路径,就解决问题了。

2、identifierForVendor:程序卸载后会生成新的值。
3、获取IMEI:
        1)https://github.com/erica/uidevice-extension/blob/master/UIDevice-IOKitExtensions.m 
//IOKit导入介绍:http://ios-blog.co.uk/tutorials/iokit-an-introduction/
       2)、NetworkController方式:
NSString* sdk_path = @ /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${IPHONE_SDK}.sdk/System/Library/PrivateFrameworks ;  //路径酌情修改
   NSBundle *b = [NSBundle bundleWithPath:[NSString stringWithFormat:@ %@/Message.framework , sdk_path]];  
   if ([b load]) {  
       Class NetworkController = NSClassFromString(@ NetworkController );  
       id nc = [NetworkController sharedInstance];  
       NSLog(@ -- IMEI: %@ , [nc IMEI]);  
   } 
//经测试:失败
       3)、CoreTelephony方式:https://github.com/search?l=Objective-C&q=imei&ref=simplesearch&type=Repositories 貌似只有越狱版本才可以。

你可能感兴趣的:(ios7 设备唯一标志)