DidEnterRegion 仅在调用 requestAlwaysAuthorization 时调用。信标

DidEnterRegion only called if requestAlwaysAuthorization is called. Beacons

didEnterRegiondidExitRegion 仅在我请求并允许始终授权 CoreLocation

后调用

即使我请求 WhenInUseAuthorization didExit 和 didEnter 也不会被调用

如果我无法调用它,我应该如何触发信标范围?

有什么解决办法吗?

更新

Apple 拒绝了我的应用调用 requestAlwaysAuthorization()

这是我今天早上提交给审核小组的问题:

为了监控信标区域(包括一些 Apple 应用程序在内的许多应用程序中使用的信标的一个非常核心的功能),您需要让用户允许该应用程序访问位置,即使在不使用该应用程序时也是如此。我正在使用 .requestAlwaysAuthorization 使信标能够在后台进行监控。为什么不允许这样做?

苹果今天下午在 iTunes Connect 上的回应:

感谢您的反馈。但是,iBeacon 功能不需要后台位置。因此,有必要在重新提交之前删除后台定位功能。

所以如果beacons应该在后台自动监控区域,但我不能请求后台监控权限,beacons不会在后台监控,除非我得到许可,那我应该如何监控区域在后台??

您的意思是当应用程序处于后台时?如果是这样,那么 didEnterRegiondidExitRegion 确实不会仅通过 WhenInUseAuthorization 被调用。只有当您的应用程序在前台并且您 enter/exit 一个区域

时,它们才会被调用

background location is not necessary for iBeacon functionality. Therefore, it is necessary to remove the background location feature before resubmission.

您的应用似乎因为后台模式(具体来说,"location updates" 模式)而被拒绝,没有 "always" 授权。您不需要为信标监控启用任何后台模式即可在后台工作,"always" 授权就足够了。

只需在您的项目设置中禁用背景模式功能即可!

很遗憾,您必须请求 Always Allow 位置访问权限才能使用信标进行区域监控。

来自文档:

Important

Apps must have always authorization to use region monitoring, and they must be configured with the Location updates background mode to be launched.

https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon