簡體   English   中英

CLLocationManager-授權提示消失了嗎?

[英]CLLocationManager - Authorization prompt goes away?

我嘗試為使用CLLocation的處理方法建立一個locationHelper類,這樣我就不必在每個視圖控制器中都重寫它們。 我的LocationHelper類有一個方法checkStatus()來檢查用戶是否已授予使用其位置的身份驗證。 但是,如果我調用該方法,而用戶尚未授予該權限,則提示會出現,但是會在提示后2秒鍾消失。 我認為問題出在類的實現上,因為如果我在ViewController中編寫代碼,則提示將一直保留到用戶做出決定為止。 我的LocationHelper.swift:

    import Foundation
import CoreLocation

class LocationHelper: NSObject, CLLocationManagerDelegate{
    var locationManager: CLLocationManager!
    var delegate: CLLocationManagerDelegate!
    override init(){
        super.init()
        self.locationManager = CLLocationManager()
        locationManager.delegate = self
    }

    func requestPermission() -> Void {
        self.locationManager?.requestWhenInUseAuthorization()
    }

    //func getLocationInstance() -> CLLocationManager {
    //    return self.locationManager?
    //}
    func checkStatus() -> Void {
        switch CLLocationManager.authorizationStatus() {
        case .notDetermined:
            // Request when-in-use authorization initially
            print("not determined")
            locationManager?.requestWhenInUseAuthorization()

        case .restricted, .denied:
            // Disable location features
            print("status: fail")

        case .authorizedWhenInUse:
            // Enable basic location features
            print("in use")


        case .authorizedAlways:
            print("always")
        }
    }

}

我的ViewController:

import UIKit

class LiveDataViewController: UIViewController {


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.view.backgroundColor = UIColor(red: 0.12, green: 0.67, blue: 0.478, alpha: 1)
        let locHelp = LocationHelper()
        locHelp.checkStatus()


        //locHelp LocationHelper = LocationHelper()
        //locHelp.requestPermission()

    }

如果有人可以幫助我,我會很高興。

嘗試保存對定位助手的引用。

視圖加載后,它可能會自動釋放。

像這樣:

import UIKit

class LiveDataViewController: UIViewController {

    let locHelp = LocationHelper()

    override func viewDidLoad() {
        super.viewDidLoad()

        locHelp.checkStatus()
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM