2010-11-22 9 views
16

Şu anki başvurum geçerli konumu kullanmak için yalnızca bir kez soruyor. Kullanıcı izin vermiyorsa, genel ayarlarda konum uyarısını sıfırlamadığı sürece tekrar sormaz. Bu izin verilebilmesi için kullanıcıya uygulamanın içinden bir şans vermesini istiyorum. Başka bir deyişle, belirli bir düğmeye basarsa iletişim kutusu tekrar görünmelidir. Mümkün mü?CLLocation izni almak için tekrar danışın

Tavsiyeniz için teşekkürler.

+0

Muhtemelen değil. Bu yer uyarılarını sıfırlamak zorunda kalmanın noktasıdır. – ryyst

cevap

9

Yeni Cevap: Bunu yapmak, daha önce iOS sürümleri destekleyen varsa

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
[[UIApplication sharedApplication] openURL:url]; 

ve bu ele alınabilir emin olmak için:

Şimdi iOS 8'de programlama yoluyla cihaz ayarları uygulamasını açmak CAN
if (&UIApplicationOpenSettingsURLString != NULL) { 
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
    [[UIApplication sharedApplication] openURL:url]; 
} 
else { 
    //Earlier iOS version 
} 

Eski Yanıt: Yerel açılır pencerenin görünmesini (ve kullanıcının ayarlar sayfasına atlamasına izin vermeyi) zorlaştırmanın bir yolu yoktur. Yer hizmetleri global cihaz düzeyinde veya olmasın etkin olup olmadığını

+(CLAuthorizationStatus)authorizationStatus 

Ayrıca öğrenebilirsiniz: CLLocationManager:

Kullanıcı uygulamanız için konum hizmetlerini izin olup olmadığını belirlemek için aşağıdaki yöntemi kullanabilirsiniz de: CLLocationManager: konumları hizmetleri cihazda etkinleştirmek eğer

+(BOOL)locationServicesEnabled 
+0

Bu sadece kısmen doğrudur. locationServicesEnabled, yalnızca uygulamanızın konum izinlerini değil, cihaz ayarını size söyler. – Acey

14

[CLLocationManager locationServicesEnabled] sadece size söyler.

belgesine göre this belgesi.

[CLLocationManager authorizationStatus]

sonuç senin settings.app onu göndererek konum hizmetlerinin kullanımını sağlamak için kullanıcının söyleyebilirdi kCLAuthorizationStatusDenied ise bu

typedef enum { 
    kCLAuthorizationStatusNotDetermined = 0, 
    kCLAuthorizationStatusRestricted, 
    kCLAuthorizationStatusDenied, 
    kCLAuthorizationStatusAuthorized 
} CLAuthorizationStatus; 

birini dönecektir