一、原因
不同的开发者账号主体,苹果登录生成的唯一标识不一样,
导致了应用迁移后,通过Sign in with apple 登录,获取到的Identifier值和原来不一致。
如果应用原先通过这个作为userid的关联映射,没有做好这个转化的话,将会产生用户数据丢失的严重影响。
账号A:Identifier_01 -> userid_01
账号B:Identifier_02 -> userid_02
由于userid_01 !== userid_02,此时应用迁移后玩家用Identifier_02匹配不上原来的userid_01,表现就是数据丢失变成一个新的账号。
二、解决方案
问题已经出现,接下来是解决方案。
首先还是看看有没有官方文档可以查阅。
Transferring Your Apps and Users to Another Team
通过查阅文档,发现幸好苹果爸爸提供了转化条件。这里的transfer_usb就是玩家的,账号B:Identifier_02
转化图示此时,解决方案大致已经明了。
步骤:
1、通过转化工具提前获取玩家的 Identifier_02
2、将Identifier_02刷回原来的玩家数据库,覆盖旧的账号Identifier_01
3、玩家重新登录,Identifier_02能正确匹配到原来的数据
三、转化工具
(1)生成关键的screctKey.p8,
作为账号A、账号B之间的token转化关联参数用
注:账号A(oldKey.p8)、账号B(newKey.p8)都需要生成
点击生成 下载生成好之后,下载下来应该是这样(注意保存和区分,过后要用):
文件内容(2)进行转化
这时候到github上查找类似的工具使用,
根据文档查找关键词 transfer_sub
https://github.com/search?p=4&q=transfer_sub&type=Code
发现这位国外的热心老哥做了一个好用的工具,是用ruby写的。
工程地址:https://github.com/vincent-the/apple_sub_migration
配置好参数:
由于我这里一直遇到openssl报错,所以做了一点小调整,将key的读取改为读取file的形式,。
效果如下图:
修改读取文件 配置key内容修改git工程里的读取值改为你转移前后的参数:
编辑配置文件,apple.rb
配置参数team_id,apple开发者账号的team字段
key_id,生成p8时自带,AuthKey_xxx,"xxx"这部分的值
client_id,即应用的bundle id
参数配置完毕,
运行查看转化后的结果
运行结果参考链接:
网友评论