Flutter_beacon插件在IOS的后台不起作用



这里有什么变通方法可以让MainActivity/App在IOS的后台保持活动。

因为我正在使用两个不同的插件扫描和广播在同一时间。

这是我的扫描代码:我正在使用FLUTTER_BEACON插件

_streamRanging =
flutterBeacon.ranging(regions).listen((RangingResult result) {
print(result);
if (result != null && mounted) {
setState(() {
_regionBeacons[result.region] = result.beacons;
_beacons.clear();
_regionBeacons.values.forEach((list) {
_beacons.addAll(list);
});
_beacons.sort(_compareParameters);
});
}
});

虽然这个问题是专门关于Flutter的,但无论应用程序是如何构建的,iOS都会对应用程序的后台使用强制执行某些规则:

  1. 当iOS应用程序在屏幕上不可见时,它将被视为在后台
  2. 当在后台时,应用程序的信标测距被阻止,除非:

    a。该应用程序设置了一个后台进程(每次将应用程序放在后台时,在iOS 13+上只允许30秒的测距(点击此处阅读更多

    b。设置后台进程,声明"位置"后台模式,并请求定期更新位置。这将解锁无限的背景范围,但这可能会使应用商店无法获得批准,除非你能证明明显的面向用户的背景位置优势。

    c。作为(b(的替代方案,如果应用程序进行信标监测,如果可以周期性地触发信标监测区域进入或退出,则它将解锁(a(中所述的额外30秒的背景测距。如果你可以在使用应用程序的位置部署一个交替的信标,这是可能的。

无论是否使用Flutter,(2(中描述的解决方法都是相同的。Flutter的后台任务的具体实现方式当然有所不同。

编辑2020年11月4日:苹果宣布计划在后台发布一个新的信标广告。请参阅此处了解更多信息。

最新更新