前言:时间过得真快,转眼就过了一周了。终于把问题给解决了,这里一定要总结一下,告诉大家一个小秘密——苹果挖了一个坑。这个坑到底有多大呢,请往下面看(如果你的解决办法是更换一个BundleID,请略过本文!)。
此图片来自网络
问题描述:Bundle Identifier重复(Bundle Identifier以下简称BID)
Bundle Identifier重复
详细问题描述:准备上架AppStore的时候,创建BID竟然重复了。提示
There were errors in the data supplied. Please correct and re-submit.
An App ID with Identifier 'com.XXXX.XXXX' is not available. Please enter a different string.
这个BID是我们公司内部规范的命名,按道理说是不应该重复的。别的公司肯定不会用这个BID的(苹果是用com.apple.XXXX),这个BID只可能是我们同事在做真机调试的时候Xcode自动生成的。我一般会做一个通用的BID,例如:com.XXXX.*(强烈建议使用此通配BID)。但是如果设备没有包含到这个BID所在的描述文件中的话,而你也要去调试这个设备,那么通用BID也是徒劳的,那么就有两种方式:
1,去开发者官网证书管理中添加设备,包含到描述文件中,
2,在Xcode中自动注册设备,生成证书。
如果赶时间并且这台设备不用于开发,第二种选择无疑是最合适的。
有人说BID重复了直接去开发者账号里面删除了不就行了吗,哪有这么费劲?换个BID也可以呀!我这里讲的是不换BID的解决方法,如果你是想去换BID,那么就不要往下面看了(因为我们这个项目的BID绑定了一些SDK,更换SDK的BID就要二次收费,你以为我不想换个BID吗~~)。
解决方案:
- 你的账号属于开发者账号。
如果你是交了保护费的,那么你是可以直接进到苹果的开发者官网进行管理证书,把重复的BID删除即可。(这是我个人的理解,后面你就知道为什么这样说了) - 你的账号不属于开发者账号。
如果你不交保护费,那么你只能很麻烦的去打苹果的开发者客服官网电话4006701855,然后就是静静的听歌吧!当歌曲变成噔噔噔的正常接通电话声音的时候就有人喊你了。(温馨提示:拨打之前确定有充足的时间和话费~~)!
注意:随着2018年6月5日开发者大会的召开,不能直接拨打苹果开发者客服电话,需要到开发者官网点击右上角支持->联系我们->选择问题后填写手机号,苹果开发者客服会主动给你打电话
苹果开发者客服官方电话
这里可能苹果会对你做一些验证,问你Apple ID和名字,如果你说你不是这个Apple ID的用户的话,苹果可能就不鸟你了,那你就要找一个人来说这个Apple ID是他的名下,要不苹果是不受理你的请求的。(经测试不是本人的也可以,你不能一个人自导自演吧)
苹果会发邮件告诉你确定删除吗,你回复确定删除就OK了。我以为到这里就结束了,然而我去添加之前的那个ID的时候竟然还是同样的提示。
这是什么问题呢?苹果的系统出了Bug了吗,我再次拨打客服电话,无尽的等待之后,我告诉他们这个问题。他们的反馈是系统是不可能出现这个问题的。如果有这个重复BID的提示那说明是真的有这个BID,系统是不可能出这个bug的。
于是我和同事设想了几个问题:
1,我提供的这个BID可以全局查询吗
2,之前重复的BID确实已经删除了吗
3,苹果开发者管理中心的证书系统有问题,删除了之后还是提示未删除问题
4,如果是开发者账号,Xcode自动创建的BID会不会在开发者中心看不到
苹果进行了1,2,3的回答,我对3进行了严重的怀疑,由于我的语气比较强硬,客服说让我在等几分钟(我说我已经等了很久了,这几分钟不算什么),显然他是进行了一些努力,然后我又开始听歌了。之后苹果回复说之前有这样的案例,确实删除成功了。他也无能为力,强烈建议我改BID了。于是我提出了问题4,貌似客服听的不太懂,我重复了几遍之后他还是有点茫然,然后就这样挂断了电话。
无奈之下还是只能自己去找一些方法查询,苹果帮你无法帮你查询其他Apple ID下的BID,我们这边有很多开发者账号,你只能查询你本人的,即使你找同事来帮忙也很麻烦。经过查找资料,发现Xcode中竟然可以看到BID(我使用的Xcode 8.3,新版的Xcode 9是看不到的,不知道苹果为何取消了这个功能。步骤是:Xcode添加开发者账号,点击想要查看的开发者账号,选中Personal Team,点击View Details... 即可查看),我喜出望外,赶紧去尝试了一番。这样最起码可以先排除一下不是开发者账号的Apple ID,然而并没有发现我们查找的那个BID。下面这个是我测试用的,确实会在Apple ID中生成一个证书文件。(要慎用)
勾选Xcode的auto真机调试
又对【4】进行了怀疑,然后逐个查找了开发者账号,发现某个开发者账号下竟然存在我们查找的那个BID,我再次去开发者官网的那个账号中查找,发现还是看不到我要找的那个BID。(到这里发现苹果还是很强大的,员工也很自信)
重大发现——Xcode中确实看到了这个BID
真实存在的BID
我再次在Xcode中打开那个开发者账号,发现那个BID又不在了,很奇怪的问题。然后又去Xcode自动设置证书那里查看这个Team的证书文件和BID,发现下图
勾选Xcode的自动真机调试处查看BID
下面看一张Xcode真机调试的图片
真机调试自动生成的证书和BID
处理:
因为苹果只能在某个账户里定向查询某个BID,所以还是需要打电话问下苹果开发者客服,经过漫长的等待,(等待时间记得找个同事或者你自己扮演那个开发者账号的拥有者,我告诉同事先问是否存在我们查询的这个BID,如果存在就删除掉,So Easy!),苹果问了几个简单的问题之后,发了一个邮件,让你确认删除那个BID,告诉苹果邮件中的案例编号,他就可以帮你删除那个BID了。我说先别挂电话,我看看是否能重新创建这个BID,果然成功了!至此也算圆满成功了,但是心中有几个问题还是没有得到解决。
疑问:
1,不是开发者账号创建了这个BID,删除之后我立马创建这个新的BID,为什么还是不能创建?
2,那个开发者账号里是怎么跑出来这个BID的,这个BID不是唯一标志吗?
3,开发者账号里为什么看不到这个BID?
4,如果个人去注册com.apple.XXX的BID,不是占用了苹果的BID吗?(简书里看过某人用runtime获取到了安装在手机里App的BID)
带着这几个问题想去问下苹果,等待之后,接通了电话,告诉我需要详细描述问题,必须之前的Apple ID本人在场才可以。然后我就只能果断放弃了。
猜想:
开发者账号里有2个Team,一个是公司的Team,一个是个人的Team,如果证书文件是在个人的Team中,是不是就看不到呢?
有知道的可以评论区留言,有兴趣的可以尝试下,有想要占用BID的可以先去占用,万一哪天库克要收购你的BID呢!!!
作者:RiberWang
链接:https://www.jianshu.com/p/0dc99783c3fb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。