独立 WatchOS6 应用程序的 APNS 失败
Failing APNS for Independent WatchOS6 app
设置新的独立 WatchOS6 应用程序(现在支持推送通知)后,让设备请求用户推送通知并捕获推送令牌。我无法让我的服务器发送推送通知。
在我的 NodeJS 服务器上设置了所有正确的凭据和 P8 后,我尝试将消息推送到设备...这一直是错误:
状态 400 - DeviceTokenNotForTopic
- 根据 Apple 的文档,这意味着主题(应用程序的 BundleId)是错误的。但在这种情况下它不是。
尝试了 2 个不同的 NPM 包(用于消除)
https://www.npmjs.com/package/node-pushnotifications
https://www.npmjs.com/package/apn
两者都为我提供了同样的问题。
有没有人成功地使用 APN 完成了独立的 WatchOS 应用程序?我错过了什么
————
更新
为了测试节点服务,还进行了 2 项测试:
创建了一个新应用,iOS 这次使用相同的 Bundle Identifier,使用 pushToken 并发送消息服务 成功
创建了一个新的应用程序,另一个 watchOS,具有不同的 Bundle Identifier,这再次被拒绝,但 APNs 用于相同的 DeviceTokenNotForTopic
问题。
要测试生产,目前唯一的方法是提交到商店以供 App Store 审核。 TestFlight 选项当前不适用于 Watch,并且无法手动安装生产临时 .ipa
。一旦它在商店里,我将继续进行进一步的测试。
问题已解决。
Xcode 有几个问题,如果您依赖 Xcode 在开发人员门户中整理您的证书,请不要这样做。
我一直在与支持人员联系,在与日志来回交流几天后,我了解到:
- Apple 的 Independent WatchOS 应用程序文档没有说明 任何地方
topic
(即捆绑包 ID)应该以 结尾.watchkitapp
- Xcode 不允许您将推送通知功能添加到 .watchkitapp,这意味着它永远不会在您的开发者门户中创建 AppId。
我的解决方案是手动转到开发人员门户并添加 .watchkitapp AppId 并创建证书,从而允许我的 p8 证书服务器允许推送到该特定应用程序。
我使用基于令牌的身份验证来发送 apns 通知。
最后发现忘记把apns-topic
的值改成watch appid.header.(form com.xxx to com.xxx.watchkitapp).
希望这个回答可以帮助到其他人。
设置新的独立 WatchOS6 应用程序(现在支持推送通知)后,让设备请求用户推送通知并捕获推送令牌。我无法让我的服务器发送推送通知。
在我的 NodeJS 服务器上设置了所有正确的凭据和 P8 后,我尝试将消息推送到设备...这一直是错误:
状态 400 - DeviceTokenNotForTopic
- 根据 Apple 的文档,这意味着主题(应用程序的 BundleId)是错误的。但在这种情况下它不是。
尝试了 2 个不同的 NPM 包(用于消除)
https://www.npmjs.com/package/node-pushnotifications
https://www.npmjs.com/package/apn
两者都为我提供了同样的问题。
有没有人成功地使用 APN 完成了独立的 WatchOS 应用程序?我错过了什么
————
更新
为了测试节点服务,还进行了 2 项测试:
创建了一个新应用,iOS 这次使用相同的 Bundle Identifier,使用 pushToken 并发送消息服务 成功
创建了一个新的应用程序,另一个 watchOS,具有不同的 Bundle Identifier,这再次被拒绝,但 APNs 用于相同的
DeviceTokenNotForTopic
问题。
要测试生产,目前唯一的方法是提交到商店以供 App Store 审核。 TestFlight 选项当前不适用于 Watch,并且无法手动安装生产临时 .ipa
。一旦它在商店里,我将继续进行进一步的测试。
问题已解决。
Xcode 有几个问题,如果您依赖 Xcode 在开发人员门户中整理您的证书,请不要这样做。
我一直在与支持人员联系,在与日志来回交流几天后,我了解到:
- Apple 的 Independent WatchOS 应用程序文档没有说明 任何地方
topic
(即捆绑包 ID)应该以 结尾.watchkitapp - Xcode 不允许您将推送通知功能添加到 .watchkitapp,这意味着它永远不会在您的开发者门户中创建 AppId。
我的解决方案是手动转到开发人员门户并添加 .watchkitapp AppId 并创建证书,从而允许我的 p8 证书服务器允许推送到该特定应用程序。
我使用基于令牌的身份验证来发送 apns 通知。
最后发现忘记把apns-topic
的值改成watch appid.header.(form com.xxx to com.xxx.watchkitapp).
希望这个回答可以帮助到其他人。