Firebase 雲訊息傳遞
首先,你需要按照本主題中描述的步驟設定專案,將 Firebase 新增到 Android 專案中 。
設定 Firebase 和 FCM SDK
將 FCM 依賴項新增到你的應用級 build.gradle
檔案
dependencies {
compile 'com.google.firebase:firebase-messaging:11.0.4'
}
在最底層(這很重要)新增:
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
編輯你的應用清單
將以下內容新增到你應用的清單中:
-
一項延伸
FirebaseMessagingService
的服務。如果你想要在後臺接收應用程式通知之外的任何訊息處理,則需要這樣做。 -
擴充套件
FirebaseInstanceIdService
以處理註冊令牌的建立,輪換和更新的服務。
例如:
<service
android:name=".MyInstanceIdListenerService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MyFcmListenerService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
以下是 2 種服務的簡單實現。
要檢索當前註冊令牌,請擴充套件 FirebaseInstanceIdService
類並覆蓋 onTokenRefresh()
方法:
public class MyInstanceIdListenerService extends FirebaseInstanceIdService {
// Called if InstanceID token is updated. Occurs if the security of the previous token had been
// compromised. This call is initiated by the InstanceID provider.
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Send this token to your server or store it locally
}
}
要接收訊息,請使用擴充套件 FirebaseMessagingService
的服務並覆蓋 onMessageReceived
方法。
public class MyFcmListenerService extends FirebaseMessagingService {
/**
* Called when message is received.
*
* @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
*/
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
String from = remoteMessage.getFrom();
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());
Map<String, String> data = remoteMessage.getData();
}
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}
// do whatever you want with this, post your own notification, or update local state
}
在 Firebase 中可以按使用者的行為對使用者進行分組,例如“AppVersion,免費使用者,購買使用者或任何特定規則”,然後通過在 fireBase 中傳送主題功能向特定組傳送通知。
在主題使用中註冊使用者
FirebaseMessaging.getInstance().subscribeToTopic("Free");
然後在 fireBase 控制檯中,按主題名稱傳送通知
專題主題 Firebase 雲訊息傳遞中的更多資訊。