在swift 3中,我目前正在使用Location为我的应用程序做一些事情,我想检查它是否在稍后的某个时间启用

在swift 3中,我目前正在使用Location为我的应用程序做一些事情,我想检查它是否在稍后的某个时间启用,swift,timer,cllocationmanager,cllocation,Swift,Timer,Cllocationmanager,Cllocation,我有一个应用程序,可以找到一个人的坐标,并将其用于一些代码,当然,如果我没有启用位置,我就不能使用它,但我想检查它是否在以后的网站上启用。例如: 用户登录,转到我的标签,没有位置,所以它不会显示最近的商店,但一旦他在那里启用位置,侦听器就会告诉我的代码它已打开,并相应地执行操作 我在考虑用计时器每秒钟检查一次。。。但这似乎有点愚蠢,还有其他选择吗?实施什么比较好?在您需要定位的屏幕中,只需检查定位服务是否已启用 override func viewDidLoad() { super.v

我有一个应用程序,可以找到一个人的坐标,并将其用于一些代码,当然,如果我没有启用位置,我就不能使用它,但我想检查它是否在以后的网站上启用。例如:

用户登录,转到我的标签,没有位置,所以它不会显示最近的商店,但一旦他在那里启用位置,侦听器就会告诉我的代码它已打开,并相应地执行操作


我在考虑用计时器每秒钟检查一次。。。但这似乎有点愚蠢,还有其他选择吗?实施什么比较好?

在您需要定位的屏幕中,只需检查定位服务是否已启用

override func viewDidLoad() 
{
    super.viewDidLoad()
    self.checkLocationServiceEnabled()
}

func checkLocationServiceEnabled()
{
    let locationAuthorizationStatus = CLLocationManager.authorizationStatus()

    switch locationAuthorizationStatus {

    case .AuthorizedAlways ,.AuthorizedWhenInUse ,.NotDetermined ,.Restricted:
        break
    case .Denied:
        self.alertTurnOnLocationFromDevicePrivacySetting()
    }
}

func alertTurnOnLocationFromDevicePrivacySetting()
{
    let delayTime = dispatch_time(DISPATCH_TIME_NOW,
                                  Int64(1 * Double(NSEC_PER_SEC)))
    dispatch_after(delayTime, dispatch_get_main_queue()) {
            let alertController = UIAlertController(
                title: ALERT_TURN_ON_LOCATION_FROM_DEVICE_PRIVACY,
                message: "",
                preferredStyle: .Alert)

            let cancelAction = UIAlertAction(title: ALERT_OK, style: .Cancel, handler: nil)
            alertController.addAction(cancelAction)

            self.navigationController?.topViewController!.presentViewController(alertController, animated: true, completion: nil)
    }
}

你看过
CLLocationManager
CLLocationManagerDelegate
了吗?MKMapView做了所有这些。。。不需要使用“计时器”。(见附件)