仅在调用 requestAlwaysAuthorization 时才调用 DidEnterRegion。信标
Posted
技术标签:
【中文标题】仅在调用 requestAlwaysAuthorization 时才调用 DidEnterRegion。信标【英文标题】:DidEnterRegion only called if requestAlwaysAuthorization is called. Beacons 【发布时间】:2015-08-05 19:22:36 【问题描述】:didEnterRegion
和 didExitRegion
仅在我请求并允许 CoreLocation 始终授权后调用
即使我请求 WhenInUseAuthorization didExit 和 didEnter 也不会被调用
如果我不能调用它,我应该如何触发信标范围?
有什么解决办法吗?
更新
Apple 拒绝了我的应用调用 requestAlwaysAuthorization()
这是我今天早上提交给审核小组的问题:
为了监控信标区域(包括一些 Apple 应用程序在内的许多应用程序中使用的信标的核心功能),您需要让用户允许应用程序访问位置,即使在不使用应用程序时也是如此。我正在使用 .requestAlwaysAuthorization 来启用信标在后台进行监控。为什么不允许这样做?
苹果今天下午在 iTunes Connect 上的回应:
感谢您的反馈。但是,iBeacon 功能不需要后台位置。因此,需要在重新提交之前去除背景位置特征。
因此,如果信标应该在后台自动监控区域,但我无法请求后台监控的许可,并且除非我获得许可,否则信标不会在后台监控,那么我应该如何监控背景??
【问题讨论】:
【参考方案1】:你的意思是当应用程序在后台时?如果是这样,那么didEnterRegion
和didExitRegion
确实不会仅通过WhenInUseAuthorization 被调用。只有当您的应用在前台并且您进入/退出某个区域时,它们才会被调用
【讨论】:
苹果拒绝了我的应用调用requestAlwaysAuthorization()
这是我的问题:为了监控信标区域(包括一些 Apple 应用程序在内的许多应用程序中使用的信标的核心功能),您需要让用户允许应用程序访问位置,即使没有使用该应用程序。我正在使用 .requestAlwaysAuthorization 来启用信标在后台进行监控。为什么不允许这样做?
苹果今天下午在 iTunes Connect 上的回复:感谢您的反馈。但是,iBeacon 功能不需要后台位置。因此,重新提交前需要去掉后台定位功能。
根据文档,应用程序可以在后台监控信标区域。正如我在原始帖子中提到的,启用后台监控的唯一方法是请求 AlwaysAuthorization,但是我被拒绝请求它。那么当用户走进某个区域时我如何接收通知
我不认为使用 requestAlwasysAuthorization 是 Apple 拒绝该应用程序的确切原因——这是允许的。正如@heypiotr 在他的回答中提到的,Apple 将拒绝基于 plist 中的背景模式的应用程序。也许这就是你被拒绝的原因。【参考方案2】:
iBeacon 功能不需要背景位置。因此,重新提交前需要去掉后台定位功能。
您的应用似乎因为后台模式(特别是“位置更新”模式)而被拒绝,没有“始终”授权。您不需要为信标监控启用任何后台模式即可在后台工作,“始终”授权就足够了。
只需在您的项目设置中禁用后台模式功能,您应该会很好!
【讨论】:
在我提交的问题中,我包含了一张未选中位置的功能/背景模式的图片,以确保我们在同一页面上。他们的回应是在澄清确实检查了位置更新之后 明白了;那么很可能审阅者不清楚在后台工作的信标是什么,什么不需要;或者不明白为什么您的应用需要在后台使用信标,就像 David 提到的那样。【参考方案3】:很遗憾,您必须请求Always Allow
位置访问权限才能使用带有信标的区域监控。
来自文档:
重要
应用必须始终具有使用区域监控的授权,并且必须配置位置更新后台模式才能启动。
https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon
【讨论】:
以上是关于仅在调用 requestAlwaysAuthorization 时才调用 DidEnterRegion。信标的主要内容,如果未能解决你的问题,请参考以下文章