【问题标题】:Firebase push notifications not showing up while app is in background (Emulator)应用程序处于后台时,Firebase 推送通知未显示(模拟器)
【发布时间】:2016-11-02 14:20:00
【问题描述】:

我从 firebase 控制台向单个 android 设备发送 firebase 推送通知。当应用程序在前台运行时,这很有效。我收到事件并调用 onMessageReceived()。 当应用程序在后台时,我希望看到一个通知条目显示在模拟器的系统通知托盘中。相反,我收到以下错误,并且设备上没有弹出任何通知。我的消息非常简单,只有消息文本和 FCM 令牌。

更新: 这似乎是一个模拟器问题,因为它在真实设备上运行。

com.google.android.gms.persistent D/GCM:在打瞌睡时将应用列入白名单时出错 java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 ott.a(源文件:49473) 在 ott.c(源文件:1366) 在 otn.b(源文件:638) 在 ahge.a(SourceFile:998) 在 ahgf.run(SourceFile:1070) 在 java.lang.Thread.run(Thread.java:818) 原因:java.lang.SecurityException:调用应用不在白名单上 在 android.os.Parcel.readException(Parcel.java:1599) 在 android.os.Parcel.readException(Parcel.java:1552) 在 android.app.usage.IUsageStatsManager$Stub$Proxy.whitelistAppTemporarily(IUsageStatsManager.java:293) 在 android.app.usage.UsageStatsManager.whitelistAppTemporarily(UsageStatsManager.java:266) 在 java.lang.reflect.Method.invoke(本机方法) 在 ott.a(源文件:49473) 在 ott.c(源文件:1366) 在 otn.b(源文件:638) 在 ahge.a(SourceFile:998) 在 ahgf.run(SourceFile:1070) 在 java.lang.Thread.run(Thread.java:818)

【问题讨论】:

    标签: android firebase-notifications


    【解决方案1】:

    应使用 GCM 高优先级消息唤醒应用并访问网络。 高优先级 GCM 消息示例:-

    {
      "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
      "priority" : "high",
       "notification" : {
        "body" : "This week’s edition is now available.",
        "title" : "NewsMagazine.com",
        "icon" : "new",
      },
      "data" : {
        "volume" : "3.21.15",
        "contents" : "http://www.news-magazine.com/world-week/21659772"
      }
    }
    

    看到“priority”键的值为“high”,这将唤醒设备,gcm消息将立即传递,不会崩溃。

    查看这里了解更多信息 https://developer.android.com/training/monitoring-device-state/doze-standby.html#whitelisting-cases

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 我现在写了一个直接回答问题的例子。希望现在不再是低质量的答案
    • 消息具有高优先级。这似乎是一个模拟器问题。在真实设备上它可以工作。
    • 虽然有用,但这不是问题的答案:high 会使其显示 faster,或者以更一致的速度显示,但是没有解释 从不 出现的消息。此外,仅在必要时才这样做,因为会有额外的电池消耗Cloud messaging concepts,“设置消息的优先级”部分。此外,按照您提供的链接,更好的答案是使用 FCM 高优先级,而不是较旧的 GCM 高优先级。或者也许这就是您要推荐的内容,在这种情况下,请忽略此评论。
    猜你喜欢
    • 2019-02-25
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多