将通配符捆绑标识符转换为单个 ID
Posted
技术标签:
【中文标题】将通配符捆绑标识符转换为单个 ID【英文标题】:Converting wildcard bundle identifier to single ID 【发布时间】:2009-12-16 07:00:09 【问题描述】:我在应用商店中有一个使用通配符捆绑标识符的应用。我想实现应用内购买,这需要非通配符 ID。如何将现有应用的通配符 ID 转换为应用内购买和推送通知的静态 ID?
【问题讨论】:
【参考方案1】:应用程序的包标识符在更新之间必须始终保持不变,但 AppID 实际上可以不同。因此,您需要做的就是创建一个新的 AppID,该 AppID 使用与原始应用相同的包标识符而不是通配符。
使用通配符的应用仍然需要一个普通的捆绑标识符。通配符 AppID 允许您使用任何您喜欢的包标识符,但它仍然需要一个。
http://developer.apple.com/library/ios/#qa/qa1713/_index.html https://developer.apple.com/library/ios/#technotes/tn2259/_index.html
【讨论】:
非常感谢牛,正是我要找的。span> 【参考方案2】:您实际上不需要更改应用程序的 ID,您只需为您已经发布的特定 ID 创建一个新的配置文件,然后使用新的代码签名证书对您的应用程序的升级版本进行签名.
也就是说,如果旧应用程序的捆绑包 ID 是 com.yourcompany.myapp,并使用 com.yourcompany.* 证书进行签名,那么您只需创建一个新的 com.yourcompany.myapp 证书,但您将应用程序的捆绑包标识符保留为和以前一样。
【讨论】:
应用程序和证书是 com.yourcompany.*。它从来没有特定的ID。一直是通配符。所以这意味着我需要将捆绑 ID 更改为特定的东西并获得一个新证书,对吗? 我不知道在你的包 id 中使用星号会起作用......所以如果你真的这样做了,我想你可能需要改变它。 刚刚让自己经历了这个地狱,这实际上就是答案。如果您有通配符分发证书,您可能会遇到问题。但是,您的应用程序仍然有一个捆绑标识符。只需使用您以前的 id 创建一个新的应用程序 id,但对捆绑包 id 进行后缀(在应用程序中使用,没有通配符),然后创建分发证书。 @Jonathan,您是否能够向所有已下载该应用程序的用户收到更新通知? @Andrew,是的,我的应用程序中的实际捆绑包没有改变,所以是的,更新没有任何不同,用户可以正常升级。【参考方案3】:简而言之,您可以将使用通配符捆绑 ID 的已提交应用转换为唯一的应用 ID。但是,如果这样做,您将会遇到一些问题,或者从用户的角度来看会产生影响。
Apple 使用捆绑 ID 来识别应用商店中的应用(因此称为 App ID :-))。
您面临的问题是您的应用已经在 App Store 上架,用户可能会下载。现在,当您使用新的唯一 App ID 更新您的应用程序时,已经下载您的应用程序(使用旧 App ID)的用户将不会获得更新(使用新的唯一 App ID)。
发生这种情况的原因是您的应用程序中现在有一个新的捆绑包 ID。与旧 App ID 没有连接。由于应用程序只能引用一个 App ID。在整个生产版本和应用程序更新过程中保持 App ID 相同通常是个好主意。
如果您为您的应用创建一个唯一 ID(您可以)。下载新更新应用程序的用户一切都会很好,但对于在更新之前下载您的应用程序的用户来说。好吧...您现在已经为这些用户正式创建了一个应用孤儿,这些用户将永远不会获得该更新,因为它与应用 ID 不匹配。
只要有办法解决这个问题。我不确定是否有。我只能建议您始终为您未来的产品发布应用程序创建唯一的 App ID。
为了创建一个允许您使用Apple 的 Push Notification 服务和 Apple 的 In App Purchase 的应用程序强>。您将需要创建一个作为唯一 App ID 的 App ID。 我总是建议为您的应用程序使用唯一 ID。它会在以后的道路上为您节省大量的头痛。
为澄清起见,以下是唯一 ID
com.companyname.appname(唯一应用 ID 的首选命名约定) appname.companyname【讨论】:
有什么办法可以解决这个困境吗?是否可以为使用通配符的应用启用应用内购买,而不会丢失所有已下载该应用的人的更新通知? @Andrew 不,你不能。因为为了能够进行应用内购买,您需要从一个唯一的应用 ID 开始。有点像 catch-22 场景。解决此问题的最佳方法是在分发应用程序时使用唯一的应用程序 ID。以上是关于将通配符捆绑标识符转换为单个 ID的主要内容,如果未能解决你的问题,请参考以下文章