iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
Mobile Development

Flutter - 複製貼上到開發套件之旅系列 第 17

【第十七天 - Flutter Cloud Messaging(上)】

  • 分享至 

  • xImage
  •  

前言

今日的程式碼 => GITHUB

Yes

這次要來介紹 Flutter 的 Cloud Messaging 推播功能,因為手上剛好沒有 IOS 的 developer account,因此這篇主要介紹 Android 的 Cloud Messaging 部分。

今日的內容

  • 會有兩個 js 檔案,一個 JS 是執行 boardcast 發送給全部的手機 device,第二個是執行訂閱者方式,只傳送給有訂閱這個 topic 的人,Topic 要在 JS 手動改(預設為 channel1)。
  • 會將使用者已定訂閱的頻道寫入 fireStore。
  • 處理 ternimal 開啟(當 app 完全被 kill 掉後接收到通知)、background 開啟(app 縮小時接收到通知)、foreground 開啟(正在使用 app 收到通知),這三種情況。
  • 傳送 data 到通知裡面,當我點選通知後,那道 data 裡面的資料,進而跳到我想要的頁面。
  • 注意:這篇文章、範例,並沒有去做 device_token 的刪除。

教學網站

Yes

推播分成兩種

  • In App Messaging(前景推播): 當app處於 activ階段時,所傳送的推播。
  • Cloud Messaging(背景推播):當app處於「background」、「suspended」或是「not running」階段時,所傳送的推播。

FCM 功能分為兩種

預期性推播

可以直接從 Firebase 介面直接讓我們設定『固定週期』或是『指定特定日期時間』的推播。可以設定推播的標題、文字、圖片、轉換事件、音效開關等等~

https://ithelp.ithome.com.tw/upload/images/20210909/20134548jAHHVrdIrN.png

即時事件推播

當事件觸發時,傳送訊息給指定用戶,類似 youtube 的訂閱者。例如:當 userA 發文時,傳送推播給訂閱 userA 的使用者。

  1. 記錄使用者的device token,根據device token發送推播。
  2. 傳送推播給 topic,有 subscribe 該 topic 的使用者就會收到該推播。白話一點就是:使用者的手機訂閱 youtuber,而 youtuber 只要發文,所有有訂閱該 youtuber 的手機都可以馬上收到通知。

開始吧~

連結 Firebase

1.Firebase註冊登入後,建立一個新的 project。
2.
https://ithelp.ithome.com.tw/upload/images/20210909/20134548vv73BytNFL.png
3. 去 project/android/app/src/AndroidManifest.xml,把 com.example.XXX 複製到下方貼上(下方圖片已 com.example.day_18 作為範例,因為 17 的我已經註冊過了。)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.day_17">

https://ithelp.ithome.com.tw/upload/images/20210909/20134548NU6yL5i2j1.png
4. 下載 google-services.json
5. project/android/build.grandle

classpath 'com.google.gms:google-services:4.3.5'
  1. project/android/app/build.grandle
apply plugin: 'com.google.gms.google-services'

    implementation platform('com.google.firebase:firebase-bom:26.8.0')
    implementation 'com.google.firebase:firebase-analytics-ktx'
  1. 連接完成。

設定 YAML 套件

  flutter_local_notifications: ^8.1.1+2
  firebase_core: ^1.6.0
  firebase_messaging: ^10.0.6
  cloud_firestore: ^2.5.1

設定 FireStore

https://ithelp.ithome.com.tw/upload/images/20210909/20134548JMuB1M68uC.pnghttps://ithelp.ithome.com.tw/upload/images/20210909/20134548FmgSDuiPR7.png

使用 Cloud Messaging

https://ithelp.ithome.com.tw/upload/images/20210909/20134548sJacMKDfjf.pnghttps://ithelp.ithome.com.tw/upload/images/20210909/20134548JvwQp2vTNp.png

點擊 Sent Test,可以指定傳送給某一台手機的 device。

https://ithelp.ithome.com.tw/upload/images/20210909/20134548F7ryaoMLAD.png

選擇 Apphttps://ithelp.ithome.com.tw/upload/images/20210909/20134548s6E36kzqVM.png

最後一個可以傳入特殊的資料,這邊需要傳入 key = route,value = secondPage,這樣當我點擊通知的時候,就可以跳到指定的 secondPage 了。
https://ithelp.ithome.com.tw/upload/images/20210909/2013454824C6Akwlrd.png

下載 ServiceAccountKey.json

下載並重新命名成 serviceaccountKey.json,並放到專案目錄底下 ./serviceAccountKey.json

https://ithelp.ithome.com.tw/upload/images/20210909/20134548RUYngljlVf.png

推播和 Firebase 連接就先講到這邊,明天談談 JS 檔案還有 Flutter 專案好了
那我們鐵人賽 Day18 見囉!!


上一篇
【第十六天 - Flutter Google、Apple、FB Sign in 流程講解】
下一篇
【第十八天 - Flutter Cloud Messaging(下)】
系列文
Flutter - 複製貼上到開發套件之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言