【问题标题】:Location services permission keeps disappearing位置服务权限不断消失
【发布时间】:2017-11-02 10:58:21
【问题描述】:

我正在开发一个应用程序,该应用程序将在用户位置周围的地图上显示兴趣点。问题是,当应用程序加载时,权限对话框会在用户允许或拒绝权限之前立即消失。

我的代码如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    logo.animation = "zoomIn"
    logo.duration = 1
    logo.delay = 0.5
    logo.animate()

    formatView()

    let locationManager = CLLocationManager()
    let authStatus: CLAuthorizationStatus = CLLocationManager.authorizationStatus()

    if authStatus == .notDetermined {
        locationManager.requestWhenInUseAuthorization()
    }

    if authStatus == .denied || authStatus == .restricted {
        showLocationServicesDeniedAlert()
        return
    }
}

但我不知道我做错了什么。对于类似的问题,我尝试在此处关注其他答案,但似乎有几个原因会发生这种情况,我不知道我的问题是哪一个问题是我正在撕扯头发!

【问题讨论】:

    标签: ios swift permissions location


    【解决方案1】:

    您将locationManager 分配给viewDidLoad 的局部变量,该变量在viewDidLoad 完成时立即释放。相反,将locationManager 设为ViewController 的属性:

    var locationManager: CLLocationManager?
    
    override func viewDidLoad() {
        ...
    
        locationManager = CLLocationManager()
    
        ...
    }
    

    【讨论】:

      【解决方案2】:

      尝试移动viewWillAppear 中的代码,因为在视图控制器出现时需要调用requestWhenInUseAuthorization。您可以研究 View Controller Life Cycle here 以了解更多关于它们的外观、加载和一切的信息。

      【讨论】:

      • 这不应该是问题,对我来说,从viewDidLoad 调用它时请求授权工作得很好。
      • @DávidPásztor 你是对的,即使它也对我有用,但是当从viewDidLoad(有时)调用权限警报时似乎有问题,所以这可能是他面临的问题.
      猜你喜欢
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2016-09-17
      • 2018-03-26
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多