我的应用程序在被批准后,我可以更改Bundle标识符吗?

24

我一段时间前获得了应用程序的批准,并使用了*配置文件,因此我创建了类似以下内容:

com.mydomain.MyApp

但现在我需要添加推送通知功能,我无法这样做是因为我正在使用*配置文件,而它需要拥有自己的应用程序ID和配置文件。

为了实现应用程序更新而不破坏任何东西,我该如何操作?

3个回答

23

应用程序的捆绑标识符在更新时必须始终保持不变,但是AppID实际上可以不同。因此,您只需要创建一个新的AppID,该AppID与原始应用程序使用相同的捆绑标识符而不是通配符。

使用通配符的应用程序仍需要一个普通的捆绑标识符。通配符AppID允许您使用任何想要的捆绑标识符,但仍然需要一个普通的捆绑标识符。

曾经有一篇关于此问题的苹果文章,但现在已不再在线上可用。然而,有一个存档是可以访问的。


链接指向技术问答QA1680,“从通配符应用程序ID更新为显式应用程序ID”,但是苹果网站可能出了问题,或者他们现在有意撤下了那篇文章。 - bovine
这个答案应该被批准。 - Martin
3
http://web.archive.org/web/20111006112505/http://developer.apple.com/library/ios/#qa/qa1680/_index.html - est

11

如果您想发布更新以供下载,您不能更改已发布应用程序的CFBundleIdentifier。当您上传时,App Store将自动拒绝它。

我之前使用泛用型App ID开发了一个应用程序,并需要在应用程序中启用iAds。以下是我的解决方法:

我有一个泛用型App ID:<AlphaNumeric>.*,我的应用程序目前正在使用它,而我的应用程序的CFBundleIdentifiercom.companyname.mygame

创建了一个新的App ID:<AlphaNumeric>.com.companyname.mygame

创建了包含新App ID的新开发和分发配置文件。

下载新的配置文件到Xcode和我的设备上。

然后,我使用新的非通配符分发配置文件编译了应用程序,这意味着在上传时我可以启用iAds(或Push)。由于CFBundleIdentifier没有更改,因此新的编译版本会作为现有应用程序的更新显示。

我可以确认这个过程没有问题。


换句话说,您无法更改应用程序的捆绑标识符,但是您可以使用新的 AppID 和配置文件发布更新。 - Ben Collins
只要新的AppID包含与原始通配符ID相同的字母数字命名空间。因此,如果公司(“BenCollins”)在通配符App ID 1234abcd.*中创建了一个应用程序(“TheApp”),则您需要创建一个新的App ID 1234abcd.com.BenCollins.TheApp并使用它。 - hjd
因此,您基本上需要创建新的预配资料文件并使用它们,而不更改捆绑标识符。没有其他更改。那么... 应用程序何时切换以尊重新的应用程序标识?我的问题是,我想将应用程序内购添加到具有非唯一应用程序标识符的应用程序中。谢谢任何见解! - Dan Rosenstark

1
在名为“Technical Note TN2259”的文档中的常见问题中,即“将应用内购买添加到您的iOS和Mac应用程序”中,有这一段:
问:我的iOS应用程序当前使用通配符App ID签名。如何启用我的App ID支持应用内购买?
答:阅读iOS团队管理指南中的创建和配置App ID部分,了解如何启用您的App ID支持应用内购买。
链接指向此处,其中有一个名为“更新您的应用程序以包括APNS、iCloud、应用内购买或游戏中心需要明确的App ID”的部分。
话虽如此,我还不知道(但很快就会知道)应用程序何时采用新的App ID。是在上传审核之前还是之后?我正在解决这个问题,所以很快就可以补充这个答案。

编辑: 显式的应用程序 ID 仅影响您正在测试的软件部分,与 iTunes Connect 实际上没有任何关系。这意味着,如果您正在测试应用内购买,运行的软件(您的应用)必须具有基于特定应用程序证书的预配配置文件。iTunes Connect 中发生的情况完全无关紧要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接