Kotlin 開發第 16 天 PushMessaging (Firebase + BroadcastManager)

這次通過 Firebase 對設備進行 Push Notification

  • 當設備收到 Push Notification 的時候,將內容通過 Alert 顯示出來。

Components

  • BroadcastManager
  • LocalBroadcastManager
  • BroadcastReceiver

Firebase

這是一家被 Google 收購的公司,提供多種 Serverless 的服務,這次打算通過 Firebase 來 push message 到設備上。

Firebase 已經被整合進 Android Studio 當中了,所以可以直接通過 Tools -> Firebase 來進行設定。

Firebase -> Cloud Messaging -> Set up Firebase Cloud Messaging

通過 Connect to Firebase 建立一個應用,並取得設定檔 google-services.json

通過 Add FCM to your app 會加載需要的 Plugin,當然也可以手動到 build.gradle 中引入


FirebaseMessagingService

我們通過建立一個繼承於 FirebaseService 的 service 並且 override onMessageReceived()

在 AndroidManifest.xml 中加入這個 Service

Firebase Notification

在 Firebase 的後台上發送消息。

推送後在 Android Studio 的 Run 中可以看到我們的 log

當然也可以通過昨天提到的 NotificationManager 來顯示推送資訊。


BroadcastManager

如果我們想要在收到 Push Notification 之後,在 Activity 上顯示 Alert message ,可以通過 LocalBoradcastManager

在 MessageService 中加入一個方法,用來通過 Intent 進行廣播。

其中 Intent 會指定 action 為 「DonMessage」之後 BroadcastReceiver 可以通過這個 action 來篩選出這條廣播。

然後我們在 MainActivity 定義一個 BroadcastReceiver

MainAcitvity 在 onStart() 的時候註冊廣播監聽,通過 IntentFilter 來篩選廣播

MainActivity 在 onStop() 的時候取消註冊廣播監聽

google-Services.json

這次開發過程中一開始不是很順利,收不到 Firebase 的 Push Messaging。

後來發現是 IDE 生成的 google-services.json 有錯,替換成 Firebase 網站上的 google-services.json 以後就沒問題了。


筆記

  • 問題:Android 似乎不像 iOS 一定要通過官方的 Server 來對設備進行 Push Notification
    之後可以在寫後端的時候進一步了解。

參考

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *