苹果App转让(A账号转让给B账号)要点:
1,登录A账号,进入 我的App,选择要转让的App;
2,进入App Store->App 信息->额外信息->转让App,跳转到XXX-转让App页面;
3,检查是否符合转让条件,确保TestFlight Beta 版本已经设置为过期,否则不可转让;
4,所有转让的条件都符合后,选择"继续",进入接收者信息填写页面,填写接收者团队代理人Apple ID和团队ID;
Apple ID:B账号
Team ID: B账号对应的team id (Team ID可以在开发者中心Membership中查看到)
5,勾选“本人已阅读并同意上文显示的条款”,点击 “请求转让”
转出方操作到此结束,此时进入到这个被转出App信息页面,可以看到提示“请查看详细信息或取消此转让”
6,登录B账号, 登录后,可以看到提示“App转让请求正在等待接受”,点击“协议、税务和银行业务”,进入相关页面;
7,Transfer Agreements->Contracts In Process 中会列出等待接受转让的App,点击“Review”,填写相关信息;
8,填写完毕,勾选“本人已阅读并同意上文显示的条款”,点击“Accept",然后点选7中的"Done";
转入方的接收操作到此结束。
可以使用新的账号发行App,建立TestFlight内测版本:
** 不需要在新的账户(member center)下手动创建distribution provisioning profile,但是需要创建push certificates (后面解释)
9,创建一个版本或平台,并使用Xcode提交相应的版本;
10,点击进入TestFlight,有黄色箭头,提示此App缺少出口合规证明,点开后,有选项,选择择否,然后可以开始内测;
11,从App Store下载TestFlight,输入测试人员邮箱接收到的邮件中的关键信息(Beta外部测试版需要提交审核,内测版本不需要),然后可以下载测试版本进行测试;
已知问题:
1, 将来在App Store中显示的App的所有人信息,只有在这个账号第一次在App Store Connect中填写信息时会被问到,以后则不可更改;
2,安装B账号发行的新版App后,虽然会将原来的App覆盖掉,但是,原来A账号发行的App保存在Keychain中的信息新的App是读取不到的。这一点也可以由使用B账号提交审核版本到App Store时,提交完毕时弹出的warning中了解到:Potential Loss of Keychain Access —— This will result in a loss of keychain access. 账户ID+BundleID唯一确定一个keychain。
3,安装使用新账号发行的App后的推送情况:
a) 推送服务器端使用旧证书,新App在不重新登录的情况下,能够收到推送(因为旧的App没有执行logout,push token,device id都没有变化,可以正常接收推送)
b) 推送服务器端使用旧证书,新App重新登录后,不能收到推送(特意查看了数据库,发现登录新版App后push表中从apple获取的push token保持不变,但是App唯一的device id换成了新的,由于此时没有有效的push证书,因此设备收不到推送)
c) 推送服务器端替换新的证书,新安装的App能收到推送
上面加**的内容,一开始给我造成了困惑。
1,push certificates,push证书不用说,肯定是需要重新在新的账号里创建,并替换到push服务器上的;
2,让我困惑的是distribution provisioning profile。开始,我没有给转让过来的app重新在新的账户(member center)中手动创建profile(因为打包时没错,我就忘了这个事了)。后来查看member center的distribution profiles时,发现怎么没有呢?但是发行的过程和新版下载安装使用的过程也没毛病啊?然后我对比了一下我在member center上手动创建的新的profile和Xcode自动创建的profile,发现基本内容都一致,有个区别就是profile文件里会标示出文件来源:
// xcode创建的profile(General中填入Bundle ID,Signing中选择Team后,Xcode自动创建profile)
IsXcodeManaged
但是对应的member center上手动生成并下载来安装的profile里,这个key对应的值是false。
另外,这两个profile的UUID不同,每次xcode创建一个profile,产生的文件的UUID都是唯一的。
从member center上下载到的profile,拷贝到另外的机器上,安装后,就可以用来打包,不知道xcode自动生成的这种是否也能如此操作。
但是,值得注意的是,xcode自动生成的profile,应该只是本地的,所以member center上不可见。
起初我以为这种xcode自动创建的profile会不包含push,但是在xcode自动创建新的profile后,在Singing->Provisioning Profile后面可以查看这个profile的info,可以看到Capabilities中包含push,而且使用上也确实没有遇到push相关的问题。
因此,Xcode Version 9.4.1 (9F2000) (从8.x以上开始)已经可以自动管理profile了,是不是以后都可以省去在member center手动创建distribution profile了呢?
如何找到Xcode自动创建的profile呢?
~/Library/MobileDevice/Provisioning\ Profiles/
但是里面有很多啊,UUID开为文件名,一个个找肯定不现实~,发现了一个很赞的方法,以前都不知道唉
打开Xcode,点General->Signing->Provisioning profile Xcode managed profile后面的info,显示出来当前profile的内容,然后,第一行左上角profile文件的图标,直接拖到控制台,就可以看到这个文件的path了~~~~~