12

我似乎无法弄清楚这里的差异。我的应用程序名为Monsters! 所以在 plist 中,Bundle Identifier 是

com.businessname.${PRODUCT_NAME:rfc1034identifier}

据我了解:rfc1034identifier,从 Bundle ID 中删除了禁用字符,在我的情况下,!在末尾Monsters!

但是由于某种原因,当我进入我的项目设置时,Xcode 给了我一个 Bundle Identifier

com.businessname.Monsters-

我意识到我可以进入 plist 并只对我的 Bundle Identifier 进行硬编码,但有人知道在哪里或为什么-要添加它吗?

4

2 回答 2

13

捆绑标识符允许的字符与来自 DNS 的字符相同。因此,您不能放置任何空格、引号等。特别是对于您的情况,我认为最好的办法是使用有效标识符手动编辑捆绑 ID,而不是使用产品名称。

根据苹果文档:

此字符串必须是仅包含字母数字 (AZ,az,0-9)、连字符 (-) 和句点 (.) 字符的统一类型标识符 (UTI)。

任何不符合此标准的内容都将自动替换为破折号,因为只有破折号和句点字符有效。在此之前,如果不遵守此规则,申请会被拒绝。因此,要回答您的问题,这是一种防止您的应用在商店中提交时被拒绝的措施。

于 2014-05-28T20:51:29.093 回答
5

Xcode 正在用非坏字符替换坏字符。他们随意选择-

我将不使用${PRODUCT_NAME:rfc1034identifier},而是定义一个新设置,其值是您的产品名称,不带!并改用它。

转到您的项目设置,在构建设置下应该有一个用户定义的部分。通过单击顶部附近显示“基本全部 | 组合级别 | +”的 + 按钮添加新设置。调用它PRODUCT_NAME_SAFE并给它 value Monsters。然后将您的 Bundle ID 设置为 com.businessname.${PRODUCT_NAME_SAFE}.

根据您的需要,此解决方案可能还有其他变体也可以使用。

于 2014-05-28T20:55:17.103 回答