将 Firebase 添加到您的 Android 应用
1、进入Firebace页面,创建自己的项目

2、点击自己创建好的项目,在右侧选择Cloud Messaging

3、点击Android去创建 google-services.json

4、将下载的 google-services.json
文件移到您的模块(应用级)根目录中

5、添加相关SDK(根据自己AGP版本去添加对应的SDK版本,否则可能会编译失败)
将该插件作为依赖项添加到您的项目级 build.gradle
文件中:
根级(项目级)Gradle 文件 (<project>/build.gradle
):
Groovy
plugins {
// ...
// Add the dependency for the Google services Gradle plugin
id 'com.google.gms.google-services' version '4.4.2' apply false
}
然后,在模块(应用级) build.gradle
文件中,同时添加要在您的应用中使用的 google-services
插件和任何 Firebase SDK:
模块(应用级)Gradle 文件 (<project>/<app-module>/build.gradle
):
Groovy
plugins {
id 'com.android.application'
// Add the Google services Gradle plugin
id 'com.google.gms.google-services'
...
}
dependencies {
// Import the Firebase BoM
implementation platform('com.google.firebase:firebase-bom:33.6.0')
// TODO: Add the dependencies for Firebase products you want to use
// When using the BoM, don't specify versions in Firebase dependencies
implementation 'com.google.firebase:firebase-analytics'
// Add the dependencies for any other desired Firebase products
// https://firebase.google.com/docs/android/setup#available-libraries
implementation 'com.google.firebase:firebase-messaging:24.0.3'
}
重写FirebaseMessagingService
java
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
/**
* 监听推送的消息
* 三种情况:
* 1,通知时:
* 当应用处于前台的时候,推送的消息会走onMessageReceived方法,处于后台时走系统托盘。
* 2,数据时:
* 当应用处于前、后台的时候,会走onMessageReceived方法。
* 3,通知且携带数据:
* 当应用处于前台的时候,推送的消息会走onMessageReceived方法,处于后台时,通知走系统托盘,数据走Intent 的 extra 中(点击通知栏后)。
*/
@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
}
/**
* 当有新的Firebase token 时的回调
* 第一次安装app 获取到的 pushtoken
*/
@Override
public void onNewToken(@NonNull String token) {
//token 传递给后端
//在Firebase控制台测试push的时候,需要将token配置进去
Logger.i(TAG, "onNewToken =" + token);
}
}
XML
<service
android:name="com.xx.xx.push.fcm.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
完成以上工作就可以正常接收到消息了
注意:系统设置中需要开启通知权限
控制台调试
进入Firebase Messaging页面,点击制作首个宣传活动



将设备上生成的token添加进去

问题
1、接收FCM消息需要进程存活,否则收不到
2、可以开启自启动权限,进程不在的时候收的FCM可以将进程拉起来
3、自测接受FCM消息的时候手机不需要翻墙
4、无法生成token的话,检查是不是没有安装Google play services服务