【问题标题】:How to request user location in Xcode 6.3.2 [duplicate]如何在 Xcode 6.3.2 中请求用户位置 [重复]
【发布时间】:2015-06-17 15:19:17
【问题描述】:

我正在尝试在使用应用程序时请求用户的位置。我已将 NSLocationWhenInUseUsage 添加到我的 plist 中。该应用程序不会崩溃或以其他方式显示任何错误。该应用程序刚刚启动,没有任何弹出请求用户许可。

import UIKit
import MapKit 
import CoreLocation

class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

@IBOutlet weak var map: MKMapView!

var locationManager = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.


    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.requestWhenInUseAuthorization()
    locationManager.startUpdatingLocation()
    locationManager.requestWhenInUseAuthorization()

我还在我的代码中添加了这个函数:

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {

    println(locations)

另外,我不是一个熟练的程序员,所以更简单的答案会更好。

【问题讨论】:

    标签: swift dictionary ios8 xcode6


    【解决方案1】:

    没有任何弹出请求用户权限

    即使您拨打locationManager.requestWhenInUseAuthorization(),也不会出现对话框,除非 (1) 位置服务已打开,并且 (2) 此应用的位置授权未确定。

    换句话说,只有当用户可以进行有意义的授权时才会出现对话框。如果位置服务不可用、授权已被拒绝或此设备受到限制,则用户无法授权。

    【讨论】:

    • 那么如何查看授权状态呢?我假设我会在 locationManager.requestWhenInUseAuthorization 之前做一个 if then 语句,但我不知道用什么命令来检查它(对不起,我不熟悉如何引用所有不同的词汇部分代码)。 ——
    • 在这里查看我的解释:stackoverflow.com/a/30495310/341994
    • 这是用目标 c 编写的。我真的不明白,无法破译这个解释。如果我能找到可以查看代码并以这种方式学习的地方,那就太棒了。
    • 什么?我的答案不是用 Objective-C 或英语以外的任何语言编写的。它解释了你需要做什么的逻辑。这样做。
    【解决方案2】:

    正如马特在他的回答中所说,您需要先检查授权状态。如果你不确定,那么你应该调用 requestWhenInUseAuthorization。

    完成后,您需要等待对您的委托方法locationManager:didChangeAuthorizationStatus 的调用。当用户完成对位置服务的授权(或拒绝)时,将调用委托方法。

    【讨论】:

    • 那么如何查看授权状态呢?我假设我会在 locationManager.requestWhenInUseAuthorization 之前做一个 if then 语句,但我不知道用什么命令来检查它(对不起,我不熟悉如何引用所有不同的词汇部分代码)。
    • 您应该真正阅读 Xcode 文档中的 CLLocationManager 类参考。有一个类方法authorizationStatus可以让你查询它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2021-08-18
    • 2020-09-11
    相关资源
    最近更新 更多