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