我正在尝试使用Firebase(它们是两个不同的项目)将推送通知从一台设备发送到另一台设备。 我正在使用POST通过okhttp3库调用API。 如果我尝试使用curl,则可以发送通知,但是通过android我收到以下错误:
{“ multicast_id”:XXXXXXXX,“成功”:0:“失败”:1,“ canonical_ids”:0,“结果”:[{“错误”:“ MismatchSenderId”}]}}
在Android中,是否有与其他通话一起发送的一些元数据? 我如何发送
这是curl调用(效果很好)
curl -H“内容类型: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
答案 0 :(得分:0)
您可以通过以下方式实现此目的:
1)首先获取您需要在其中发送推送通知的设备的令牌
FirebaseInstanceId.getInstance().getToken();
2)然后您需要创建具有两个键``to''和``notification''的JSON对象。您还可以使用存储了有效载荷信息的``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令牌触发推送通知。
答案 1 :(得分:0)
当我在Android中使用“旧版服务器密钥”进行休息呼叫时,此方法有效。 但是使用curl我可以使用“服务器密钥”,并且可以正常工作。 不知道为什么。