4

我有一个 GPS 跟踪 Android 应用程序,当有人需要用户的位置时,它会接收连续的推送消息。

每次收到推送时,我都会在他接收推送消息时启动定位服务,在 X 时间内发送位置。

问题始于 android Doze 系统,它阻止了 http 请求。我可以收到消息,但我永远无法发送我当前的位置(我收到了 http 连接超时和对 Google 的 ping 错误)。但我可以通过ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS请求解决它,并以编程方式将应用程序添加到电池白名单中。

现在,该应用程序在所有设备上都可以正常工作,除了 S6 上的三星设备,这些设备具有“智能管理器”系统。我尝试将应用手动添加到三星的电池白名单中(设置 -> 设备维护 -> 电池 -> 未监控的应用),但问题仍然存在。

如果我让设备关闭屏幕并且不充电,在一段时间内,它会停止发送位置,但他仍然会收到推送消息。

谁能帮我一个神奇的解决方案?我看到了一个所谓的“包列表”,其中包含许多三星自动将其包含在白名单中的应用程序(例如 Facebook、Whatsapp、Life360),但我找不到将我的应用程序自动添加到此列表中所需要做的事情。

4

1 回答 1

0

根据@ManmeetP 提供的链接,看来您唯一的选择是使用三星的“Knox”SDK:ApplicationPolicy.addPackageToBatteryOptimizationWhiteList()

https://seap.samsung.com/api-references/android-standard/reference/android/app/enterprise/ApplicationPolicy.html

这意味着为所有用户将该 SDK 捆绑到您的应用程序中 =(

于 2018-03-29T18:06:44.680 回答