2016-06-30 85 views
1

我從Firebase控制檯向單獨的​​Android設備發送Firebase推送通知。這在應用程序在前臺運行時運行良好。我收到該事件並調用onMessageReceived()。 當應用程序處於後臺時,我期望看到通知條目顯示在仿真器的系統通知托盤中。相反,我得到下面的錯誤,並沒有通知在設備上彈出。我的消息非常簡單,只是消息文本和FCM令牌。當應用程序處於後臺時,Firebase推送通知不會顯示(模擬器)

更新: 它似乎是一個模擬器問題,因爲它在一個真實的設備上工作。

com.google.android.gms.persistent d/GCM:在java.lang.reflect.Method.invoke(本機方法) 在瞌睡 醒來java.lang.reflect.InvocationTargetException 錯誤的白名單的應用在ott.a(的SourceFile:49473) 在ott.c(的SourceFile:1366) 在otn.b(的SourceFile:638) 在ahge.a(的SourceFile:998) 在ahgf.run(的SourceFile:1070) 在java.lang.Thread.run(Thread.java:818) 引起:ja va.lang.SecurityException:調用應用程序不在白名單 at android.os.Parcel.readException(Parcel.java:1599) at android.os.Parcel.readException(Parcel.java:1552) at android.app。 usage.IUsageStatsManager $存根$ Proxy.whitelistAppTemporarily(IUsageStatsManager.java:293) 在android.app.usage.UsageStatsManager.whitelistAppTemporarily(UsageStatsManager.java:266) 在java.lang.reflect.Method.invoke(本機方法) (SourceFile:49473) at ott.c(SourceFile:1366) at otn.b(SourceFile:638) at ahge.a(SourceFile:998) 在ahgf.run(的SourceFile:1070) 在java.lang.Thread.run(Thread.java:818)

回答

2

應該使用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" 
    } 
} 

參見「優先」鍵具有值「高」,這將喚醒設備和GCM消息將被立即發送,它不會崩潰。

看看這個以獲取更多信息 https://developer.android.com/training/monitoring-device-state/doze-standby.html#whitelisting-cases

+1

雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/12864053) –

+0

我現在寫了一個直接回答問題的例子。現在希望它不再是低質量的答案 –

+0

這些消息具有高優先級。這似乎是一個模擬器問題。在一個真正的設備上它正在工作。 –

相關問題