我目前正在开发推送通知API,该API可同时处理多个应用,处理通知并缩短未来应用的编程时间。它已经部分正常工作,因为我能够在Android设备上注册和接收通知。
最终,我们的某个应用会向注册用户发送广播通知。但是一些令牌可能已过期,这将导致GCM失败。我已经测试了,似乎通过单个http调用向GCM发送一系列令牌工作得非常好,因为具有有效令牌的设备收到了通知。
我无法找到搜索GCM文档是一种在发生故障时获取更多详细信息的方法。例如,当我向两个用户发送通知时,一个用户使用有效令牌,另一个用无效令牌,我得到了这个结果:
{
"multicast_id":7625209716676388798,
"success":1,
"failure":1,
"canonical_ids":0,
"results":[
{"error":"InvalidRegistration"},
{"message_id":"0:1466511379030431%c4718df8f9fd7ecd"}
]
}
我们可以看到其中一条消息未能发送,但我正在寻找的是获取更多详细信息的方法,理想情况下是导致失败的令牌,因此我可以将其从数据库中删除。
有什么办法可以实现吗?使用message_id可能吗?或者是否有任何解决方案让我找到存储在我的数据库中的无效令牌,以便我可以清除它们?我可能在文档中遗漏了一些内容,即使链接到它也很有用。
答案 0 :(得分:1)
根据此documentation,GCM服务器将使用您尝试发送推送通知的令牌的一些信息来响应您的服务器。
根据此链接,如果应用服务器无法完成其部分注册握手,则客户端应用应重试向服务器发送注册令牌或删除注册令牌。可以使用ÌnstanceID.deleteToken()
来完成从GCM服务器擦除旧令牌。
检查以下链接: