如果 Android 设备长时间处于空闲状态,则不会收到推送通知

Posted

技术标签:

【中文标题】如果 Android 设备长时间处于空闲状态,则不会收到推送通知【英文标题】:Push Notifications not received by Android device if it is kept idle for long 【发布时间】:2017-09-06 10:18:43 【问题描述】:

我能够使用 GCM 成功向 android 设备发送远程通知。但是在某些设备上,如果设备长时间处于空闲状态,则不会收到通知。我在 xiaomi redmi note 4 设备上遇到问题,并且它在其他 android 设备上运行良好。我也尝试过使用 FCM,但问题是一样的。我按照 here 的教程进行操作 使用 FCM 和 here 实现推送通知 使用 GCM 实现远程通知。我需要启用任何设置吗?问题设备特定吗?

【问题讨论】:

问题不是推送服务,而是小米的内存管理应用。只需将您的应用程序添加到他们拥有的内存管理应用程序的白名单中即可。 reddit.com/r/Xiaomi/comments/5fhs22/ram_optimization_on_miui_8 【参考方案1】:

小米设备自动停止后台服务。为了在您的小米设备中长时间运行您的服务,您需要授予设备中自动运行的权限。如果您允许您的应用自动运行,那么服务可以在您的设备中运行很长时间。

下面是在小米设备中询问自动运行权限的代码sn-p。

if (TextUtils.equals(Build.MANUFACTURER, "Xiaomi")
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
    startActivity(intent);

【讨论】:

如果你得到了你的解决方案,那么请接受这个答案,这样其他人可以很容易地得到它。 这对我不起作用。同样的问题也发生在 Asus_Z00UD 上。 Lenovo Tab 3 出现同样的问题

以上是关于如果 Android 设备长时间处于空闲状态,则不会收到推送通知的主要内容,如果未能解决你的问题,请参考以下文章

空闲状态下的 WiFi 直接发现

Oracle 概要文件IDLE_TIME限制用户最大空闲连接时间

需要在android中每分钟运行一个后台任务

MySQL进阶垫脚石:线程长时间处于killed状态怎么破?

MySQL数据库的基础架构

MySQL 查询:长时间处于“init”状态