背景
由于公司主体改变,跟进法务要求,需要将APP下面的主体改变成新主体。主体改变有两种途径:
第一种方案对APP来说是没有影响的,如果公司主体更换,最好是选择第一种方式。但是由于我们主体更换后,法人已经更变,导致无法提供相关信息给苹果开发者账号审核这边进行审核。所以只能用第二种方案,APP转让的方案了。2019年10月份,我们开始了APP的转让,但是当时由于我们使用了iCloud
功能,导致我们无法迁移。
就这样,等待了2年后,苹果终于放开iCloud
限制了,使用了iCloud
的也可以迁移。官方文档
问题
APP转让时,App Store的评分、评论是可以选择保留与不保留的。另外APP转让,不会影响已经上架在App Store的应用(包括推送、通用链等,都不影响)。具体的迁移流程就不多讲了,自己操作都有提示,很容易。下面讲一下迁移后和迁移前需要处理的问题。
一、keyChain
如果APP中使用到了KeyChain功能,新版本将不能访问老版本的KeyChain数据。原因如下:
KeyChain中存储的数据是跟Team ID相关的,访问数据是通过TeamID+BundleID 来访问的,由于我们将APP 从 A开发者账号 转让到 B开发者账号,这样Team ID就发生了变化,所以无法读取保存在 A开发者账号下的 KeyChain 数据了。我们很多应用应该都用KeyChain来做DeviceID唯一,或者存储登录状态、用户密码等,迁移后这些数据都将获取不到,所以需要注意这个。并且需要提前做好准备。
我们可以用以下方法:
在迁移前,我们可以将 KeyChain中存的数据,同时存储到本地缓存(沙盒SandBox)中,在 APP 启动时,优先从 Keychain 中读取,如果 Keychain 中取不到,就从本地缓存中取(然后再把本地缓存的同步到 Keychain 中,因为即使 APP 转让了,用户更新版本覆盖安装后 Sandbox 中的数据是不会变的),如果两处都取不到,那就看业务是如何生成数据,重新存储到 KeyChain中。