React Native Push Notifications,FCM 表示令牌仅在 iOS 上无效(Android 有效)
2021-02-15
2587
我们有一个 React Native 应用,它正在尝试使用 Firebase 云消息服务发送推送通知。我们正在使用 Insomnia 对此进行测试。
为此,我们使用了 zo0r 的一个名为“react-native-push-notification”的软件包。 我们已经能够从真实的苹果设备获取 iOS apn 令牌。然后,我们能够成功地向此 URL 发送 POST 请求:
https://iid.googleapis.com/iid/v1:batchImport
以将 apns 令牌转换为 Google Firebase 云消息传递平台的注册令牌。
但是,当我们尝试使用转换后的令牌发送消息时,通过向此端点发送 POST 请求:
https://fcm.googleapis.com/fcm/send
使用此 JSON 负载:
{
"direct_book_ok": true,
"to": "fTiQ5mg266o:APA91bGQN1s9sYJh9U_B6h1vuwAjpQVrPIJFnCWWsiv4PgKTCOCqLiKIdAD6ls48f-dBbnV3tOdc6NvTScXSRJYrXNHz_5QonSFraEau5jKSJPcw8HYeOb2YnutC39TlaIlKBnD3FpSx",
"notification": {
"title": "Breaking News",
"body": "New Story available."
},
"priority": "high"
}
以及这些标头:
Authorization: key=<OUR_SECRET_KEY>
and
Content-Type: application/json
Google API 响应以下错误,表明通知由于“参数无效”而失败。
{
"multicast_id": 3503657462083604439,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidParameters: RpcError:INVALID_ARGUMENT"
}
]
}
我们如何解决这个问题?我们尝试了 sandbox=true 和 sandbox false。
1个回答
我将 假设 由于您使用 v1 IID API 转换 APN 令牌,因此您需要使用 v1 FCM API 发送消息。真的没有理由继续使用旧版 API。
POST https://fcm.googleapis.com/v1/projects/<ProjectId>/messages:send
{
"validate_only": false,
"message": {
"token": "fTiQ5mg266o:APA91bGQN1s9sYJh9U_B6h1vuwAjpQVrPIJFnCWWsiv4PgKTCOCqLiKIdAD6ls48f-dBbnV3tOdc6NvTScXSRJYrXNHz_5QonSFraEau5jKSJPcw8HYeOb2YnutC39TlaIlKBnD3FpSx",
"notification": {
"title": "Breaking News",
"body": "New Story available."
},
"android": {
"priority": "high"
}
}
}
另请注意,v1 不使用与旧版 API 类似的服务器密钥,您需要创建 OAuth 令牌。
Brian Burton
2021-02-18