Firebase系列(四) - Notifications

姜志民 2016/09/14 16:53:57
1210






主題

Firebase系列(四) - Notifications

介紹

Firebase提供的Notifications服務可以讓開發人員可以很快速實做出發送訊息到各個iOS與Android行動裝置上,並且還提供主控台網頁,可以在網頁上發送訊息,讓管理人員或是行銷人員可以輕輕鬆鬆發送訊息。


Notifications服務可以指定何時發送訊息,並可以針對特定目標族群、單一裝置或全部使用者發送不同的訊息,進行有效的推廣行銷廣告。

作者

姜志民

版本

1.0

產出日期

2016 / 09/ 13



1 目的

Firebase提供的Notifications服務可以讓開發人員可以很快速實做出發送訊息到各個iOS與Android行動裝置上,並且還提供主控台網頁,可以在網頁上發送訊息,讓管理人員或是行銷人員可以輕輕鬆鬆發送訊息。


Notifications服務可以指定何時發送訊息,並可以針對特定目標族群、單一裝置或全部使用者發送不同的訊息,進行有效的推廣行銷廣告。




2 firebase官網建立專案與設定

https://firebase.google.com/ 官網登入帳號並進入「前往控制台」。


按「CREATE NEW PROJECT」。


輸入Project name與Country/region,後按「CREATE PROJECT」。


按「Add Firebase to your Android app」。


只需要輸入Package name後,按「ADD APP」。


此時瀏覽器會自動下載google-services.json檔案,然後照畫面上的指示,將檔案放在app目錄底下,在按「CONTINUE」。


照畫面上的指示在各個build.grale檔案內加入字串。


在Notifications/app/build.gradle檔案內,加入compile 'com.google.firebase:firebase-core:9.4.0'、compile 'com.google.firebase:firebase-messaging:9.4.0'與apply plugin: 'com.google.gms.google-services'字串。


在Notifications/build.gradle檔案內,加入classpath 'com.google.gms:google-service:3.0.0'字串。


按下圖的icon進行Sync動作。




3 Service程式

新增一個Service元件,並繼承FirebaseMessagingService,這個主要是要接收從Firebase發送的訊息。App在Foreground跟Background時候,其訊息的呈現位置與處理的方式也不同,差異如下:


App state

Notification

Foreground

系統收到訊息後,會自動呼叫onMessageReceived方法。必須在onMessageReceived內,自己實作訊息的呈現。

Background

系統收到訊息後,訊息自動呈現在訊息通知列中。


後續的實際操作中,會說明Foreground與Background的訊息方式。底下的程式碼是實做當App在Foreground時,會以Toast方式與在Android Monitor呈現訊息內容。





4 AndroidManifest.xml

在AndroidManifest.xml加入<intent-filter>內的字串。

<service

android:name=".FirebaseMessaging ">

<intent-filter>

<action android:name="com.google.firebase.MESSAGING_EVENT"/>

</intent-filter>

</service>




5 測試步驟 實體機

※建議使用實體機。


a. 進入firebase控制台,按「Notifications」。


b. 在Message text內輸入欲發送訊息內容,而Delivery date可以設定發送時間 。


c. 可以依照App、Audience、Version、Language條件,針對特定組群進行發送訊息。


d. 成功發送訊息之後,在Android Studio的Android Monitor中,可以看到從Firebase發送出來的訊息。


e. 下圖是App在Foreground時的訊息呈現,這是在之前在onMessageReceived實作以Toast呈現。


f. 下圖是App在Background時的訊息呈現。




姜志民