在命令行中构建后缺少推送通知权利

问题描述

首先,我正在通过命令行构建我的应用程序 - 不幸的是,这是必要的,因为我使用 Azure DevOps 进行构建。

由于应用程序有扩展,我创建了两个配置文件(应用程序具有推送通知功能)并通过 plist 文件multi-provisioning-profiles.plist)构建和签署 ipa,如下所示:

xcodebuild -sdk iphoneos -configuration Release -project myapp.xcodeproj -scheme MyApp archive -archivePath myapp.xcarchive CODE_SIGNING_ALLOWED=NO

xcodebuild -sdk iphoneos -configuration $(Configuration) -project myapp.xcodeproj build -exportArchive -archivePath myapp.xcarchive -exportOptionsPlist multi-provisioning-profiles.plist -exportPath /ipa

然后 ipa 成功上传,不久之后我收到了来自 Apple 的关于推送通知权利的错误电子邮件

知道我在这里可能遗漏了什么吗?

为了完整起见,这里还有 multi-provisioning-profiles.plist 文件

<dict>
    <key>provisioningProfiles</key>
    <dict>
        <key>[My app key]</key>
        <string>[UUID of app's prov profile]</string>
        <key>[My extension key]</key>
        <string>[UUID of extension's prov profile]</string>
    </dict>
    <key>signingCertificate</key>
    <string>iOS distribution</string>
    <key>signingStyle</key>
    <string>manual</string>
    <key>method</key>
    <string>app-store</string>
    <key>teamID</key>
    <string><[My team ID]</string>
</dict>
</plist>

解决方法

问题似乎源于未签署存档(CODESIGNINGALLOWED=NO 在这种情况下很糟糕)。使用配置文件对 xarchive 进行签名后,我在上传后不再收到来自 Apple 的电子邮件。

我最初避免签署存档,因为我很难让它与多个配置文件一起工作,但最终找到了以下解决方案:https://stackoverflow.com/a/29605731/2520623

作为参考,这是我的最终存档命令的样子:

String fileNameParts[] = fileName.split("\\.");

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...