当应用程序处于后台时,无法扫描设备。Android中的行为-当应用程序处于最小化状态时扫描工作,但当应用程序处于killed
状态/手机锁定时扫描工作不正常。iOS中的行为-当应用程序处于最小化状态时扫描不工作,当应用程序处于已终止状态/手机锁定时也不工作。预期行为-扫描应在应用生命周期的所有状态下工作。使用的插件-flutter_blue_plus
,Workmanager
。
尝试给予所有后台权限并使用workmanager,但扫描仅在应用程序处于前台或Android中处于最小化状态时起作用,在iOS中仅在前台状态时起作用。预期行为-扫描应在应用生命周期的所有状态下工作。
1条答案
按热度按时间nukf8bse1#
“尝试给予所有后台权限。”在iOS中,是否包括
bluetooth-central
模式(这是您唯一需要的模式)?请注意,iOS不会在后台“重新发现”设备,即使您请求重复。每次扫描只会发现一次,并且您必须扫描特定的服务UUID集(而不是“所有服务”或nil)。请注意,如果应用程序被iOS上的用户杀死,您不应该期望扫描继续(尽管我遇到过这样的情况,所以不要假设这里有任何承诺)。在这种情况下,用户已明确禁用您的应用。如果用户允许,可以通过静默推送通知重新唤醒已关闭的应用程序。如果应用程序被系统终止(以恢复系统资源),您通常应该预期扫描将代表应用程序继续进行,并且如果发现新设备,应用程序将重新启动。
对于Android,请参阅https://stackoverflow.com/a/44291991/97337并确保您启用了
ACCESS_COARSE_LOCATION
。