在我的一个项目中,我必须将用户当前位置发送到Appdelegate中的Web服务器。当用户点击显示的警告的Ok按钮以获得用户的许可时,它工作正常。但是在我第一次运行应用程序时,权限警报显示在转到rootview Controller.Mean而经度和经度之后很晚。得到cllocation是0.00000f。如何在appdelegate强制获得许可或强行获取用户位置。
第二个想法如果用户拒绝轴的位置。警报没有显示其他时间。在这种情况下,获得cllocation的纬度和经度也是0.00000f。如何在同一时间显示权限警报2或两次以上我希望你能理解我的问题。
快乐编码
答案 0 :(得分:0)
根据您的场景,您必须在设置窗口的CLLocationManager
之前设置rootViewController
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
对于您的第二件事苹果默认情况下仅在用户提供权限时提出警告,然后致电CLLocationManagerDelegate method
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
并获取当前位置的纬度和长度。用户拒绝了位置服务,然后您必须引用this。
答案 1 :(得分:0)
您需要在CLLocationManagerDelegate
界面中设置AppDelegate
。
要启动CLLocationManager以获取位置,必须设置CLLocationManager类的某些属性。对于此实现,请使用以下代码片段:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Location manager settings
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
// Your code for rootViewController settings here
}
然后按如下方式实施CLLocationManagerDelegate
方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
CLLocation *userLocation = [locations lastObject];
}
userLocation
对象将是用户的当前位置。