Simulation des mises à jour de position sur le simulateur iPhone

Je veux permettre aux users de définir les informations GPS sur le simulateur de l'iPhone via une interface graphique.

Mais je ne suis pas sûr de savoir comment archiver cela – il semble que cet outil appelé iSimulate le fait d'une manière ou d' une autre en installant son propre SDK . Mais je ne peux pas comprendre comment ils "outrepassent" / "pirater" le simulateur par cela.

Merci!

Pour autant que je sache, iSimulate n'utilise pas de hacks. C'est un code qui s'exécute dans votre application sur le simulateur qui communique avec un périphérique sur le réseau. Lorsqu'il reçoit des messages de l'appareil (touches, GPS, accélération), il simule ces events en appelant le code de votre application comme si le système les avait déclenchés.

Par exemple, pour recevoir des mises à jour d'location GPS, vous devez créer une instance de CLLocationManager, puis configurer l'une de vos classs comme étant son délégué. Eh bien, sur le simulateur de l'iPhone, vous pouvez à la place démarrer le code qui envoie de faux messages à votre délégué à la place. Si vous appelez simplement la méthode d'un délégué comme ceci:

[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation]; 

Votre code n'aura pas à savoir que la mise à jour de l'location est fausse. Si vous voulez avoir envie, vous pouvez créer une nouvelle class qui implémente toutes les methods publiques de CLLocationManager mais qui envoie des faux messages à la place. (Puisque Objective-C est dynamicment typé, il n'aura pas besoin d'être une sous-class, tant qu'il répond à tous les messages que vous envoyez.)

En remarque, vous pouvez utiliser ces macros de compilateur pour conserver le simulateur de code uniquement:

 #if TARGET_IPHONE_SIMULATOR locationManager = (id)[[MyFakeLocationManager alloc] init]; #else locationManager = [[CLLocationManager alloc] init]; #endif 

Ajout d'une deuxième réponse car il y a maintenant des fonctionnalités embeddedes dans Xcode (≥4.2). Il existe deux façons de simuler les mises à jour de position:

  • Dans le simulateur iOS, sous "Debug / Location", vous pouvez spécifier une latitude / longitude constante ou sélectionner plusieurs profils prédéfinis comme "City Run" ou "Freeway Drive".
  • Dans Xcode, il y a une nouvelle icône d'location dans le débogueur, juste à côté du button Step Out. Il vous permet de sélectionner plusieurs villes codées dans le monde entier et d'append un file GPX personnalisé à votre projet. La bonne chose à propos de la simulation de localization dans Xcode est qu'il fonctionne également sur l'appareil (n'oubliez pas de le désactiver à nouveau, sinon votre timezone automatique sera erroné!). Le file GPX personnalisé est sympa, même s'il plante parfois Xcode si le file GPX n'est pas reconnu. Assurez-vous d'utiliser <wpt> balises <wpt> :
 <?xml version="1.0"?> <gpx version="1.1" creator="Xcode"> <wpt lat="47.52789018096815" lon="7.385249894876031"></wpt> <wpt lat="47.52720984945248" lon="7.382647784661411"></wpt> ... </gpx> 

Le simulateur iOS dispose d'une simulation complète de l'location. Dans le menu "Déboguer", vous pouvez explorer vos différentes options de localization.


Réponse originale publiée sous NDA.

Consultez l'input en bas à droite sur cette page . Je suis sous la LDN, donc je ne peux rien dire si ce n'est que cela m'a fait économiser beaucoup d'argent. 🙂

1: http://developer.apple.com/technologies/ios5/

Vous pourriez vouloir vérifier mon FTLocationSimulator chez http://github.com/futuretap/FTLocationSimulator

Il lit un file KML généré par Google Earth pour fournir des mises à jour de localization en continu. Il met également à jour le point bleu userLocation dans un MKMapView avec les mises à jour de localization simulées.

Dans Xcode 4.2, nous pouvons simuler. Il y a un symbole d'location dans la zone de debugging (pendant que vous exécutez l'application). Il existe des locations prédéfinis. Nous pouvons également append de nouveaux files GPX

Hy stephanos,

Les informations du GPS ne peuvent pas être modifiées. Il est protégé et je ne crois pas que iSimulate puisse le changer.

Pour autant que je sache, iSimulate est un outil pour envoyer des commands d'un appareil au simulateur de l'iPhone, comme l'accéléromètre, les touches, l'orientation, etc., y compris l'location GPS actuel.

Le SDK d'iSimulate fonctionne avec l'application. Vous devez installer l'application dans l'appareil et append le SDK à votre projet, de sorte que vous n'avez pas besoin de buld et exécuter votre application sur l'appareil tout le time que vous feriez normalement.

À votre santé,
VFN

Juste pour étendre @Ortwin Gentz ​​réponse:

Si vous avez besoin de plus de config de chaque point GPS dans votre file gpx. Jetez un oeil à cette page:

http://www.topografix.com/gpx_manual.asp

Il vous indique exactement comment vous pouvez fournir d'autres détails comme la vitesse et la hauteur d'un point spécifique.