我正在使用Altbeacon库来检测我的应用程序何时在给定区域内或外部
我遇到的问题是,当应用程序进入后台didExitRegion方法将被调用,即使手机旁边的信标,只会回来,当我把应用程序在前台检测它。
这是我在绑定信标管理器
之前使用的配置iBeaconManager.enableForegroundServiceScanning(
BeaconNotificationManager.createNotification(
context
), BeaconNotificationManager.notificationId
)
iBeaconManager.setEnableScheduledScanJobs(false)
iBeaconManager.backgroundBetweenScanPeriod = 1000
iBeaconManager.backgroundScanPeriod = 1500
iBeaconManager.foregroundBetweenScanPeriod = 1000
iBeaconManager.foregroundScanPeriod = 1500
我注意到,当backgroundBetweenScanPeriod
为0时,这个问题不会重现。
最后,当应用程序允许后台位置权限时,这个问题也会停止,但如果我理解正确的话,这应该是不必要的,因为我启用了前台服务扫描。
Thanks in advance
你必须有后台定位权限在后台检测信标。无论您是否有前台服务,都是如此。
Android对"ForegroundService"一词的命名非常具有误导性。拥有一个并不会改变操作系统的感知,如果你的应用程序是"在前台"的权限执行的目的。当屏幕上没有可见的活动时,你的应用程序仍然在后台。看到这里。
状态栏中的前台服务指示器只是允许我们在Android 8+上运行较长时间的服务,而没有它们的应用程序被限制在10分钟的后台时间。