android - 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();
}
}
解决方案
如果您不使用 FirebaseMessaging Data Message,则 Firebase 在后台时不会调用 onMessageReceived。onMessageReceived 仅在前台调用。
您应该使用数据消息使 onMessageReceived 在后台工作
这是基于firebase 文档和关于 firebase here 中的消息类型的参考
推荐阅读
- python - 从 Visual Studio C++ 解决方案调用 Python 脚本
- angular - 为什么 Visual Studio 2017 Dot Net core 2.1 和 Angular 模板中不存在 WebPack?
- reactjs - React PropTypes 不直接传输
- corda - 如何部署corda-finance-3.1-corda.jar?
- php-extension - 如何在 php 扩展源代码中加载我自己的 libxxx.so?
- c# - 如何将文本框样式变成可重用的控件模板?
- json - 使用 Microsoft Flow 将 JSON 转换为 CSV
- javascript - 以角度自动为页面的所有元素分配 ID
- sql - 将 SQL 查询转换为 VBA
- powershell - 如何通过 Powershell 启用 Azure Cosmos DB 预览功能(聚合管道和 Mongodbv3.4)?