我已使用后端服务设置 Firebase 管理员 SDK,以便将某些事件通知移动应用。为了提供所需的数据,我将事件作为数据消息发送,并在 Android 应用程序端onMessageReceived
回调中检索它们。除非我尝试异步发送事件,否则它工作正常 - 在这种情况下onMessageReceived
根本不会触发。但是,以同步方式发送它不会造成任何问题,并且通知会在一秒钟内显示在Android设备上。唯一的区别是我用来发送消息的方法:
FirebaseMessaging.getInstance().send(message) // works perfectly
FirebaseMessaging.getInstance().sendAsync(message) // won't work
异步发送 FCM 通知是否需要任何其他设置?
好的,所以基本上我在没有启动实际网络服务的情况下测试 FCM 通知,并且 main 方法在完成对 Firebase 的请求之前结束其执行。从 Web 服务中发送事件或将主线程置于睡眠状态一小段时间可以解决问题,并将通知正确传递到移动设备。
使用以下代码:
FirebaseMessaging.getInstance().sendAsync(message).get()
sendAsync()
返回您可能错过的ApiFuture<String>
。