【问题标题】:Firebase notification sometimes skip onMessageReceived methodFirebase 通知有时会跳过 onMessageReceived 方法
【发布时间】:2016-05-23 15:33:49
【问题描述】:

当我使用 Facebook 的 Parse 时,我可以在开发过程中测试通知(即 Play 商店中没有应用程序)。但现在我正试图在我的应用程序中实现 Firebase。我的应用程序尚未发布。我已经完成了 android 端的实现,并正在尝试从 Firebase 控制台向我的应用发送通知。但我的设备从未收到通知。这是为什么?我的目标是“所有用户”,因为 firebase 没有版本或我的任何主题。

好的

所以我又做了一些故障排除,结果如下:我的设备正在接收通知,但它却很奇怪:

  1. 当应用打开并且用户与之交互时,通知会通过调用onMessageReceived 的预期路径。

  2. 当应用关闭时(也不是在最近的应用中),通知会跳过调用onMessageReceived 并在状态栏中显示通知。

但是当 onMessageReceived 被跳过时,这是来自 FireBase 的日志

05-24 07:15:52.842  D/TimaKeyStoreProvider: TimaSignature is unavailable
05-24 07:15:52.842  D/ActivityThread: Added TimaKeyStore provider
05-24 07:15:53.102  D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
05-24 07:15:53.132  D/FirebaseApp: Initialized class com.google.firebase.iid.FirebaseInstanceId.
05-24 07:15:53.142  D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
05-24 07:15:53.222  I/FA: App measurement is starting up, version: 9080
05-24 07:15:53.222  I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
05-24 07:15:53.352  D/FirebaseApp: Initialized class com.google.android.gms.measurement.AppMeasurement.
05-24 07:15:53.352  I/FirebaseInitProvider: FirebaseApp initialization successful
05-24 07:15:53.372  D/AlgorithmsProvider: onCreate
05-24 07:15:53.452  I/FA: Tag Manager is not found and thus will not be used

【问题讨论】:

  • 你可以像解析一样随时测试。 Parse 使用与 Firebase 相同的东西
  • 我一直在尝试,它终于开始工作了。但我看到了一个问题。当我的应用程序打开时,通知会发送到FirebaseMessagingService#onMessageReceived(我正在记录它)。但是如果我的应用没有打开,那么我会在设备的状态栏中看到一条通知,但 onMessageReceived 永远不会接到电话。
  • 这听起来确实像通知的预期行为。如果您想更好地控制所发生的事情,您将需要使用 Firebase Cloud Messaging(GCM 的更名和更新版本)。
  • @KatedralPillon 如果您想更好地控制发生的事情,请不要在您的有效负载中放置notification 标签并使用数据标签。使用数据标签将始终调用您的 onMessageReceived
  • @FrankvanPuffelen 我正在从 GCM 迁移。我正在尝试利用从控制台发送通知,而不是从我的服务器发送通知。 @tyczj,这种通知与数据标签的区别听起来很有希望,但我不相信我正在使用通知标签。我会在控制台的哪个位置进行区分?据我所知,我正在使用Advanced Options 下的数据标签

标签: android firebase google-cloud-messaging android-notifications firebase-cloud-messaging


【解决方案1】:

对于显示消息(带有通知标签的消息),这是onMessageReceived 仅在应用程序处于前台时调用的预期行为。

如果你想使用数据消息(没有通知标签的消息),你不能通过控制台来做(至少在这个时候)。您必须手动创建对 FCM 服务器的发布请求。您可以从这个问题的答案How to handle notification when app in background in Firebase 中看到该发布请求示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多