iOS APP之间数据共享与UUID

最近的一个项目,遇到了应用之间数据共享和设备唯一标识的问题。经过多方面的搜索、验证,得到了一些结论。现在总结如下:

一、应用之间共享数据

1、URL Scheme

在Info.plist中配置URL Types,通过自定义的协议,来传递数据。特性是APP之间通过协议传递数据,会有一个跳转过程。示例支付宝、微信支付等。

2、UIActivityViewController

iOS 6.0以后,苹果推出的分享视图控制器。特性是弹出系统分享控制器,一般用于分享。

3、Shared Keychain

使用Keychain共享数据,需要开启Keychain Sharing服务,并限于同一供应商(即同一个苹果证书)下的应用之间共享数据。

4、App Groups

iOS 8.0以后,苹果推出了App Groups,使用NSUserDefaults、NSFileManager、NSFileCoordination共享数据,限于同一Group下的应用。

5、UIPasteboard

剪贴板,是应用之间共享文本的一种方式。示例在一个APP中,复制一段文本,在另一个APP中粘贴使用。能跨应用分享数据了,但是限于数据类型、数据量大小,升级系统数据丢失。


二、设备唯一标识

1、UDID

唉,这个iOS 5.0以后被苹果禁用了。

2、UUID

UDID被禁用以后,苹果推出的替代品。但是这个值,同一应用、不同时间调用时,生成的值不一样;不同应用,生成的值也不一样。唯一的优点,每次生成的都是唯一值。

3、MAC

唉,这个iOS 7.0以后也被封杀了。

4、IDFA

全名advertisingIdentifier。适用于iOS 6.0以后,在同一台设备上,所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置|隐私|广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值,而且提交苹果审核时,必须明确指出使用了该值。

5、IDFV

全名identifierForVendor。使用于iOS 6.0以后,在同一设备上,同一供应商的APP取到相同的值,如果该供应商下的所有APP都被删除,该值会被重置。

6、OPEN

网上有很多OPENUDID、OPENIDFA。实现方式为获取手机的型号、系统创建时间、系统磁盘大小等一些系统属性组合在一起,使用MD5模拟生成的类似UDID和IDFA的一串字符串。哟,这个貌似不错,可以不同的应用直接能获得同一值。但是,如果同一型号、同一批次出产的手机,那这个值不就一个样了!!


好了,上面介绍了iOS 应用共享、设备唯一符。现在有一需求:实现不同应用之间(跨供应商,即不同开发者账号)共享登录账号密码,并能对用户是否更换设备进行跟踪。这个该怎么实现啊!!!

辗转反侧,夜夜不能寐。想到以下条件:

1、使用UUID生成设备唯一标识(这个应该不会被苹果禁用);

2、使用NSUserDefaults存储UUID(我们不能每次都去获取UUID啊,不然那还有啥意思);

3、使用UIPasteboard实现跨应用共享文本数据(这个也应该不会被苹果禁用);

4、使用OPEN中提到的手机的型号、系统创建时间、系统磁盘大小等(这个也应该不会被苹果禁用);

上面是条件,下面是方法

1、第一次使用,先从UIPasteboard读取,有值,则读取;没值,则从NSUserDefault中读取。NSUserDefault中有值则读取,并保存到UIPasteboard中;没值,则使用UUID生成唯一值。

2、使用UUID生成唯一值后,保存到NSUserDefault中,保存到UIPasteboard中。

3、第二次使用,如果是跨应用读取,也就是说,第一次我是在A应用中生成的,现在我在B应用中读取。这种情况,如果读取有值,那么要把读取的值,保存到B应用的NSUserDefault中。

上面3步貌似能解决大部分情况的问题了。可是还有个问题,比如我恢复出厂设置咋办啊!!!

我唯一能给出的答案,用我们强大的网络!

把保存的UUID值,条件中的第4步中的手机型号、系统创建时间、系统磁盘大小等,都在网络上保存一份。每次获取时,从网络获取UUID,手机型号等、并与本地比较。因为一般用户更换设备后,设备型号都会有所更新,你不要告诉我你升级设备后,用的还是同一型号同一款!

貌似解决了?!!


就上面这些了,我只提供一些思路。目前在我的项目中,也是这样使用的,目前还好,没啥大问题。

欢迎大家提出一些问题,共同探讨、进步!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容