2010-09-24 3 views
11

I Want pour émettre cette alerte:UIAlertView like "Activer les services de localisation pour permettre aux cartes de déterminer votre position". Réglages + Annuler

Turn On Location Services to allow maps to determine your location 

je besoin à la fois "Paramètres" et "Annuler" exactement comme l'application "cartes".

« Paramètres » devrait ouvrir Paramètres-> Général-> services de localisation

Je ne trouve pas le moyen d'ouvrir la page des paramètres.

Pouvez-vous m'aider?

Merci

+0

Quelqu'un a trouvé un moyen de le faire? – kape123

+0

Cette question a la bonne réponse http://stackoverflow.com/questions/9092142/ios-uialertview-button-to-go-to-setting-app –

Répondre

14

Créer l'alerte est assez simple, il est juste un (Faux-) UIView modal.

Cependant, n'est pas possible pour ouvrir l'application Settings par programme, du moins pas sans utiliser de méthodes privées qui empêcheront votre application d'être approuvée pour l'App Store.

2

Il n'est pas possible d'ouvrir le volet de configuration par programme à ce moment. Voir here.

2

Ce n'est pas quelque chose que vous ajoutez. Cet écran apparaît lorsque les applications veulent utiliser les services de localisation, mais il est désactivé dans les paramètres.

La même chose se produit avec les notifications push.

6

Ce n'est pas possible d'accomplir seul. Cependant, si votre application a besoin d'accéder aux services de localisation, le système d'exploitation présentera une boîte de dialogue comme celle-ci pour vous, comme indiqué ci-dessous.

Modifier: Brant mentionné ci-dessous que "le message peut être personnalisé en définissant la valeur de la propriété purpose sur votre CLLocationManager."

alt text

+0

Ceci est un message d'alerte personnalisé. Sinon, comment l'iOS sait-il trouver et enregistrer des choses à proximité? Vous vous demandez comment personnaliser le message? – wanghq

+2

@wanghq: Le message peut être personnalisé en définissant la valeur de la propriété 'purpose' sur votre' CLLocationManager'. –

+2

'purpose' est obsolète dans iOS 6.0 - http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/DeprecationAppendix/AppendixADeprecatedAPI.html # // apple_ref/occ/instp/CLLocationManager/but – user427969

1

Comment autre dit, vous ne pouvez pas l'application Paramètres ouverts par programme si vous voulez que votre application sur l'App Store.
Cette popup est automatiquement "générée" au lancement de votre application si elle prend en charge et utilise des fonctions déterminées comme le service de localisation.
Vous pouvez trouver plus d'informations sur ce service sur la bibliothèque de référence: https://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=CoreLocation

5

Vous ne pouvez pas ouvrir la page des paramètres spécifiques comme le général, Locatios etc., mais vous pouvez ouvrir la page des paramètres dans iOS 8.

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

Version 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) 
} 
Questions connexes