首页 > 解决方案 > FirebaseMessaging 服务(后台服务)中的 SharedPreferences

问题描述

再会,

SharedPreferences我的问题是,如果我在应用程序关闭时收到通知,我从 FCM 获得的数据不会保存在 中。

编码:

public class SomeService extends FirebaseMessagingService
{

SharedPreferences prefs;
SharedPreferences.Editor prefsEditor;

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);

    prefs = this.getSharedPreferences("prefs", MODE_PRIVATE);
    prefsEditor = prefs.edit();

    Map<String,String> data = remoteMessage.getData();

    prefsEditor.putBoolean(Keys.text, Boolean.parseBoolean(data.get("text")));

    prefsEditor.apply();
}

}

标签: androidfirebaseandroid-studiosharedpreferencesbackground-process

解决方案


如果您不使用 FirebaseMessaging Data Message,则 Firebase 在后台时不会调用 onMessageReceived。onMessageReceived 仅在前台调用。

您应该使用数据消息使 onMessageReceived 在后台工作

这是基于firebase 文档和关于 firebase here 中的消息类型的参考


推荐阅读