无法使用通配符标识符为 iOS 应用程序配置文件创建用作应用程序 bundleId 的显式 AppID
Posted
技术标签:
【中文标题】无法使用通配符标识符为 iOS 应用程序配置文件创建用作应用程序 bundleId 的显式 AppID【英文标题】:Unable to create explicit AppID which was used as app bundleId with wildcard identifier Provisioning Profile for iOS app 【发布时间】:2019-10-19 00:00:50 【问题描述】:我们有一个在内部分发的 ios 应用(通过 MDM 或此类工具,从未上传到 App Store)
在使用具有通配符 (*) AppID 的配置文件进行构建和签名时,此 iOS 应用程序被分配了一个 BundleID com.companyName.App.Env
。(我们使用 Jenkins 来完成这项工作)
到目前为止一切正常!
现在,我们需要为这个应用添加 APNS 功能,所以很自然,我必须通过开发者门户创建 explicit AppID。 但是,当我尝试创建显式 AppID 时,尝试注册时出现以下错误 -
提供的实体中的属性具有无效值 标识符为“com.companyName.App.Env”的应用 ID 不可用。请输入不同的字符串。
此 iOS 应用的业务和使用性质使其难以使用更改的应用 ID 进行部署。
问题 -
-
如果在构建应用时将 AppID 分配给应用,但未在 Developer Portal 中创建,我如何使用该 appID 创建配置文件?
如果我在开发者门户中看不到这个 AppId,它在哪里
注册以便我可以参考或删除它?
(假设即使是“内部”分布式应用程序也有其应用程序 ID
安装在设备上时保存到某些 App Store 服务)
真的有任何其他非破坏性选项,我不必为此创建新的 AppID 吗?
非常感谢任何建议或指导。
【问题讨论】:
我很惊讶没有其他人遇到过这个问题? 所以您试图在 developer.apple.com 上创建一个应用标识符,但它说它不可用并且您在 ID 列表中看不到它?您是否尝试过制作另一个 App ID 以确保可以?实际的 ID 中是否有任何潜在的麻烦字符或单词? 我认为如果 App ID 已经存在于某处,它会说 ID 存在而不是说它不可用。 【参考方案1】:应用 ID 是全球唯一的,不仅适用于您的开发者帐户。
如果 appID 已在某处注册,这是您收到的消息。
所以回答你的问题:
如果在构建应用程序时将 AppID 分配给应用程序,但未分配 在 Developer Portal 中创建,如何创建 Provisioning Profile 使用那个 appID?
您只能创建包含属于您帐户的 appid 的配置文件。
如果我在开发者门户中看不到这个 AppId,它是从哪里得到的 注册,以便我可以参考或删除它? (假如说, 即使是“内部”分布式应用程序也将其应用程序 ID 保存到某些应用程序中 安装在设备上时的存储服务)
如果您已注册此 appID,您可以在 Identifiers 下的 developer portal's resource dashboard 中看到它。如果你那里没有它,这意味着其他人已经注册了它。
真的有其他我不会的非破坏性选项吗 必须创建新的 AppID,就为了这个目的?
您需要切换到明确的应用 ID。
从苹果的Technical Q&A我们有:
您应该为所有不启用应用特定功能的应用和应用目标使用通配符应用 ID。
...
对于所有不使用功能的应用来说,使用通配符 App ID 很方便,因为它们可以重复使用相同的配置文件进行代码签名。例如,如果 App1 的目标不启用功能,它们可能会重复使用与图 2 中通配符应用 ID 关联的配置文件来对所有目标进行代码签名。
在本例中,App1 有四个目标,其 Bundle ID 为:
com.myGreatCompany.app1-watch
com.myGreatCompany.app1-macOS
com.myGreatCompany.app1-tvOS
com.myGreatCompany.app1-iOS
由于显式应用 ID 用于单个 Bundle ID,因此它只能用于对一个应用或应用目标进行代码签名。
即使您注册了通配符禁用应用功能的新 appID,您也可以看到此限制:
对比
【讨论】:
以上是关于无法使用通配符标识符为 iOS 应用程序配置文件创建用作应用程序 bundleId 的显式 AppID的主要内容,如果未能解决你的问题,请参考以下文章