独立 WatchOS6 应用程序的 APNS 失败

Ric*_*ppz 3 node.js swift ios13 watchos-6

设置一个新的独立的 WatchOS6 应用程序后,现在支持推送通知,让设备向用户请求推送通知并捕获推送令牌。我无法让我的服务器发送推送通知。

在我的 NodeJS 服务器上设置了所有正确的凭据和 P8 后,我尝试将消息推送到设备......这一直是错误:

状态 400 - DeviceTokenNotForTopic- 根据 Apple 的文档,这意味着主题(应用程序的 BundleId)是错误的。但在这种情况下并非如此。

尝试了 2 个不同的 NPM 包(用于消除)

https://www.npmjs.com/package/node-pushnotifications

https://www.npmjs.com/package/apn

两者都为我提供了相同的问题。

有没有人成功地使用 APNs 完成了一个独立的 WatchOS 应用程序?我错过了什么

———

更新

为了测试节点服务,又做了2个测试:

  1. 这次创建了一个新的应用程序,iOS,使用相同的 Bundle Identifier,使用 pushToken 并发送消息服务成功

  2. 创建了一个新应用程序,另一个 watchOS,具有不同的捆绑标识符,这再次被拒绝,但 APNs 是针对同一DeviceTokenNotForTopic问题的。

要测试生产,目前唯一的方法是提交到应用商店进行 App Store 审核。TestFlight 选项目前不适用于 Watch,并且无法.ipa手动安装生产临时产品。一旦它在商店里,我将继续进行进一步的测试。

Ric*_*ppz 6

问题已经解决。

Xcode 有几个问题,如果您依靠 Xcode 在开发人员门户中整理您的证书,那么请不要这样做。

我一直与支持人员保持联系,经过几天的日志来回处理后,我意识到:

  1. Apple 的独立 WatchOS 应用程序文档没有在任何地方说明topic(即捆绑 ID)应该以.watchkitapp结尾
  2. Xcode 不允许您将推送通知功能添加到.watchkitapp,因此这意味着它永远不会在您的开发人员门户中创建 AppId。

我遇到的问题的解决方案是手动转到开发人员门户并添加.watchkitapp AppId 并创建证书,从而允许我在服务器上的 p8 证书允许推送到该特定应用程序。