首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Android不退出打瞌睡模式,尽管FCM中的消息具有很高的优先级?

为什么Android不退出打瞌睡模式,尽管FCM中的消息具有很高的优先级?
EN

Stack Overflow用户
提问于 2022-08-18 13:36:11
回答 2查看 202关注 0票数 1

我正在通过FCM发送一条高优先级的数据信息。

代码语言:javascript
复制
curl -X POST -H "Authorization: Bearer ya29.c.b0AXv..." -H "Content-Type: application/json" -d '{
  "message": {
    "topic" : "mytopic",
    "data": {
      "message": "my_unique_data"
    },
    "android":{
      "priority":"high"
    },

  }
}' https://fcm.googleapis.com/v1/projects/myproject/messages:send

在收到-我打电话通知。如果Android是活动的,这是可行的。

但是,如果智能手机的屏幕关闭,智能手机静止了一段时间,我再次发送数据消息,直到我移动手机,通知才会出现。

我想Android是在打瞌睡模式,但是文档中说,高优先级的消息FCM会让智能手机摆脱这种模式。

请帮我解决问题。

EN

回答 2

Stack Overflow用户

发布于 2022-08-18 13:51:15

发生这种情况的原因有两个(来自这里):

  1. 每个应用程序都有高优先级的通知配额,如果发送的通知太多,操作系统将取消它们的优先级。
  2. 谷歌要求用户与高优先级的FCM消息进行某种形式的交互(以防止开发者滥用)。因此,如果您发送“隐藏”的FCM通知,例如,显示在一个无声的通知通道中,您的应用程序的配额将被取消优先级。另外,用户需要打开应用程序,或者在某个时间间隔内单击通知(我没有看到记录的实际时间框架)。如果他们不这样做,它也会被取消优先次序。
  3. 列表项目

因此,听起来您的应用程序的FCM配额被取消了优先级,您需要弄清楚哪种方案适用。

票数 0
EN

Stack Overflow用户

发布于 2022-08-18 13:52:31

一般来说,你是正确的,如下文所述:

FCM被优化为与Doze和App备用空闲模式一起工作。FCM高优先级消息可以让你可靠地唤醒你的应用程序来吸引用户。在Doze或App备用模式下,系统传递消息,并允许应用程序临时访问网络服务和部分唤醒,然后将设备或应用程序返回到空闲状态。对于时间敏感的、用户可见的通知,请考虑使用高优先级的消息来启用Doze模式下的传递。高优先级消息预计会导致通知。有关更多信息,请参见FCM关于高优先级消息的指导。

然而,他们也提到:

最重要的是,所有应用程序都应该能够通过正确管理网络连接、警报、作业和同步,以及使用FCM消息来支持Doze。对于一组狭窄的用例,这可能是不够的。对于这种情况,系统提供了一个可配置的应用程序列表,这些应用程序部分不受Doze和App备用优化的限制。部分豁免的应用程序可以在Doze和App备用期间使用网络并持有部分唤醒锁。然而,其他限制仍然适用于应用程序,就像对其他应用程序一样。例如,应用程序的作业和同步被推迟(在API级别23及以下),并且它的常规AlarmManager警报不会触发。应用程序可以通过调用isIgnoringBatteryOptimizations()来检查其当前是否在豁免列表中。

有时,OEM也会改变打瞌睡模式的行为,这会产生与Google文档中所述功能略有不同的功能。所以我建议按照他们在文件中的提示:

用户可以在设置>电池>电池优化中手动配置豁免应用程序列表。或者,该系统为应用程序提供了要求用户豁免它们的方法:大多数应用程序都应该调用包含ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS的意图。满足可接受用例的应用程序可以调用包含ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图操作的意图,让用户直接将应用程序添加到豁免列表中,而无需进入系统设置。注意: Google政策禁止应用程序请求直接豁免安卓6.0+ (Doze和App备用)的电源管理功能,除非该应用的核心功能受到不利影响。应用程序可以通过调用isIgnoringBatteryOptimizations()来检查其当前是否在豁免列表中。

我相信这能解决你的问题

博士- https://developer.android.com/training/monitoring-device-state/doze-standby

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73404037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档