响应本机推送通知,FCM表示令牌仅在iOS上无效(Android工作)

响应本机推送通知,FCM表示令牌仅在iOS上无效(Android工作),ios,firebase,react-native,push-notification,firebase-cloud-messaging,Ios,Firebase,React Native,Push Notification,Firebase Cloud Messaging,我们有一个React本机应用程序,它正在尝试使用Firebase云消息服务发送推送通知。我们正在用失眠来测试这一点 为此,我们使用zo0r提供的名为“react native push notification”的包。 我们已经能够从现实生活中的苹果设备上获得iOS apn代币。然后,我们就能够成功地将POST请求发送到此URL: https://iid.googleapis.com/iid/v1:batchImport 将apns令牌转换为谷歌firebase云消息平台的注册令牌 但是,当

我们有一个React本机应用程序,它正在尝试使用Firebase云消息服务发送推送通知。我们正在用失眠来测试这一点

为此,我们使用zo0r提供的名为“react native push notification”的包。 我们已经能够从现实生活中的苹果设备上获得iOS apn代币。然后,我们就能够成功地将POST请求发送到此URL:

https://iid.googleapis.com/iid/v1:batchImport 
将apns令牌转换为谷歌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
我们将如何补救?我们已经尝试了sandbox=true和sandbox false。

我将假设,由于您使用v1 IID API转换APN令牌,因此您需要使用v1 FCM API发送消息。没有理由继续使用遗留API

POSThttps://fcm.googleapis.com/v1/projects//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令牌。

我假设,由于您使用v1 IID API转换APN令牌,因此您需要使用v1 FCM API发送消息。没有理由继续使用遗留API

POSThttps://fcm.googleapis.com/v1/projects//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令牌。

您使用旧版API而不是v1有什么原因吗?我已经尝试过新的API,但结果相同。我很乐意使用其中一种。你能测试一下我下面答案中的正确版本吗?记住,遗留API和v1使用不同的身份验证令牌,您需要创建一个OAuth令牌。我将尝试您的解决方案。您使用传统API而不是v1有什么原因吗?我已经尝试了更新的API,结果相同。我很乐意使用其中一种。你能测试一下我下面答案中的正确版本吗?记住,遗留API和v1使用不同的身份验证令牌,您需要创建一个OAuth令牌。我会试试你的解决方案,行得通。谢谢,行得通。谢谢