gpt4 book ai didi

java - 如何使用 Java GCM API 在 Android 设备上获取失败推送通知的注册 ID

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:05 25 4
gpt4 key购买 nike

我使用 GCM API 在 Java 中实现了以下代码,以在 Android 设备上发送通知。

    Sender sender = new Sender(GCM_API_KEY);
Message.Builder builder = new Message.Builder();
builder.collapseKey(collpaseKey);
builder.timeToLive(TTL_HOURS * 3600);
if (data != null) {
for (PushData messageData : data) {
builder.addData(messageData.getKey(), messageData.getValue());
}
}
if (StreamType.CALL == type) {
for (PushData pushData : message) {
builder.addData(pushData.getKey(), pushData.getValue());
}
}
Message msg = builder.build();
try {
System.out.println(msg.toString());
MulticastResult result = sender.send(msg, pushId, MAX_RETRY);
log.infof("result %s", result.toString());
return true;
}

这里的pushId是List类型,里面包含了所有设备的push id,在该id处,要发送的通知。

问题是,结果不包含失败推送 ID 或任何设备标识,以便我可以识别哪个设备尚未收到通知。注意:- 我不想一一发送通知

响应 - 结果

MulticastResult(multicast_id=7588781423174816193,total=5,success=1,failure=4,canonical_ids=0,results: [[ errorCode=NotRegistered ], [ messageId=0:1505731620878025%f02bfbe47eeff668 ], [ errorCode=NotRegistered ], [ errorCode=NotRegistered ], [ errorCode=NotRegistered ]]

其中不包含任何注册 ID 或其他内容,以便我可以识别数据库中的设备。

请建议,提前致谢。

最佳答案

响应间接告诉您推送 ID 失败。

在您的示例中:

[[ errorCode=NotRegistered ], 
[ messageId=0:1505731620878025%f02bfbe47eeff668 ],
[ errorCode=NotRegistered ],
[ errorCode=NotRegistered ],
[ errorCode=NotRegistered ]]

可以看到第1、3、4、5个推送ID失败。由于您应该知道在请求中发送推送 ID 的顺序,因此您应该知道哪些推送 ID 失败。

这是 documentation 中的相关示例:

Here are JSON results for 6 recipients (IDs 4, 8, 15, 16, 23, and 42 respectively) with 3 messages successfully processed, 1 canonical registration token returned, and 3 errors:

{ "multicast_id": 216, "success": 3, "failure": 3, "canonical_ids": 1, "results": [
{ "message_id": "1:0408" },
{ "error": "Unavailable" },
{ "error": "InvalidRegistration" },
{ "message_id": "1:1516" },
{ "message_id": "1:2342", "registration_id": "32" },
{ "error": "NotRegistered"} ] }

In this example:

  • First message: success, not required.
  • Second message: should be resent (to registration token 8).
  • Third message: had an unrecoverable error (maybe the value got corrupted in the database).
  • Fourth message: success, nothing required.
  • Fifth message: success, but the registration token should be updated in the server database (from 23 to 32).
  • Sixth message: registration token (42) should be removed from the server database because the application was uninstalled from the device.

关于java - 如何使用 Java GCM API 在 Android 设备上获取失败推送通知的注册 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46277439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com