我使用以下代码将FCM通知从服务器发送到设备:
String fcmServerKey = externalConfig.getFcmServerKey();
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(HTTPS_FCM_GOOGLEAPIS_COM_FCM_SEND);
httpPost.setEntity(new StringEntity(message, ContentType.create("application/json")));
httpPost.setHeader("Authorization", "key=" + fcmServerKey);
CloseableHttpResponse closeableHttpResponse= httpclient.execute(httpPost);
在上面的代码中,当我得到响应对象closeableHttpResponse时,如何检测用于发送此请求的fcm令牌是否已过期或未注册?
从firebase应用程序仪表板尝试使用其fcm令牌向设备发送通知时,从设备中删除应用程序后,我看到在firebase仪表板上失败,将光标悬停在Failed上我看到未注册的注册令牌.
如何从api响应对象closeableHttpResponse中检测未注册的注册令牌的上述错误情况?
最佳答案 使用 Server Reference API获取有关设备注册令牌的相关信息.如果响应为空,则表示令牌已过期或未注册.
示例GET请求
https://iid.googleapis.com/iid/info/nKctODamlM4:...clJONHoA?details=true
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
示例结果
HTTP 200 OK
{
"application":"com.iid.example",
"authorizedEntity":"123456782354",
"platform":"Android",
"attestStatus":"ROOTED",
"appSigner":"1a2bc3d4e5",
"connectionType":"WIFI",
"connectDate":"2015-05-12
"rel":{
"topics":{
"topicname1":{"addDate":"2015-07-30"},
"topicname2":{"addDate":"2015-07-30"},
"topicname3":{"addDate":"2015-07-30"},
"topicname4":{"addDate":"2015-07-30"}
}
}
}