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 云消息传递中的更多信息。