记录一次FCM推送集成的步骤.(若有遗漏或错误,以后再修改补充,欢迎评论里提出)
1.首先得有一个谷歌开发者账号,详细注册步骤就略过了.
2.打开Firebase控制台,选择创建一个新的项目.

(1)输入项目名称

(2)为项目设置Google Analytics, 这个看自己需不需要设置吧, 本次只是Demo所以没有设置.

(3)创建完成.如果上一步启用了分析,则还有第3步的设置,应该也不难设置的,看着办吧.

3.创建完成项目后,点击进入项目,选择左侧菜单Cloud Messaging进入推送相关页面.

在Cloud Messaging页面,可以查看文档了解下如果接入FCM推送(下方箭头),或者开始接入(上方箭头).

4.开始添加Firebase
(1)输入application id(必填)、应用别名和SHA-1(选填)

(2)下载json文件,并放到项目指定位置.

(3)添加Firebase SDK.
本次项目级build.gradle中dependencies添加的是 classpath'com.google.gms:google-services:4.2.0' ,而应用级dependencies中添加的是implementation'com.google.firebase:firebase-messaging:17.4.0'.

(4)添加完成.


5.代码部分
首先想办法获取FCM推送必须的Token.
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if (!task.isSuccessful()) {
Log.w(TAG, "fcm get instance id failed: " + task.getException());
return;
}
InstanceIdResult result = task.getResult();
if (result !=null) {
String token = result.getToken();
Log.d(TAG, "fcm token: " + token);
}
}});
然后新建一类继承FirebaseMessagingService,其中onMessageReceived就能监听推送过来的消息.
public class FcmReceiverService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.d("FcmReceiverService", "onMessageReceived");
}
}
之后在Manifest中配置下这个Service,然后就可以开始测试了.
<service
android:name=".FcmReceiverService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
6.测试部分

如图11所示点击进入推送页面,按照图12步骤:①输入推送标题②输入推送内容③发送测试消息④添加FCM注册令牌,就是上面代码里获取到的Token⑤添加之后点击测试.就可以在onMessageReceived方法中监听到推送消息.
如果杀死应用后测试,会默认在通知栏弹出一条通知.
注意,FCM推送测试需要网络能够翻墙,而且手机设备有Google Play Service.(笔者自己使用的是模拟器,有翻墙工具)
网友评论