78 votes

XCode / simulateur iOS: Déclencher un important changement d'emplacement manuellement

Est-il un moyen pour informer manuellement l'appareil à l'envoi d'une importante modification de l'emplacement de notification qui se réveillent toutes les applications enregistrées pour cette notification? C'est à des fins de test, et je me rends compte de cette API privée d'appel serait rejeté lors de la soumission à l'app store.

194voto

MagicSeth Points 2772

Donc deux réponses:

A) sauter dans un train :-)

B) Utiliser le simulateur. Dans iOS 5.x simulateur, il y a un menu déboguer, qui dispose d'un emplacement au sous-menu. Choisissez l'autoroute en voiture. Cela va démarrer le simulateur sur un voyage imaginaire vers le bas de la pittoresque 280 dans le Nord de la Californie. Il vous donne tout, mais la vue: votre application obtiendrez Importante Modification de l'Emplacement des mises à jour, et sera également lancé en arrière-plan si elle a été suspendue.

Pour vérifier que vous êtes réellement en mouvement, lancement de safari dans le simulateur, et aller à maps.google.com et cliquez sur la petite piste de mon bouton d'emplacement. Vous devriez être en mouvement.

Génial! Maintenant comment faire pour déboguer le problème du cycle de vie d'être lancé par le système? Facile! XCode attendre à votre application d'être lancé pour démarrer le débogage. À partir du menu configuration, choisissez modifier le régime. Dans le Système, et l'onglet Info, pour le "Lancement" réglage de choisir : "Attendez Mon.application à lancer".

Exécutez votre application une fois dans le simulateur, de sorte qu'il commence le suivi de l'emplacement des mises à jour, puis la force de le quitter, de sorte qu'il est suspendu. Ajouter un point d'arrêt dans votre application a fait fini le lancement de la fonction, et d'attendre. Dès que votre simulateur est allé assez loin, votre demande sera réveillé, votre point d'arrêt frappé, et vous êtes dans l'argent.

Mais vraiment, le trajet en train est plus amusant.

18voto

Chris Points 425

Eh bien, j'ai trouvé que je peux le faire en cliquant sur et en dehors de l'Aéroport de mode et/ou WiFi. Peut-être démarrer l'application avec l'appareil en mode avion, puis fermez l'application et désactiver le mode avion. Qui va allumer le GPS et la force d'un emplacement de mise à jour pour être expédié.

4voto

davsan Points 3920

J'ai aussi voulu tester la relance de mon résilié application qui utilise une grande partie de la surveillance du changement. J'ai écrit un bout de code afin qu'elle affiche une notification locale quand il est lancé par l'emplacement de la clé dans les options de lancement du dictionnaire.

J'ai couru mon application dans le simulateur. Puis il l'a tuée à partir de la barre multitâche. Puis-je régler l'emplacement du simulateur iOS à un emplacement personnalisé. J'ai quitté le simulateur et a commencé à nouveau. Mon application a reçu le lieu significatif de mise à jour et a montré la notification locale.

3voto

Bardh Lohaj Points 6

J'ai été aux prises avec le même problème, comment faire pour tester 'startMonitoringSignificantLocationchanges" et vérifier si mon application est emplacement de réception des mises à jour lorsqu'elle est suspendue.

Je ne parvenais pas à attraper l'exécution sur un point d'arrêt mais j'ai réussi à voir les résultats de mon travail de mise en œuvre par l'envoi du nouvel emplacement des données sur le serveur.

L'ensemble des flux: - Mis en œuvre avec 'startMonitoringSignificantLocationchanges" et un appel API pour mon serveur pour mettre à jour l'emplacement de la latitude et de la longitude - Définir l'emplacement des mises à jour en arrière-plan de la capacité de vrai - Exécutez l'application, de sorte que le régisseur est lancé, et l'application est à l'écoute des modifications de l'emplacement - Fermée de Force de l'app - Définir le debug->localisation sur simulateur à l'autoroute en voiture - Ouvert les cartes pour voir si l'emplacement est en train de changer Attendu sur le serveur pour voir l'emplacement des mises à jour et a été l'obtention de nouveaux résultats de toutes les 3 minutes environ

Cependant, je ne suis toujours pas sûr si ce est assez fine sur un périphérique réel.

Je suis en train de travailler sur Xcode Version 6.0.1 (6A317); testé sur Simulateur iPhone 5s (8.0).

1voto

sliver Points 1084

En fonction de votre scénario, je suggère deux solutions:

  1. Utilisez une Minuterie ou LocalNotification que périodiquement des appels stopMonitoringSignificantLocationchanges suivie par startMonitoringSignificantLocationchanges qui doit déclencher un nouveau lieu d'être envoyé à votre code (peut être le même qu'avant).

  2. Construire votre propre Simulateur GPS que vous démarrez en debug et qui appelle les mêmes délégué méthodes comme CLLocationManager ferait.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X