跳转至

FCM

准备工作

首先,要有个 Google 开发者账号,然后登录到 Firebase 控制台创建 Firebase 项目,如下图:

avatar

1、如果已经有一个与您的移动应用关联的现有 Google 项目(之前集成过 GCM),请点击 Import Google Project。 否则,请点击 Create New Project。

2、创建之后,点击 Add Firebase to your Android app 并按设置步骤进行操作。如果在导入现有 Google 项目,这可能是自动进行的,您只需下载配置文件即可。

image

3、出现提示时,输入您的应用的包名称。输入您应用使用的包名称十分重要。只有当您将一个应用添加至您的 Firebase 项目时才能进行此设置。 4、最后,您将下载一个 google-services.json 文件。您可以随时重新下载此文件。 5、最后将下载的 json 文件 copy 到你的 App 的目录下。

上述步骤之后,你可以进入 project setting,之后点击 CLOUD MESSAGING 查看 Server key,将它设置到融云开发者平台上 FCM 密钥配置中

avatar

avatar

接入流程

导入 SDK

首先在根级别的 build.gradle 文件添加一条规则。以包含 Google 服务插件

// ...
dependencies {
    // ...
    classpath 'com.google.gms:google-services:4.2.0'
}

然后在模块 Gradle 文件(通常是app/build.gradle)中,添加 firebase 依赖

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  api 'com.google.android.gms:play-services:12.0.1'
  api 'com.google.firebase:firebase-messaging:17.6.0'
}

之后再你 app module 下最后一行加入下面一句,底部 添加 apply plugin 行,以启用 Gradle 插件:

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

需要注意的是该 build.gradle 文件和之前下载的 google-services.json 文件应该处于同一个目录下面。

如果 AndroidStudio 版本是 2.2+ 的话,则可以通过 Tools->Firebase. 点击 Cloud Messaging->set up Firebase Cloud Messaging. 之后从准备工作步骤 2 开始集成。不要忘了api 'com.google.android.gms:play-services:12.0.1'

添加配置文件

在你 App 下的 AndroidManifest.xml 中加入

	<!-- [START firebase_service] -->
    <meta-data
      android:name="firebase_messaging_auto_init_enabled"
      android:value="false" />
    <meta-data
      android:name="firebase_analytics_collection_enabled"
      android:value="false" />

    <service
      android:name="io.rong.push.platform.google.RongFirebaseMessagingService"
      android:stopWithTask="false"
      android:exported="false">
           <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
     </service>
     <!-- [END firebase_service] -->
启用推送服务

在调用融云初始化 API (即 RongIM.init() 或 RongIMClient.init()) 之前,将 PushConfig 里的 FCM 开关打开。如果没有 PushConfig 对象,则需要新建一个,并进行相应配置。

PushConfig config = new PushConfig.Builder()
        .enableMiPush("", "") //配置小米推送
        .enableHWPush(true)  // 配置华为推送
        .enableFCM(true) //配置 FCM 推送
        .build();
RongPushClient.setPushConfig(config);
RongIM.init(this);
异常处理

和 HMS 相似。您可以在自定义的继承自 PushMessageReceiver 的广播接收器中,复写如下事件来捕捉推送异常事件。

参数说明:

参数 类型 必填 说明
pushType PushType push类型
action String 当前的操作,连接或者获取token
resultCode long 返回的错误码

代码示例:

     @Override
     public void onThirdPartyPushState(PushType pushType, String action, long resultCode) {
         super.onThirdPartyPushState(pushType, action, resultCode);
     }

当 pushType 为 PushType.GOOGLE_FCM 时, 您可根据 resultCode 到 com.google.android.gms.common.ConnectionResult 中查看错误码具体含义,根据需要,选择是否弹出对话框提醒用户安装对应环境等。

至此,FCM 推送集成完毕。

混淆脚本

-dontwarn com.xiaomi.mipush.sdk.**
-keep public class com.xiaomi.mipush.sdk.* {*; }
-keep public class com.google.firebase.* {*;}