3

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

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

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

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

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

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

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

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

———</p>

更新

为了测试节点服务,还进行了 2 个测试:

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

  2. 创建了一个新应用程序,另一个 watchOS,具有不同的 Bundle Identifier,这再次被拒绝,但同一DeviceTokenNotForTopic问题的 APNs。

要测试生产,当前唯一的方法是提交到商店以供 App Store 审查。TestFlight 选项目前不适用于 Watch,并且无法.ipa手动安装生产 ad-hoc。一旦它进入商店,我将继续进行进一步的测试。

4

2 回答 2

6

问题已解决。

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

我一直在与支持部门联系,几天来回记录日志后,它已经意识到:

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

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

于 2019-10-02T22:58:33.233 回答
0

我使用基于令牌的身份验证来发送 apns 通知。

最后发现忘记把apns-topicheader的值改成watch appid了(从com.xxx改成com.xxx.watchkitapp)。

希望这个答案可以帮助其他人。

于 2021-05-04T09:03:53.380 回答