这是一个更普遍的问题,但我们可以在多大程度上在服务中使用 Nearby Connections API ?
我注意到在应用程序失焦时发现和配对仍在工作,因此是否可以将整个连接客户端提取到前台,甚至是在应用程序本身不需要时运行的后台服务?
这是一个更普遍的问题,但我们可以在多大程度上在服务中使用 Nearby Connections API ?
我注意到在应用程序失焦时发现和配对仍在工作,因此是否可以将整个连接客户端提取到前台,甚至是在应用程序本身不需要时运行的后台服务?
使用服务中的附近连接没有任何限制。然而,Android 总是有点激进地杀死后台服务(自 Android Oreo 以来更加激进)。也没有办法限制功率,因此广告、扫描和长时间保持连接会对电池寿命产生不利影响。有一个暴露低功耗标志的计划,但没有 ETA。
免责声明:我在附近的连接上工作
在运行 Android Q 或更高版本的设备上,必须请求 ACCESS_FINE_LOCATION 权限才能使用附近连接。当应用程序在运行 Android Q 或更高版本的设备上使用 Nearby Connections 运行后台服务(如 JobService)时,该应用程序将无法发现或发布广告,除非 Google 已向该应用程序授予 ACCESS_BACKGROUND_LOCATION 权限。要让 Google 授予它,您必须详细解释您的应用需要它的原因,并且不能保证您会获得它。这就是说,在低于 Q 的 Android 版本上,应用程序可以成功地发现并在后台服务中发布广告,只要它请求了所有 nedded 权限(BLUETOOTH、BLUETOOTH_ADMIN、ACCESS_WIFI_STATE、CHANGE_WIFI_STATE 和 ACCESS_COARSE_LOCATION)。