最近完成了App从个人开发者账号迁移到公司开发都账号上来,并实现了App的版本升级。在这个过程中,为了不影响用户的使用,我到处查找资料,技术群咨询,却发现几乎没有人把迁移中的疑惑给说个清楚明白。在此我总结一下。
App的迁移
总的来说App从一个账号迁移到另一个账号一般有两种方法可用:
1.把App从旧的Apple ID上下架,用新的Apple ID上重新上架。 这样老用户就必须要删除旧App,下载新App,一般都不采纳。
2.在旧Apple ID上把App转让给新的Apple ID上来。具体参考文章
这样就可以不影响老用户的使用。但是这样转让过来的Apple ID,除了包名Bundle ID是跟着转让过来而存在,其他的开发证书,推送证书,上架证书等都是空的,因此我们开发者就必须要重置所有配置。那这样的话我们如何考虑旧版的兼容性了?即老用户不升级,老用户还是从旧Apple ID上下载的App,新用户又是在新的Apple ID上下载的最新版的App,如何做兼容(请看下面的兼容性)。
转让不符合条件
在App转让中,大部分条件一般都可以满足,最常见的应该就是 TestFlight Beta版测试 不符合条件如图
其实这个的意思是说在App项目中有一个功能是TestFlight,这项中存在着构建版本号信息处在活跃状态,我们必须要清空或者说关闭了这个状态才能转让。如图
可以看到相应的版本号要多久之后才能过期,我们只要把这些版本号都设置成过期就可以了
然后再去转让就可以正常地进行了。
那么这个TestFlight是怎么回事了?
其实我们每次从Xcode打包上传App Store时就会创建一个构建版本,一般情况大家都在上传成功后直接选择提交审核就完了,没有去关心这个上传的包是不是一直都可用。而上传的包有效可用的期间为90天,这90天都属于TestFlight Beta测试期。在这期间,配置的测试员和群组就可以对其进行测试,为了让测试正常进行,就不能更改Apple ID,就不能进行转让。
兼容性
当App成功转让到新的Apple ID上时,我们发现新的Apple ID的开发者中心除了Bundle ID是迁移过来了,其他开发证书,发布证书,推送证书和描述文件,测试手机都是空的,因此在新的Apple ID上升级版本就需要把证书、描述文件等重置一下了。
如果我们要兼容旧Apple ID上的老用户他们不更新,而新的Apple ID上又会有新用户,那我们的推送功能能实现新老用户的同时使用吗?还有人说老用户版本升级还需要删除旧包才能安装新包,这个需要吗?
为此我还专门打了苹果开发者电话进行询问。然后上架后还进行了升级测试和推送测试,结果如下:
1.旧Apple ID上下载的应用,在转让后已经更新成新的Apple ID了,可以实现完美升级
2.我用旧的配置的推送证书进行推送测试,发现不管是旧版本,还是新版本都可以成功收到推送
3. 同理新重置的推送证书也可以跟新旧版本进行推送
总结置问题
苹果把App转让迁移处理得很好,不需要我们去担心Apple ID的变动和证书的重置问题。所以迁移App采用转让迁移的方式是最好。
希望对你有用!