【问题标题】:React Native Push Notifications, FCM says token is invalid on iOS only (Android works)React Native Push Notifications,FCM 说令牌仅在 iOS 上无效(Android 有效)
【发布时间】:2021-05-18 18:32:09
【问题描述】:

我们有一个 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。

【问题讨论】:

  • 您使用旧版 API 而不是 v1 是否有原因?
  • 我已经尝试过更新的 api,结果相同。我很乐意使用任何一个。
  • 你能在我下面的答案中测试更正的版本吗?请记住,旧版 API 和 v1 使用不同的身份验证令牌,您需要创建一个 OAuth 令牌。
  • 确实,对于较新的 API,我必须生成一个不记名令牌来进行身份验证。我会试试你的解决方案。

标签: ios firebase react-native push-notification firebase-cloud-messaging


【解决方案1】:

我打算假设,因为您使用 v1 IID API 来转换您需要使用 v1 FCM API 发送消息的 APN 令牌。确实没有理由继续使用旧版 API。

POST https://fcm.googleapis.com/v1/projects/&lt;ProjectId&gt;/messages:send

{
    "validate_only": false,
    "message": {
        "token": "fTiQ5mg266o:APA91bGQN1s9sYJh9U_B6h1vuwAjpQVrPIJFnCWWsiv4PgKTCOCqLiKIdAD6ls48f-dBbnV3tOdc6NvTScXSRJYrXNHz_5QonSFraEau5jKSJPcw8HYeOb2YnutC39TlaIlKBnD3FpSx",
        "notification": {
            "title": "Breaking News",
            "body": "New Story available."
        },
        "android": {
            "priority": "high"
        }
    }
}

REST API Docs

另请注意,v1 不像旧版 API 那样使用服务器密钥,您需要创建一个 OAuth 令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2022-01-08
    • 1970-01-01
    • 2020-07-09
    • 2023-02-08
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多