Android Firebase接入(五)-- Firebase推送通知(Cloud Message)

简介

Firebase Cloud Message(FCM)可以帮助App实现消息推送功能,并且可以在推送通知中携带参数,当用户点击推送通知时,推送中携带的参数信息将传递到启动Activity的getIntent中。

官方文档:https://firebase.google.com/docs/cloud-messaging/android/client

接入

一、配置Android应用并下载google-service.json文件

配置步骤见本系列第一篇文章:Android Firebase接入(序)–Firebase简介以及Firebase官方Demo的使用中的 “配置Android应用并下载google-service.json文件”

二、添加CloudMessage依赖

1.项目级的build.gradle中,添加:

classpath 'com.google.gms:google-services:4.1.0'

2.app模块下的build.gradle中,添加:

dependencies {
    ...
    implementation 'com.google.firebase:firebase-core:15.0.0'
    implementation 'com.google.firebase:firebase-messaging:17.0.0'

}
apply plugin: 'com.google.gms.google-services'

三、添加两个Service

AndroidManifest中添加:

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

<service
    android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

新建MyFirebaseInstanceIDService继承自FirebaseInstanceIdService:

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
}

新建MyFirebaseMessagingService继承自FirebaseMessagingService:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
}

动图演示:

这样就完成了Android端的集成。运行程序并将程序退出到后台,只有app在后台运行时才能收到推送通知。

四、发送推送消息

打开Firebase控制台,转到Cloud Message模块,点击发送您的第一条消息:


到达以下界面:

填入通知标题、通知文字,通知标签,点击下一步,到达以下界面:

定位是用来选择发送给哪些设备的,选择我们的应用,这样安装了我们的app的用户都能收到此消息,点击下一步,到达以下界面:

“发送安排”用来设置通知的频率,选择Now表示立即发送,除了Now之外还可以设置周期性通知,比如每天推送一次。我们选择Now,点击下一步,到达以下界面:

转化事件暂时不用,直接点击下一步,到达以下界面:

通知渠道是Android8.0以上新推出的功能,可以不填,自定义数据中可以输入键值对。当用户点击通知进入app时,这些键值对会发送到主Activity的getIntent中。声音可以选择启动或停用,指的是用户收到通知时是否有声音提示。编辑好这些内容后,点击审核,出现以下弹窗:

点击发布,安装了此app的Android设备就可以收到这条推送了。
注:
1.需要在真机运行,Android模拟器无法收到推送
2.app没有在前台运行时,才可以收到推送

收到推送消息的Android手机显示如下:

五、获取推送中携带的参数

前面已经说到,当用户点击推送通知时,推送中携带的参数信息将传递到启动Activity的getIntent中,我们可以在启动Activity中将键值对打印出来

1.编辑MainActivity

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent intent = getIntent();
        if(intent!=null&&intent.hasExtra("键")){
            Log.d(TAG, "intent: "+intent.getStringExtra("键"));
        }
    }
}

2.安装app并将app退到后台

3.在Firebase控制台发送一条推送 ,键值对填:“键”:“值”

4.点击推送进入app

Log控制台可以看到:

六、给单个设备发送推送

Firebase也可以给单个设备发送消息,这个功能在调试的时候非常有用。先在程序中获得设备的Firebase token id:

Log.d(TAG, "Firebase Token: "+ FirebaseInstanceId.getInstance().getToken());

在Firebase控制台发送推送时选择“在设备上测试”,

到达以下界面:

将设备的Firebase token id填入,点击“+”号,再点击测试。这样就可以把推送消息只发送给这一个设备了。

评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值