集成Firebase推送 - Android

650 阅读1分钟

一. 从firebase官网创建项目

将 Firebase 添加到您的 Android 项目

二.项目中使用firebase

添加 android/app/build.gradle 中依赖

// 集成Google firebaseSDK
implementation platform('com.google.firebase:firebase-bom:30.3.1')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-crashlytics' //奔溃上报集成
implementation 'com.google.firebase:firebase-analytics'

创建一个firebase的服务- MyFirebaseMessagingService.java 获取推送数据 消息推送

public class MyFirebaseMessagingService extends FirebaseMessagingService{

@Override
public void onCreate() {
    super.onCreate();
    Log.e(TAG, "onCreate");
}

@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
     if (message.getData().size() > 0) {
        Log.d(TAG, "数据回调方法一: " + message.getData());
    }
}


@Override
public void onDeletedMessages() {
     Log.e(TAG, "应用在连接时在特定设备上等待处理的消息过多 (>100),或者如果该设备超过一个月未连接到 FCM.则会走该回调");
   }
   
   
@Override
public final void handleIntent(Intent intent){
    Log.e(TAG, "数据回调方法二");
    String data = intent.getExtras().getString(key, "");
   }
}

在AndroidManifest.xml中注册启动服务(注:在xml尽可能少注册服务,防止个别服务不支持在后台启动从而导致firebase服务也无法被拉起)

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

三.获取离线推送(app被杀死后)数据

try {
    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        Set<String> keys = bundle.keySet();
        for (String key : keys) {
           String pushStrCache = bundle.getString(key);
            Log.d(TAG, "pushStrCache::" + pushStrCache);
        }
    }
} catch (Exception e) {
    Log.d(TAG, "getOfflinePushCache error:" + e);
}