美文网首页IOS特技ios框架ios大神之路
持久化KeyVaule封装系列---KeyChain

持久化KeyVaule封装系列---KeyChain

作者: ColeX | 来源:发表于2016-03-10 17:27 被阅读578次
Keychain.png

题外话

我一般把存储方式(app中)分为三种

  • in memory
    • 一般对象持有,对象销毁,数据跟着消失 (肯定有人要跟我扯单例了……)
  • in disk
    • 这也比较好理解,数据库,归档,文件存储等,应用只要不被删掉,就一直持有
  • in keychain
    • 今天的主人公,可以理解为存储在钥匙串中,而钥匙串是集成在证书中的,所以就算干掉程序,下次只要用相同证书安装,数据依然在

作用?

  • 保存私密信息
    iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。

    • 说一个很简单的需求:某app需要一周之内免登陆,一般我们会将用户信息存储到文件中,但是中间第三天时不小心删掉了app,那么上述就行不通了,但是keychain依然坚挺。
  • app之间数据共享
    通俗来说,使用相同证书的app之间可以数据共享,可以满足一些公司app之间的特殊需求

API

优秀代码git上都有,我简单封装了一下,api设计成了大家比较习惯的key value的方式

那么两个app之间如何实现数据共享?

步骤

1.打开keychain sharing
2.将两个(多个)app 的bundle id 添加到keychain groups中(每个app都需要这么做)


xcode会自动生成

3.启动程序……

运行效果

我在程序1中保存一个数据

1

在2中取值,完美!


2

后续

keychain可以保存任意obj,obj需要自己实现NSCoding。

Demo点我

demo中放了两个基本一模一样的程序
大家可以尝试下,修改让bundle id有一点区别就行,注意:证书相同才可以数据共享

相关文章

  • 持久化KeyVaule封装系列---KeyChain

    题外话 我一般把存储方式(app中)分为三种 in memory一般对象持有,对象销毁,数据跟着消失 (肯定有人要...

  • 持久化KeyVaule封装系列---NSCache

    NSCache的好处不用多说了吧,这里有比较好的介绍 老规矩,KV的形式,简单方便容易理解 API 注意 注释已经...

  • 持久化KeyVaule封装系列---FMDB

    FMDB我就不多说了……受唐巧大神启发,传送门我们在用到这个类库的时候,还是不可避免的要接触sql语句能否跳过这步...

  • iOS 数据持久化

    iOS的数据持久化的主要几种方法: NSUserDefaults KeyChain Services Archiv...

  • iOS数据持久化

    数据持久化的几种方式 NSUserDefaults 、plist 、keychain、归档 、沙盒 、数据库 1....

  • iOS持久化方案

    iOS常用的数据持久化方案主要有四种:NSUserDefault、File、Keychain、FMDB。 NSUs...

  • iOS端数据库解决方案分析

    为什么要用数据库 iOS端持久化的方案选择比较多,NSUserDefault, Keychain, File, s...

  • 数据持久化

    iOS中持久化方案有很多,例如:NSUserDefault、KeyChain、File,以及基于数据库的无数子方案...

  • iOS持久化存储方案

    概要 iOS常用的持久化存储方案一般有:NSUserDefault、Keychain,File,数据库等几种方案。...

  • 开发文档笔记 - Keychain Services Progr

    Keychain Service Concepts 一直通过第三方库的封装来读写keychain,对keychai...

网友评论

    本文标题:持久化KeyVaule封装系列---KeyChain

    本文链接:https://www.haomeiwen.com/subject/abptlttx.html