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数据的使用相关推荐

  1. 安卓设置keychain_IOS的keychain的三种使用方法

    IOS的keychain的三种使用方法 东东 • 2016 年 09 月 11 日 一.keychain介绍 根据苹果的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存 ...

  2. 安卓手机软件开发_无代码,手机app软件开发,让人人都是专业开发工程师

    近期,谷歌发布了自己的无代码在线app开发平台,这款全新工具旨在让任何一个人都可以轻松进行手机app软件开发.这样的动作无疑指引着安卓软件开发的未来. 无代码开发手机app其实由来已久,业内反复讨论了 ...

  3. android开发 文件分享到应用,Android开发之——7.0适配之应用之间共享文件(FileProvider)...

    前言 Android 7.0强制启用了被称作StrictMode的策略,带来的影响就是你的App对外无法暴露file://类型的URI了. 如果你使用Intent携带这样的URI去打开外部App(比如 ...

  4. 安卓设置keychain_共享keychain数据

    [共享keychain数据] 当往keychain中插入数据时,默认的 kSecAttrAccessGroup就是App自身的BundleID. [官方文档] You can add a keycha ...

  5. Gitolite + repo 搭建安卓源码开发环境

    Gitolite + repo 搭建安卓源码开发环境 转载请注明出处:http://blog.csdn.net/u011479494/article/details/50629669 相比gitosi ...

  6. 安卓旅途之——开发数独(一)

    安卓旅途之--开发数独(一) 数独游戏简介 数独游戏,是一种数学智力拼图游戏,是"独立的数字游戏"的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大. 数独游戏可以训练 ...

  7. 大疆无人机安卓Mobile Sdk开发(四)读取飞机的图片和视频并下载

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  8. 大疆无人机安卓Mobile Sdk开发(五)解决M300Rtk H20相机无法获取图片视频的问题

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

  9. 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointMission

    大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆无人机安卓Mobile Sdk开发(三)制定航点任务WaypointM ...

最新文章

  1. Devexpress的Datalayout控件
  2. 如何通过cpuinfo信息查看几个物理cpu,几个核数,几线程
  3. mysql数据库文件位置
  4. Linux-在linux修改文件夹及其子文件夹的权限
  5. idea出现 Error:(1, 16) java: 非法字符: '\u0a0d'
  6. 扫雷打开的初始区域递归_Python:游戏:写一个和 XP 上一模一样的“扫雷”!
  7. puppet(1.1-1.6)
  8. python字符串引用包_如何通过字符串形式导包(importlib模块的使用)
  9. vue导入音乐_苹果vue怎么导入音乐
  10. 基于C语言及51单片机的PID控制电机调速详解(附详细代码及Protsus仿真)
  11. 打印机无法打印测试页是什么原因
  12. python之t分布
  13. 公司简介ppt模板如何利用曲线时间轴提升质感
  14. ThingJS图表整合
  15. BootStrap3 排版
  16. 爬虫,爬取句子迷《龙族》
  17. React_music开发日记
  18. .shtml网站解析UnicodeError
  19. Data too long for column解决方法
  20. Paypal与Moneybookers的比较

热门文章

  1. 问题 B: Cly的博弈
  2. 链游面临重大变局,AZTEC能否异军突起?
  3. 语音合成TTS(Text-To-Speech,从文本到语音)
  4. 尾插法创建链表(C++代码)
  5. 每次都想呼喊你的名字
  6. Unipus读写课程做题工具
  7. LeetCode:871. Minimum Number of Refueling Stops - Python
  8. 图学习笔记(一):图
  9. 导入mysql 1044_MySQL导入sql文件错误#1044
  10. 环境配置 | 更改注册表使PPT导出的图片分辨率达到300dpi