安卓设置keychain_iOS 开发keychain 使用与多个APP之间共享keychain数据的使用
keychain的作用:
keychain,相当于MAC OS中的钥匙串,但在iOS中相对于功能非常简单.在iOS开发中如果写数据到手机沙盒中,但不管是Caches 还是NSUserDefaults 当应用删除时所有数据都会清除.如果你想在应用删除后还保存一些信息在手机里,这时就要用过keychain了.#import //keychain 管理的类
keychain的使用一(原生):
如果使用apple自带操作有以下四个 (增删改查)方法 C语言的OSStatus SecItemCopyMatching(CFDictionaryRef query, CFTypeRef *result);
OSStatus SecItemAdd(CFDictionaryRef attributes, CFTypeRef *result);
KeyChain中的ItemOSStatus SecItemUpdate(CFDictionaryRef query, CFDictionaryRef attributesToUpdate);
KeyChain中的ItemOSStatus SecItemDelete(CFDictionaryRef query)
keychain的使用二(三方框架 KeychainItemWrapper):
KeychainItemWrapper 就两个文件(KeychainItemWrapper.h KeychainItemWrapper.m) 苹果开发者中心可以下载
下载地址:KeychainItemWrapper 封装好的OC面向对象.但是代码是MRC的,搞起来不方便,所以没有仔细研究.有兴趣的可以自已去研究下功能还是挺多的.
keychain的使用三(三方框架 SFHFKeychainUtils)
相对于 KeychainItemWrapper 使用起来很方便 ,而且还是ARC的
如下提供四个方法:+ (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
+ (BOOL) storeUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOL) updateExisting error: (NSError **) error;
+ (BOOL) deleteItemForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
+ (BOOL) purgeItemsForServiceName:(NSString *) serviceName error: (NSError **) error;
保存:
通过.userName serviceName 保存一个密码self.userName = @"test@qq.com";
self.userPassword = @"1234567890";
self.serviceName = @"space.kylin.www";
NSError *error;
BOOL saved = [SFHFKeychainUtils storeUsername:self.userName andPassword:self.userPassword
forServiceName:self.serviceName updateExisting:YES error:&error];
读取:
通过.userName serviceName 读取一个密码_label.text = [SFHFKeychainUtils getPasswordForUsername:self.userName andServiceName:self.serviceName error:nil];
删除:
userName serviceName 删除一个密码[SFHFKeychainUtils deleteItemForUsername:self.userName andServiceName:self.serviceName error:nil];
清空:
通过一个serviceName清空里面所有数据[SFHFKeychainUtils purgeItemsForServiceName:self.serviceName error:nil];
通过keychain我们可以做到保存一数据到手机,不管手机是否删除了该应用.或者系统更新了.我们保存的数据都不会丢失
APP之间如何共享keychain数据
以下操作 请在真机上进行调试
之前查看了网上相关的资料,发现并没有完整且简单的方法.有些就文字描述了下,有些配了图.但方法是旧的现在也用不了.搞了半天也没有搞定.后天自已看了苹果的开发文档,苹果开发文档写的也比较简单.并没有一步一步列举出来.结合了之前网上一些资料加入苹果开发文档内容,再通过自己的验证终于成功了!
首先他建一个工程 :saveKeyChain 打开target
在keychain Groups 里添加你要分享的另一个APP的bundle ID
格式为 XXXXX.com.kylin610.www.另一个工程名 其中 XXXXX 是的你开发者ID (不是apple ID的登陆名哦) 如:123456RVYVD
实际上当你打开keychain Sharing 里project会多出一下文件
打开一看如下 实现就是一个PLIST文件 这里保存你你需要分享APP的bundle ID 也就是上面keychain Groups 里面的信息.两个地方都可以管理,所以你有多个APP里只要在这里进行设置添加就可以了.
运行工程写入一个密码 1234567890 到keychain里
点击删除与清空后可清除相关内容 点击读取来检查是否删除成功!
如果运行出错如下图:
这是因为你的在keychain groups里填写其它的APP bundle ID格式有误 或者 开发者ID填错了
其它APP怎么使用keychain里面的数据:
首先创建一个工程 getKeyChain 为 :bundle ID为之前工程 keychain Groups 里的添加的当然开发者ID还是同一个
在新工程使用SFHFKeychainUtils 读取和删除 keychain 里面数据self.userName = @"test@qq.com";
self.serviceName = @"space.kylin.www";
_label.text = [SFHFKeychainUtils getPasswordForUsername:self.userName andServiceName:self.serviceName error:nil];
这里的serviceName ,userName 要与之前保存是一致的
如果要删除可执行[SFHFKeychainUtils deleteItemForUsername:self.userName andServiceName:self.serviceName error:nil];
读取结果:
最新更新代码 兼容 xcode 7打开工程
安卓设置keychain_iOS 开发keychain 使用与多个APP之间共享keychain数据的使用相关推荐
- 安卓设置keychain_IOS的keychain的三种使用方法
IOS的keychain的三种使用方法 东东 • 2016 年 09 月 11 日 一.keychain介绍 根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存 ...
- 安卓手机软件开发_无代码,手机app软件开发,让人人都是专业开发工程师
近期,谷歌发布了自己的无代码在线app开发平台,这款全新工具旨在让任何一个人都可以轻松进行手机app软件开发.这样的动作无疑指引着安卓软件开发的未来. 无代码开发手机app其实由来已久,业内反复讨论了 ...
- android开发 文件分享到应用,Android开发之——7.0适配之应用之间共享文件(FileProvider)...
前言 Android 7.0强制启用了被称作StrictMode的策略,带来的影响就是你的App对外无法暴露file://类型的URI了. 如果你使用Intent携带这样的URI去打开外部App(比如 ...
- 安卓设置keychain_共享keychain数据
[共享keychain数据] 当往keychain中插入数据时,默认的 kSecAttrAccessGroup就是App自身的BundleID. [官方文档] You can add a keycha ...
- Gitolite + repo 搭建安卓源码开发环境
Gitolite + repo 搭建安卓源码开发环境 转载请注明出处:http://blog.csdn.net/u011479494/article/details/50629669 相比gitosi ...
- 安卓旅途之——开发数独(一)
安卓旅途之--开发数独(一) 数独游戏简介 数独游戏,是一种数学智力拼图游戏,是"独立的数字游戏"的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大. 数独游戏可以训练 ...
- 大疆无人机安卓Mobile Sdk开发(四)读取飞机的图片和视频并下载
大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...
- 大疆无人机安卓Mobile Sdk开发(五)解决M300Rtk H20相机无法获取图片视频的问题
大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...
- 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission
大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...
最新文章
- Devexpress的Datalayout控件
- 如何通过cpuinfo信息查看几个物理cpu,几个核数,几线程
- mysql数据库文件位置
- Linux-在linux修改文件夹及其子文件夹的权限
- idea出现 Error:(1, 16) java: 非法字符: '\u0a0d'
- 扫雷打开的初始区域递归_Python:游戏:写一个和 XP 上一模一样的“扫雷”!
- puppet(1.1-1.6)
- python字符串引用包_如何通过字符串形式导包(importlib模块的使用)
- vue导入音乐_苹果vue怎么导入音乐
- 基于C语言及51单片机的PID控制电机调速详解(附详细代码及Protsus仿真)
- 打印机无法打印测试页是什么原因
- python之t分布
- 公司简介ppt模板如何利用曲线时间轴提升质感
- ThingJS图表整合
- BootStrap3 排版
- 爬虫,爬取句子迷《龙族》
- React_music开发日记
- .shtml网站解析UnicodeError
- Data too long for column解决方法
- Paypal与Moneybookers的比较