java - 锁屏时收不到通知
问题描述
我正在使用 Firebase 发送推送通知。当我将应用程序最小化并且屏幕锁定和数据网络在 3G 上,并且电池电量为 90% 时,我无法收到通知。我需要在屏幕锁定时接收通知。
我当时在日志中记录了这一点以锁定屏幕。
2019-06-13 16:40:35.901 2372-9542/? D/MC_BatteryStatsData: operate removing wakelock wake:com.exampleapp/.FCMListenerService
这适用于 Moto C Android 版本 7。
我试图将此权限添加到清单文件中。
<uses-permission android:name="android.permission.WAKE_LOCK"/>
禁用电池保护程序。它在菜单中Settings -> Battery
。
这是我的FCMInstanceIDListenerService.java
public class FCMInstanceIDListenerService extends FirebaseInstanceIdService {
private static final String TAG = "MyInstanceIDLS";
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
MetodosRepo.setPreference(getBaseContext(), Globals.DEVICE_TOKEN, refreshedToken);
}
}
和FMCListenerService.java
public class FCMListenerService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage message) {
Log.e(_TAG, "onMessageReceived");
}
}
我希望在屏幕锁定时收到通知。º
解决方案
从 Android 8.0 开始,他们设置了后台执行限制,因此当您的应用程序在后台时,您不会收到推送通知。
我想建议实现一个JobScheduler
将连接到您的服务器以查看是否有任何待处理通知并相应地创建通知警报的方法。这是一个关于如何实现 JobScheduler的示例项目。
但是,Android 会处理推送通知,我认为您会在 3-5 分钟后收到通知(当服务处于前台时几乎不会立即收到通知)。
推荐阅读
- javascript - AWS Kendra sdk 调用不会返回结果
- sql - 有没有办法在 SQL 中复制和合并整行并为单个链接 ID 列分配新值?
- r - 根据名称将列表中的元素替换为另一个列表中的元素
- json - 带有 URL 段的 TidHttp 帖子
- javascript - AngularJS 一个 div 中的多个选择
- python - 使用 osc4py3 从 Python 发送消息?
- python - 从人口普查中下载数据块,如何写入多个 csv 以不超过内存
- json - Azure 逻辑应用:动态设置工作流名称以调用现有逻辑应用(嵌套逻辑应用)
- image - Checkbox Recaptcha 改为显示图像 Recaptcha
- javascript - 将 JavaScript 函数导入 HTML?