标签:ios开发 mac objective-c 唯一标识
转自: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失败,查找这个问题还花了好久的时间。
b、在工程目录下新建一个KeychainAccessGroups.plist文件,该文件的结构中最顶层的节点必须是一个名为“keychain-access-groups”的Array,并且该Array中每一项都是一个描述分组的NSString。
“yourAppID.com.yourCompany.whatever”就是你要起的公共区名称,除了whatever字段可以随便定之外,其 他的都必须如实填写。这个文件的路径要配置 在 Project->build setting->Code Signing Entitlements里,否则公共区无效,配置好后, 须用你正式的证书签名编译才可通过,否则xcode会弹框告诉你code signing有问题。所以,苹果限制了你只能同公司的产品共享 KeyChain数据,别的公司访问不了你公司产品的KeyChain。
yourAppID从这里看:
其中第五列最开始的10个字符即为App Identifier
查询与添加或update详见https://github.com/smileEvday/SvUDID 使用项目中的SvUDIDTools.m文件。
首先创建一个Dictionary,其中设置一下查找条件,然后通过SecItemCopyMatching方法获取到我们之前保存到KeyChain中的数据。
最后,有一个小地方容易被忽略。配置好Code 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之后暂时代替MAC地址的作为唯一标识的方法!
标签:ios开发 mac objective-c 唯一标识
原文地址:http://blog.csdn.net/niejiafa_131/article/details/45055515