我正在将 Firebase Cloud Messaging 与 Java SDK (com.google.firebase:firebase-admin v 5.9.0) 结合使用。
处理 Java 代码中的错误的唯一方法是捕获 ExecutionException:
Message message = buildMessage(token,payload);
try {
String response = FirebaseMessaging.getInstance().sendAsync(message).get();
} catch (ExecutionException e) {
LOGGER.error("ExecutionException Error pushing notif : ", e);
}
// Response is a message ID string.
LOGGER.info("Successfully sent message: " + response);
如果我想检测已删除的 token ,我必须读取 ExecutionException(FireBaseMessagingException)中包装的异常,并测试该消息是否为“未找到请求的实体”:
if(e.getCause().getMessage().equals("Requested entity was not found.") {
// token is deleted
}
如果我想检测网络故障,我必须读取 ExecutionException(FireBaseMessagingException)中包装的异常,并测试该消息是否为“调用 FCM 后端服务时出错”:
if(e.getCause().getMessage().equals("Error while calling FCM backend service") {
// network problem, I have to retry
}
要采取的操作取决于此检测,这是非常脆弱的。是否可以实现更准确的错误判断?
最佳答案
FirebaseMessagingException
有错误代码:https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/messaging/FirebaseMessagingException.html#getErrorCode()
可能的错误代码定义如下:https://firebase.google.com/docs/cloud-messaging/admin/errors
关于firebase - 使用 Java SDK : how to handle correctly and differentiate failures 进行 FCM 消息传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925954/