- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试在我的 iOS 应用程序中使用定位服务,但由于某些原因 requestWhenInUseAuthorization
无法正常工作。当用户第一次使用该应用程序时,提示会正常要求权限,但是当您第二次打开该应用程序时,由于某种原因 didChangeAuthorizationStatus
方法未被调用,因此我无法显示用户当前在 map 上的位置。
我的代码如下:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
var config:NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
config.URLCache = NSURLCache(memoryCapacity: 2 * 1024 * 1024, diskCapacity: 10 * 1024 * 1024, diskPath: "MarkerData")
markerSession = NSURLSession(configuration: config)
}
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.startUpdatingLocation()
mapView.delegate = self
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
}
}
最佳答案
首先,您需要在 info.plist 文件中添加 NSLocationWhenInUseUsageDescription
或 NSLocationAlwaysUsageDescription
(如果您想在后台使用)。见下图:
接下来,在您的 swift 文件中,您需要在 viewDidLoad()
locationManager.requestWhenInUseAuthorization()
或 locationManager.requestAlwaysAuthorization()
方法。
最后,您可以在 locationManager 委托(delegate)方法中执行 mapView.camera = GMSCameraPosition(target: locations.last!.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
。
示例代码:
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager = CLLocationManager();
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var camera = GMSCameraPosition.cameraWithLatitude(-33.86,
longitude: 151.20, zoom: 6)
var mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
mapView.myLocationEnabled = true
self.view = mapView
locationManager.delegate = self
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyBest
if #available(iOS 8.0, *) {
print("iOS >= 8.0.0")
locationManager.requestAlwaysAuthorization()
}
locationManager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println(locations.last)
var mapView = self.view as! GMSMapView
mapView.camera = GMSCameraPosition(target: locations.last!.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
}
}
你可以this post ,了解有关 iOS 8 中 LocationManager 更改的更多详细信息。
关于ios - CLLocationManager requestWhenInUseAuthorization() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661963/
我正在尝试创建一种 locationServices 权限身份验证,只有当应用程序具有 locationServices 权限时,您才能使用该应用程序。因此,如果用户拒绝 locationManage
我有一个关于我正在制作的应用程序的问题,加载的第一页询问用户是否允许使用 requestWhenInUseAuthorization 方法使用他们的位置。他们要么授予它,要么不授予它,这很公平,但如果
我正在使用 swift 为 iOS 9.3 编写一个应用程序,需要一张 map 来显示用户位置。我初始化 CLLocationManager 及其委托(delegate),我配置 info.plist
当我的观点出现时: struct TurnOnLocation: View { var body: some View { ZStack { C
我正在尝试使用位置管理器检索用户在应用程序中的位置;正如苹果文档中所解释的,我创建了以下方法: func startReceivingLocationChanges() { let autho
错误: Trying to start MapKit location updates without prompting for location authorization. Must call
错误截图: 代码: if (_locationManager == nil) { _locationManager = [[CLLocationManager alloc] init
我在 plist 上有这段代码: NSLocationUsageDescription Usage NSLocationWhenInUsageDescription WhenIn NSLocation
我正在尝试在我的 iOS 应用程序中使用定位服务,但由于某些原因 requestWhenInUseAuthorization 无法正常工作。当用户第一次使用该应用程序时,提示会正常要求权限,但是当您第
在我的 viewDidLoad 方法中,我有 locationManager = [[CLLocationManager alloc]init]; // initializing locationMa
我的应用曾经使用 requestAlwaysAuthorization 和 NSLocationAlwaysUsageDescription 的 Info.plist 条目。 我将其更改为使用 req
我正在尝试对用户的位置状态进行验证。我实例化了 CLLocationManager,每当我尝试调用 requestAlwaysAuthorization 或 requestWhenInUse 时,我都
我希望我的应用显示用户的位置,但它不要求 WhenInUseAuthorization。我在 Info.plist 中添加了 NSLocationWhenInUseUsageDescription 键
我正在尝试使用 CLLocationManager 获取用户的位置。这是我的简单代码: if(IS_OS_8_OR_LATER) { if ([self.locationManager res
让 tvOS 提示用户进行位置数据授权似乎有点麻烦。我从字面上复制并粘贴了 iOS 的工作代码,它似乎没有提示用户。我正在使用下面列出的代码以及带有字符串值的 NSLocationWhenInUseU
我试图让我的 AppProject iOS 8 准备就绪。我读了很多关于 [_locationManager requestWhenInUseAuthorization]; 和plist中的条目 NS
我在主线程上调用 -[CLLocationManager requestWhenInUseAuthorization]。我已经设置了我的委托(delegate),并在 info.plist 中为 NS
这是我的代码,显示 map 上当前位置的警报和蓝点: MapName.h #import #import #import @interface MapName : UIViewControlle
我正在使用最新的 Xcode 版本开发一个处理地理定位的应用程序。我使用这行代码并且已经在我的 plist 文件中添加了描述: [self.locationManager requestWhenInU
我正在尝试在我的 iOS 应用程序上使用用户位置。该应用程序适用于 iOS 7,但不适用于 iOS 8。 我都试过了。看了一堆教程,我知道在 iOS 8 中我们需要调用 requestWhenInUs
我是一名优秀的程序员,十分优秀!