2010-09-24 6 views
11

I Want per emettere questo avviso:UIAlertView come "Attiva i servizi di localizzazione per consentire alle mappe di determinare la tua posizione". Impostazioni + Annulla

Turn On Location Services to allow maps to determine your location 

ho bisogno di entrambe le "Impostazioni" e "Annulla" esattamente come le "mappe" applicazione.

"Impostazioni" dovrebbe aprire Impostazioni-> Generale-> servizi di localizzazione

non ho trovato il modo per aprire la pagina delle impostazioni.

Potete aiutarmi?

Grazie

+0

Qualcuno ha trovato un modo per farlo? – kape123

+0

Questa domanda ha la risposta corretta http://stackoverflow.com/questions/9092142/ios-uialertview-button-to-go-to-setting-app –

risposta

14

Creazione l'avviso è piuttosto semplice, è solo una (faux-) UIView modale.

Tuttavia, è possibile non possibile per aprire l'app Impostazioni a livello di programmazione, almeno non senza l'utilizzo di metodi privati ​​che impediscono l'approvazione dell'app per l'App Store.

2

In questo momento non è possibile aprire il riquadro di impostazione in modo programmatico. Fare riferimento a here.

2

Non è qualcosa che aggiungi. Lo schermo si presenta quando le applicazioni vogliono utilizzare i servizi di localizzazione ma è disattivato nelle impostazioni.

La stessa cosa accade con le notifiche push.

6

Questo non è possibile eseguire da soli. Tuttavia, se la tua applicazione ha bisogno di accedere ai servizi di localizzazione, il sistema operativo presenterà una finestra di dialogo come questa, come mostrato di seguito.

Modifica: Brant menziona di seguito che "il messaggio può essere personalizzato impostando il valore della proprietà dello scopo su CLLocationManager."

alt text

+0

Questo è un messaggio di avviso personalizzato. Altrimenti, come fa iOS a sapere "trova e registra cose nelle vicinanze". Ti stai chiedendo come personalizzare il messaggio? – wanghq

+2

@wanghq: il messaggio può essere personalizzato impostando il valore della proprietà 'purpose' su' CLLocationManager'. –

+2

'purpose' è deprecato in iOS 6.0 - http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/DeprecationAppendix/AppendixADeprecatedAPI.html # // apple_ref/OCC/instp/CLLocationManager/fine – user427969

1

Come altro detto, non è possibile aprire Impostazioni applicazione a livello di codice se si desidera che la vostra applicazione su App Store.
Questo popup viene automaticamente "generato" all'avvio della tua app se supporta e utilizza funzioni determinate come il Servizio di localizzazione.
è possibile trovare ulteriori informazioni su questo servizio sul Reference Library: https://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=CoreLocation

5

Non è possibile aprire la pagina delle impostazioni specifiche come il generale, Locatios ecc, ma è possibile aprire le impostazioni di pagina in iOS 8.

- (void)openSettings 
    { 
     BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL); 
     if (canOpenSettings) 
     { 
      NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
      [[UIApplication sharedApplication] openURL:url]; 
     } 
    } 
2

Versione Swift 2.0:

func showLocationSettingAlert() { 
    let alertController = UIAlertController(
     title: "Location Access Disabled", 
     message: "Location settings", 
     preferredStyle: .Alert) 

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) 
    alertController.addAction(cancelAction) 

    let openAction = UIAlertAction(title: "Open Settings", style: .Default) { (action) in 
     if let url = NSURL(string:UIApplicationOpenSettingsURLString) { 
      UIApplication.sharedApplication().openURL(url) 
     } 
    } 
    alertController.addAction(openAction) 
    self.presentViewController(alertController, animated: true, completion: nil) 
}