iOS开发关于钥匙串、UUID、打包版本号。编译版本号获取小结

来源:互联网 发布:在淘宝网上买汽车配件 编辑:程序博客网 时间:2024/04/29 21:55

iOS开发关于钥匙串、UUID、打包版本号。编译版本号获取小结
做一些本地要保存一些用户的信息的时候,经常会用到手机的唯一标识;比如希望用户更新、卸载之后再重装,这些操作之后用户的信息还能保存在用户的手机中,其实就是我们很希望能够获取设备的唯一标识,很多iPhone和iOS开发都知道手机的imei号可以作为唯一标识,但是很抱歉,开发者是无法获取的,很多人也知道UDID,UDID也是苹果给每台设备的标识,可以作为设备的唯一标识,但是没有API可以获取到UDID的,苹果给开发者暴露的接口有一个标识,那就是UUID。我们的app刚开始也是用的UUID标识,但是发现UUID在更新和卸载之后,再获取之后就会发生变化,只可以在某段时间作为唯一标识来使用,用户从App Store上更新产品或者卸载重装之后,设备信息也会随着更新,这个根本满足了产品对于唯一的要求,那么,钥匙串可以解决这个问题!!!

来来来!上代码!

//这个方法是获取设备的UUID,也就是删除、更新就会变NSString *uuid = [[NSUUID UUID] UUIDString];

顺便说一下版本号:
很多应用有关于应用的页面介绍,会介绍版本号,有时取出来的版本号你会发现和App Store上的不一样,版本号有编译版本和打包版本区分:

看图就能明白

获取项目的上线打包版本号:(这些信息在info.plist中都有)和App Store中一样的

 NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; //@"CFBundleShortVersionString"这些key值可以在把info.plist文件用文本打开后看到

获取项目的编译版本号

//这两个方法都可以获取到app的编译版本号NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];//方法二    NSString *buildVersion1 = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

从钥匙串中读取UUID
钥匙串存在于每台设备中,每个应用都可以给钥匙串中写入自己要存储的数据,但是也只有自己的应用才能从钥匙串中读出之前存入的数据

方法中的passwordForService: 和 setPassword: forService: 中service的值应该要一致的。最好保存为app的Bundle identifier,这样在钥匙串中才具有唯一性,两个方法的account也要一致的。

//从钥匙串读取UUID:    NSString *retrieveuuid = [SSKeychain passwordForService:@"com.uuidDeviceApp.urthinker"account:@"user"];    if (retrieveuuid.length == 0) {        //给钥匙串中存UUID        CFUUIDRef uuid1 = CFUUIDCreate(NULL);assert(uuid1 != NULL);CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid1);        [SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]                     forService:@"com.uuidDeviceApp.urthinker"account:@"user"];        retrieveuuid = [SSKeychain passwordForService:@"com.uuidDeviceApp.urthinker"account:@"user"];    }      NSLog(@"从keyChain中取出的uuid-> %@",retrieveuuid);}

要使用钥匙串,还需要导入系统的一个框架Security.framework
导入方式:
这里写图片描述

导入框架之后还得导入一个第三方框架:
在github搜索SSKeychain引入即可
这里已经下载好了 链接: https://pan.baidu.com/s/1eR3xDPg 密码: w18m 直接下载出来放入项目中就可以了。

0 0