【问题标题】:In iOS 11 didEnterRegion & didExitRegion not working when authorizedWhenInUse is granted otherwise its working fine在 iOS 11 中,didEnterRegion 和 didExitRegion 在授权时不工作,否则它工作正常
【发布时间】:2018-06-14 02:46:50
【问题描述】:

我从这里下载项目

https://www.raywenderlich.com/136165/core-location-geofencing-tutorial

并根据需求进行了少量修改

  1. xcode 说缺少描述,所以我在 info.plist 中添加这些

    隐私 - 始终定位和使用时使用说明

    隐私 - 使用时的位置使用说明

  2. GeotificationsViewController我修改了这个

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { mapView.showsUserLocation = 状态 == .authorizedAlways||状态 == .authorizedWhenInUse }

当我授予authorizedAlways 时,一切正常,但是当authorizedWhenInUse 被授予时,它不会提供didEnterRegiondidExitRegion

应用在两种情况下都处于打开状态、正在运行、处于活动状态、在屏幕上可见。

xcode 9.2 版, iOS 11.2

【问题讨论】:

    标签: ios swift geolocation core-location geofencing


    【解决方案1】:

    对于基于区域的监控操作,您必须从用户那里收集authorizedAlways 权限。

    更多参考请查看这里。

    https://developer.apple.com/documentation/corelocation/cllocationmanager/1620562-requestwheninuseauthorization

    应用不能使用任何会自动重新启动应用的服务,例如 作为区域监控或重大位置变更服务。

    【讨论】:

    • 但是如果用户只想在应用程序运行时使用此功能,用户不想授予authorizedAlways
    • 那么区域监控就不起作用了;这是他们的选择;如果他们只授予“使用时”,那么他们将无法获得区域监控功能。您可以检测到此权限设置并显示一条警报,说明用户需要从设置中授予“始终”权限,如果他们想要您的应用程序的完整功能
    • 但是您不认为“使用时”会让用户感到困惑,他/她会认为它会在应用程序运行时提供完整的功能。
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2019-11-11
    相关资源
    最近更新 更多