我有一个启用了云消息传递的 Firebase 项目。我正在使用带有服务帐户的 nodejs SDK 进行调用admin.initializeApp()
,到目前为止,我能够访问桌面 Chrome、android Chrome 和 android 示例应用程序,如firebase/quickstart-android所示。
但是,我无法从 nodejs SDK 访问 react-native 构建的 iOS 应用程序(在 testflight 上运行)。它已在 Firebase 控制台中注册 iOS 应用程序将其通知/注册令牌发送到我的 nodejs 后端,但是当我尝试与所述令牌交互时,我不断收到
{
"code": "messaging/registration-token-not-registered",
"message": "Requested entity was not found."
}
iOS 应用确实会收到基于 Firebase Console 构建的消息,所以我想这意味着它的配置很好。
我想到的唯一解释是我应该在我的节点 sdk 中使用 APNS,但文档说只有在手动构建 HTTP v1 请求时才需要,并且 Node SDK 应该在内部处理身份验证。
如果我使用桌面、PWA、Android 和 iOS 令牌手动构建 HTTP 请求
curl -X POST \
https://fcm.googleapis.com/fcm/send \
-H 'Authorization: key=AAAAxxxxfc:ASDFG' \
-H 'Content-Type: application/json' \
-d '{
"registration_ids": [
"crC4-mcUgl0:APA91b...", //<Chrome Desktop Token>"
"dxye8zL0Ke4:APA91b...", //<Android Token>",
"cgEuQzw7tzk:APA91b...", //<PWA Token>",
"eIzMUZYYzEM:APA91b..." //<iOS Token>
],
"notification": {
"title": "Testing notification",
"body": "Hey, does this message work?"
}
}'
我得到三个成功结果和一个失败的 iOS 说“未注册”。
- 那么...是因为我在请求中缺少 APNS 证书吗?
- 是因为 iOS 应用程序在 testflight 上运行吗?
- iOS 应用程序应该执行额外的请求还是在其代码中提供额外的权限?
- 服务帐户是否应该对 iOS 应用程序具有特殊权限?