gpt4 book ai didi

iOS 位置权限无法通过 Objective-C 显示

转载 作者:行者123 更新时间:2023-11-28 23:33:50 25 4
gpt4 key购买 nike

我创建了一个示例项目来获取用户位置。
但是当我运行该应用程序时,位置权限没有显示给我。
我的代码有什么问题吗?谢谢。

ViewController.h

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController<CLLocationManagerDelegate>

@property (nonatomic, strong) CLLocationManager *locationManager;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *latLabel;
@property (weak, nonatomic) IBOutlet UILabel *longLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

self.locationManager.delegate = self;
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];
}

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

CLLocation *currentLocation = [locations lastObject];
if(currentLocation != nil){
self.latLabel.text = [NSString stringWithFormat:@"%.2f",currentLocation.coordinate.latitude];
self.longLabel.text = [NSString stringWithFormat:@"%.2f",currentLocation.coordinate.longitude];
[self.locationManager stopUpdatingLocation];
}
}

@end

enter image description here

enter image description here

enter image description here

最佳答案

您需要先检查 locationServicesEnabled。如果它们已启用,请先调用 authorizationStatus 以了解您应用的实际授权状态。仅当状态为“未确定”时才请求授权对话框。

如果状态是其他任何状态,则无需请求授权对话框;它不会出现。

另一个问题是这段代码没有用:

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{

CLLocation *currentLocation = [locations lastObject];
if(currentLocation != nil){
self.latLabel.text = [NSString stringWithFormat:@"%.2f",currentLocation.coordinate.latitude];
self.longLabel.text = [NSString stringWithFormat:@"%.2f",currentLocation.coordinate.longitude];
[self.locationManager stopUpdatingLocation];
}
}

第一次 位置更新后,您正在调用 stopUpdatingLocation。但是您在第一次位置更新时获得有用位置的机会基本上为零,因为传感器刚刚开始预热。

(另请注意,在您的后台模式中检查“位置更新”是没有意义的。您不会在后台获得任何位置更新,除非您将位置管理器的 allowsBackgroundLocationUpdates 设置为 YES,并且你没有那样做。)

关于iOS 位置权限无法通过 Objective-C 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55732305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com