locationManager授权无效

时间:2016-03-11 23:26:59

标签: ios objective-c cllocationmanager

我有一个应用程序,我试图获得LocationManager的授权显示。我让它为Always工作,但后来试用了。现在我无法让任何一个人工作

我已经放置了 NSLocationWhenInUseUsageDescription字符串启用播放 在我的Info.plist

在我的app委托中,我已经放了

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

 self.locationManager = [[CLLocationManager alloc]init];


    self.locationManager.delegate= self;


    return YES;
}
- (void)locationManager:(CLLocationManager *)manager
didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorized){

        NSLog(@"ok");

    }
    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedAlways){
        NSLog(@"Always");
    }
    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
        NSLog(@"WhenInUse");
    }
    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusRestricted){
        NSLog(@"restricted");
    }

    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied){
        NSLog(@"denid");
        AlertView2 = [[UIAlertView alloc] initWithTitle:@"App Permission Denied"
                                                message:@"Please go to Settings/Privacy/Location Services to enable Always for this app to function properly."
                                               delegate:nil
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
        [AlertView2 show];

    }
    if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined){
        NSLog(@"undetermined");

            [self.locationManager requestWhenInUseAuthorization];

    }
}

我不确定这是我原来的情况,但我已尝试过所有可能的配置,但显然不是。

有人可以帮我把这件事搞定。我更喜欢WhenInUse,但在这一点上我会采取任何行动

顺便说一句,我确实得到了NSLog在最后一个状态下未确定的回调,但是没有调用包含的代码。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

有几点想法:

  • 我建议您在请求权限之前设置SELECT c.cookie, c.channel, c.order_id, c.order_timestamp, (SELECT Min(sub.order_id) FROM Table sub WHERE sub.order_timestamp >= c.order_timestamp AND sub.cookie = c.cookie) as new_id FROM Table c

  • 在您申请权限之前,delegate是什么?在您懒得申请权限之前,您应该检查它,因为如果他们已经拒绝许可,您想告诉他们修复设置。如果以前拒绝了许可,请求许可不会导致任何事情(包括状态变更)。

答案 1 :(得分:0)

试试这个......

@FormUrlEncoded
    @POST("/verify/phone/")
    public void postVerifyPhone(@Field("userID") String userID, Callback<Response> resonse);

答案 2 :(得分:0)

所以我是正式的白痴。 我查看了我的info.plist,就在那里。我复制并粘贴了Alway Description并将其更改为WhenInUse,当它没有工作时我删除了原件并保留了副本并将其更改为Always。然而,当扩展列以查看整个事物时,它是一个附加到末尾的-2,所以它没有正确格式化,所以它没有工作。一旦我删除-2它就会很棒。我已经更改了原始帖子以显示它是如何工作的。感谢您的帮助,我将确保解决您提出的问题。