Android firebase notification message type
這篇講述自己在開發時遇到的問題,使用方法網路上很多,這邊就不再贅述。
App在前景情況下,顯示內容正常,大小 icon 正常顯示,如下圖:
這是傳送data的消息格式如下:
修改後台傳輸格式,這樣就解決問題了,使用data數據傳輸,可以實現更多自定義的設定。
官方文件:
https://firebase.google.com/docs/cloud-messaging/android/receive
參考連結:
https://stackoverflow.com/questions/37947541/what-is-the-difference-between-firebase-push-notifications-and-fcm-messages
https://stackoverflow.com/questions/39046270/google-fcm-getintent-not-returning-expected-data-when-app-is-in-background-state
直接進入問題點
問題描述:
FirebaseMessagingService的onMessageReceived裡面收到推播時,設定大圖示彩色 icon ,還有一個顯示小 icon ,需求是 icon 設定為大圖示彩色 icon 。
情況有兩種,一種是App在前景,一種是App在背景或者被殺掉
App在背景或者被殺掉,只有顯示小 icon 如下圖:
發現問題:
需求:
通知icon為彩色大圖icon
解決問題:
原來Firebase API推播傳送訊息有兩種類型的消息,他們稱之為:
- 通知(Notification)
- 數據(Data)
- Notification - 僅當您的應用程序處於後台/已殺死時才會直接發送到Android的通知托盤的消息,或者onMessageReceived()如果您的應用位於前台,則會將消息發送到方法。
- Data - 無論您的應用程序是foreground還是background還是已殺死,這些消息都將始終傳遞給onMessageReceived()方法。
這是傳送notification的消息格式如下:
{
"message":{
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
這是傳送data的消息格式如下:
{
"message":{
"data":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
修改後台傳輸格式,這樣就解決問題了,使用data數據傳輸,可以實現更多自定義的設定。
官方文件:
https://firebase.google.com/docs/cloud-messaging/android/receive
參考連結:
https://stackoverflow.com/questions/37947541/what-is-the-difference-between-firebase-push-notifications-and-fcm-messages
https://stackoverflow.com/questions/39046270/google-fcm-getintent-not-returning-expected-data-when-app-is-in-background-state
留言
張貼留言