سؤال

لقد اختبرت جهازي (iPod Touch 2G iOS 4.1) إذا تم تمكين خدمات الموقع

permitted = [locationManager locationServicesEnabled];

وأحصل دائمًا على نعم سواء تم تمكين خدمات الموقع أم لا. أنا أتحدث عن الزر العام لخدمات الموقع وليس الزر المحدد للتطبيق. على iPad مع iOS 3.2.2 كل شيء يعمل بشكل جيد.

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

المحلول

عندما تقوم بتنفيذ المندوب لمدير الموقع ، يجب أن تقوم بتنفيذ didfailwitherror. ستحصل على الخطأ المناسب إذا لم يسمح المستخدم بالوصول إلى الموقع

تنص توثيق Apple:إذا رفض المستخدم استخدام تطبيقك لخدمة الموقع ، فإن هذه الطريقة تقارير أ kCLErrorDenied خطأ. عند تلقي مثل هذا الخطأ ، يجب عليك إيقاف خدمة الموقع.

نصائح أخرى

تذكر ذلك [locationManager locationServicesEnabled] هو تم إهماله منذ iOS 4.0. استخدم طريقة الفصل [CLLocationManager locationServicesEnabled] في حين أن.

يمكن استرداد الزر المحدد للتطبيق بواسطة

[CLLocationManager authorizationStatus]

عندما تستخدم

[CLLocationManager locationServicesEnabled]

ثم تفحص ما إذا تم تمكين SociationServices في النظام بأكمله. لذلك عندما تذهب إلى الإعدادات -> خدمات الموقع وترى هذا التبديل الأول. هذه الطريقة تُرجع حالة تلك الحالة ولا تتعلق بتطبيقك.

إذا كنت بحاجة إلى معرفة ما إذا كان تطبيقك لديه إمكانية الوصول إلى خدمات الموقع ، فاستخدم Pascalius إجابة.

سريع 3.1 إرجاع الوظيفة -> الحالة: Bool and Message: String

func isLocationEnabled() -> (status: Bool, message: String) {
    if CLLocationManager.locationServicesEnabled() {
        switch(CLLocationManager.authorizationStatus()) {
        case .notDetermined, .restricted, .denied:
            return (false,"No access")
        case .authorizedAlways, .authorizedWhenInUse:
            return(true,"Access")
        }
    } else {
        return(false,"Turn On Location Services to Allow App to Determine Your Location")
    }
}
if(![CLLocationManager locationServicesEnabled] || ([CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse && [CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedAlways))
{
        ; // app doesn't have access to localization to whatever you want
}

CllocationManager SociationServicesEnabled] سيعود لا عند تبديل زر إعداد المستخدم إلى إيقاف التشغيل ، عندها فقط حققت رقمًا.

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