无法通过 Android 发送 firebase 通知,但可以通过 curl 发送

Can't send firebase notification via Android but it works via curl

我正在尝试使用 Firebase 从一台设备向另一台设备发送推送通知(它们是两个不同的项目)。 我正在使用 POST 通过 okhttp3 库调用 API。 如果我尝试使用 curl 可以发送通知,但是通过 android 我收到以下错误:

{"multicast_id":XXXXXXXX,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

在 Android 中是否有一些元数据随其余调用一起发送? 我怎样才能发送

这是 curl 调用(工作正常)

curl -H "Content-type: application/json" -H "Authorization:key=AXXXXX" -X POST -d '{"data":{"info":"abc"} ,"to":"DEV-TOKEN-XXX"}' https://fcm.googleapis.com/fcm/send

在Android我只是用okhttp3

复制了相同的场景设置头,body ecc

您可以通过以下方式实现:

1)首先获取需要发送Push Notification的设备的Token

FirebaseInstanceId.getInstance().getToken();

2) 然后你需要创建 JSON 对象,它有两个键 'to' 和 'notification'。你也可以使用 'data'。它存储了有效负载信息。

JSONObject jsonObj = new JSONObject();
jsonObj.put("data", profileJson);
jsonObj.put("notification", notificationJson);
jsonObj.put("to", mPushToken);

3) 然后进行 API 发送推送通知的调用。

RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonData.toString());
okhttp3.Request request = new okhttp3.Request.Builder()
        .header("Authorization", "key=" + R.string.firebase_legacy_server_key)
        .url("**https://fcm.googleapis.com/fcm/send**")
        .post(body)
        .build();

这将向给定的 firebase 令牌发送推送通知。

当我在 Android 中使用 "Legacy server key" 进行休息呼叫时,它起作用了。 但是对于 curl 我使用 "Server key" 并且它工作正常。 不知道为什么。