يمر اختبار SocationServicesEnabled عندما يتم تعطيلها في ViewDidload

StackOverflow https://stackoverflow.com/questions/3401757

  •  25-09-2019
  •  | 
  •  

سؤال

لدي تعطيل خدمات الموقع لتطبيقي في لوحة الإعدادات. أقوم بإجراء اختبار في ViewDiddload في وحدة التحكم في العرض لمعرفة ما إذا كان يتم تمكينها:

if([CLLocationManager locationServicesEnabled]) {
   //Do something now
}

يمر هذا الاختبار دائمًا لسبب ما. إذا حاولت الوصول إلى خدمات الموقع ، أحصل على خطأ Kclerrordenied لمدير الموقع. ما يعطي؟

هل أستخدم الاختبار الخاطئ؟

هل كانت مفيدة؟

المحلول

ال SOCATIONSERVICESENSABLED طريقة الفئة تختبر فقط الإعداد العالمي لخدمات الموقع. AFAIK ، لا توجد طريقة لاختبار ما إذا كان تطبيقك قد تم رفضه صراحة. سيتعين عليك الانتظار حتى يفشل طلب الموقع واستخدام طريقة CllocationManagerDelegate LocationManager: didfailwitherror: لفعل ما تحتاجه. على سبيل المثال:

- (void)locationManager: (CLLocationManager *)manager
       didFailWithError: (NSError *)error {

    NSString *errorString;
    [manager stopUpdatingLocation];
    NSLog(@"Error: %@",[error localizedDescription]);
    switch([error code]) {
        case kCLErrorDenied:
            //Access denied by user
            errorString = @"Access to Location Services denied by user";
            //Do something...
            break;
        case kCLErrorLocationUnknown:
            //Probably temporary...
            errorString = @"Location data unavailable";
            //Do something else...
            break;
        default:
            errorString = @"An unknown error has occurred";
            break;
        }
    }

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
    [alert show];
    [alert release];
}

انظر الوثائق على ثوابت Clerror في CllocationManager مرجع فئة لمزيد من الخيارات.

نصائح أخرى

iOS 4.2 يسمح الآن لأحد بتحديد ما إذا كان قد تم رفض خدمات الموقع من خلال CllocationManager +authorizationStatus طريقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top