React Native,ITMS-90078:缺少推送通知权利

React Native, ITMS-90078: Missing Push Notification Entitlement

我每次将应用发布到应用商店时都会收到这封邮件:

Dear Developer,

We identified one or more issues with a recent delivery for your app, "{appName}" {version} ({build}). Your delivery was successful, but you may wish to correct the following issues in your next delivery:

ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the 'aps-environment' entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the 'aps-environment' entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor's Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library/ content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.

After you’ve corrected the issues, you can upload a new binary to App Store Connect.

Best regards,

The App Store Team

在签名&能力->能力->推送通知中添加推送通知能力。确保将它添加到发布和调试选项卡。

对于仍然有此问题或可能与 com.apple.developer.associated-domaincom.apple.developer.applesignin 等权利有关的其他问题的人,我有一些技巧可以解决这个问题。

我已经在我搜索过的论坛上提出了一些建议,例如 re-create 配置文件、钥匙串、证书等和 re-enable XCode 中的功能, XCode 中的自动签名和手动签名配置文件,即使我确实将我的 XCode 升级到 13 和我的 macOS,但问题仍然存在。

我存档我的代码后,我在将它上传到 AppStore 之前得到了这个摘要。

实际上我还有其他权利,例如 aps-environmentcom.apple.developer.applesignincom.apple.developer.associated-domain。但摘要不包括这些权利。 Push Notif、Sign in with Apple 和 Universal Links 在开发模式下就像魅力一样工作,但是当我从 TestFlight 安装时,这些功能不再起作用。存档时我没有收到任何错误消息,直到完成将其上传到 AppStore 后才通过电子邮件发送有关缺少推送通知权利的警告。

所以,我是这样做的:

  1. 通过终端检查应用程序存档构建的代码设计。 codesign -d --entitlements :- ${path_to_your_bundle_app}。对我来说,捆绑应用程序在 /Users/${user}/Library/Developer/Xcode/Archives/${date}/${app_name}/Products/Application/${app_name}.app/${app_name}.app 中。 而我得到的是

我刚刚发现捆绑应用不包含任何权利

  1. 然后我将其从我的权利文件手动签名到捆绑应用程序。 codesign --sign - --entitlements ${path_entitlements_file}/${filename}.entitlements --timestamp=none ${path_to_your_bundle_app}

  2. 返回 XCode 并转到 Window->管理器。并再次尝试分发应用程序。

  3. 最后包含了我需要的所有权利的摘要。

我不知道为什么这会发生在我身上。也许我在 XCode 或我的项目代码中的配置有问题。但是,现在它可以在 TestFlight 中使用,尽管在我存档我的应​​用程序后我仍然应该手动签名。 也许任何人都可以帮助我解决这个问题。我的筹码是

  • React Native 0.63.3
  • XCode 12.5 我更新到 XCode 13
  • MacOS 11.6