一. 从firebase官网创建项目
二.项目中使用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);
}