如何在 Xcode 6.3.2 中请求用户位置 [重复]

Posted

技术标签:

【中文标题】如何在 Xcode 6.3.2 中请求用户位置 [重复]【英文标题】:How to request user location in Xcode 6.3.2 [duplicate] 【发布时间】: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)

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

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

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

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

【讨论】:

那么如何查看授权状态呢?我假设我会在 locationManager.requestWhenInUseAuthorization 之前做一个 if then 语句,但我不知道用什么命令来检查它(对不起,我不熟悉如何引用所有不同的词汇部分代码)。 您应该真正阅读 Xcode 文档中的 CLLocationManager 类参考。有一个类方法authorizationStatus可以让你查询它。

以上是关于如何在 Xcode 6.3.2 中请求用户位置 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中从 UIActivityViewController 共享用户位置

在 Xcode 中使用拆分数据查找用户位置附近的数据

Xcode MapKit:如何在特定位置输入时触发事件[关闭]

不知道如何在 SwiftUI (Xcode 12.4) 中打开地图

XCode:无缝保持位置更新

如何使用Firestore Geopoint为社交媒体应用程序(swift Xcode)获取基于位置的帖子