cllocation اطلب مرة أخرى الإذن
-
27-09-2019 - |
سؤال
حاليًا يطلب طلبي مرة واحدة فقط للحصول على إذن لاستخدام الموقع الحالي. إذا لم يسمح المستخدم ، فهو لا يسأل مرة أخرى ما لم يعيد تعيين تحذير الموقع في الإعدادات العامة. أود أن أعطي المستخدم فرصة من داخل التطبيق لمنح هذا الإذن لاحقًا. بمعنى آخر ، يجب أن يظهر مربع الحوار مرة أخرى إذا ضغط على زر معين. هل هذا ممكن؟
شكرا لنصيحتك.
المحلول
إجابة جديدة: الآن في iOS 8 ، يمكنك فتح تطبيق إعدادات الجهاز برمجيًا:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
إذا كنت تدعم إصدارات iOS السابقة وترغب في التأكد من أنه يمكن معالجة ذلك ، فقم بذلك:
if (&UIApplicationOpenSettingsURLString != NULL) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
else {
//Earlier iOS version
}
الإجابة القديمة: لا توجد طريقة أعرفها لإجبار النافذة المنبثقة الأصلية على الظهور (والسماح للمستخدم بالقفز إلى صفحة الإعدادات).
يمكنك استخدام الطريقة التالية لتحديد ما إذا كان المستخدم قد سمح لخدمات الموقع بتطبيقك: CllocationManager:
+(CLAuthorizationStatus)authorizationStatus
يمكنك أيضًا معرفة ما إذا كان يتم تمكين خدمات الموقع عالميًا على مستوى الجهاز أم لا ، أيضًا: CllocationManager:
+(BOOL)locationServicesEnabled
نصائح أخرى
[CLLocationManager locationServicesEnabled]
فقط أخبرك إذا كانت خدمات المواقع تمكين الجهاز.
وفقا ل هذه وثيقة.
[CLLocationManager authorizationStatus]
سيعود أحد هؤلاء
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
إذا كانت النتيجة kCLAuthorizationStatusDenied
يمكن أن تخبر المستخدم بالسماح باستخدام خدمات الموقع عن طريق إرساله إلى الإعدادات.