●補充說明--推播機制
1.不分android或ios,推播是推給系統,是GOOGLE 推給系統,先把要推播的內容給APP的SERVER,APP的SERVER會告訴GOOGLE SERVER要推給誰,GOOGLER SERVER再推給系統,再把APP叫出來
2.推播一定要有server,我們這邊用firebase,原理和運作方式如下
=>當安裝好app(ex:line)的時候會註冊帳號,會跟google說要一個推播token,要註冊這隻手機需要一個推播token,google就會回傳token,app會收到token
=>把token加上user id 傳到line 的server去,line要用資料庫存下來
=>以後要發訊息的時候,就要用token+訊息+app金鑰(key=>在google developer console申請的)
=>看到key就會知道是哪個app,看到token就會知道是哪支手機,這樣google就會送訊息過來
**同一支手機,不同app,token會一樣,所以token是綁手機
3.用firebase console做發送就沒有token問題,送推播就是一次送所有的人
●程式說明:
1.tools=>firebase
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/1(2).jpg)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-101103199.jpg&width=296&height=201)
2.cloud messaging
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/2(2).jpg)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-3695534723.jpg&width=440&height=311)
3.SET UP FIREBASE CLOUD MESSAGING=>CONNECT
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/3(1).jpg)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-2596139435.jpg&width=437&height=596)
連結時會跳出選擇授權goolge帳號,再回android studio設定Firebase project name
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/11.png&width=600)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-3552708607_n.png&width=600&height=511)
完成後右下角有出現這個訊息
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/12.png)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-1540481225_n.png&width=600&height=218)
4.點Add FCM to your app. FCM(firebase cloud message)的library=>加入gradle並且sync
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/13.png&width=590)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831879-650197736_n.png&width=600&height=497)
5.app每次啟動時跟goolge要一個token,並且註冊到firebase
=>先new一個service:myfirebaseService
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/5.jpg)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-1274404594_n.jpg&width=600&height=386)
6.繼承FirebaseMessagingService,下面IBinder可以刪除
public class MyFirebaseService extends FirebaseMessagingService{
public MyFirebaseService() {
}
}
7.加入onMessageReceived
public class MyFirebaseService extends FirebaseInstanceIdService {
public MyFirebaseService() {
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// ...
// TODO(developer): Handle FCM messages here.
// Not getting messages here? See why this may be: https://goo.gl/39bRNJ
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
}
8.manifest加intent filter(已可收推播)
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
9.先離開app,到firebase找到該專案=>左側Cloud Messaging
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/14.png)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-2070837886.png&width=287&height=385)
11.輸入訊息=>審查=>發布
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/15.png)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-214002025_n.png&width=600&height=594)
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/16.png)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-3428997326_n.png&width=600&height=231)
12.在手機收到
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/Screenshot_20190711-154838.jpg&width=325)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-684180826_n.jpg&width=421&height=336)
13.完成畫面
![](https://imageproxy.pixnet.cc/imgproxy?url=file:///C:/Users/maggie/AppData/Local/Temp/enhtmlclip/17.png&width=697)
![FCM firebase cloud messaging FCM firebase cloud messaging](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/muchone/1562831880-272473351_n.png&width=600&height=146)
●程式參考(GitHub):使用Google Firebase Cloud Messaging接收推播訊息
文章標籤
全站熱搜