138 votes

Débogage d'une application lors du lancement par notification push

Je suis actuellement en train de développer une application qui reçoit les Notifications Push. J'ai tout cela en travaillant à 100% par une page PHP. Il existe plusieurs types de notifications push mon application peut recevoir. PHP gère cela et envoie des paquets de données de mon application, qui sont tous reçu l'amende juste.

Toutefois, lorsque les utilisateurs "points de vue" la notification et mon application se lance, j'ai évidemment envie de prendre une autre action que je voudrais, si l'utilisateur vient de lancer l'application manuellement - et sur le dessus de que les, différentes actions selon la notification push type. J'ai eu ce travail très bien... structurellement.

Un de mes push types est censé ouvrir une UIView cela fait plusieurs connexions à différents serveurs et négocie les données d'avant en arrière. Cette UIView fonctionne bien lorsque, par exemple, déclenchée à partir du menu principal - toutefois, lorsque ma notification push est le déclenchement de cette UIView, les connexions socket n'agissent pas comme prévu.

Maintenant, ma question n'est pas sur les sockets, mais plus - Comment déboguer un tel problème?? À partir de ce que je peux dire (je suis relativement nouveau) lorsque l'application est lancée à partir d'une notification "push" il n'y a aucun moyen de lien que l'exécution du débogueur / console / etc... je vais avoir un moment difficile essayer de déboguer le code à l'aide de UIAlertViews, comme il ya beaucoup de lignes de communication et-vient entre les différents serveurs.

Tous les conseils que vous avez pour moi, ce serait grandement apprécié.

147voto

Louis Gerbarg Points 33025

Dans XCode < 4.0 (pour XCode >= 4, voir la réponse par delirus ci-dessous), vous pouvez maintenant configurer Xcode pour attacher le débogueur de l'application, une fois que vous le lancez, au lieu de lancer l'application via le débogueur. Cela vous permet de déboguer des choses qui varient en fonction de l'état de lancement de votre application, tels que les schémas d'URL, pasteboards, et les notifications push.

  1. Dans Xcode regarder dans la Source de la barre, et en deçà des Objectifs, il y aura des Exécutables.
  2. Afficher l'inspecteur pour votre application dans les exécutables.
  3. Cliquez sur l'onglet Débogage onglet de l'inspecteur.
  4. Décochez la case "Démarrer l'exécutable après le démarrage du débogueur"
  5. Cochez la case "Attendre pour le prochain lancement/push notification"

Désormais, lorsque vous cliquez sur débogage à partir de Xcode au lieu de lancer l'application une fenêtre s'affiche pour vous dire qu'il est en attente pour l'application à lancer. Puis, vous lancez l'application normalement sur le téléphone et Xcode s'y attache

124voto

matm Points 4329

Pour Xcode 4, vous devez:

  1. Modifier votre régime via "Les régimes" liste déroulante.
  2. Qu'à choisir votre produit - 'Exécuter MyApp.app " sur la gauche.
  3. Sélectionnez l'onglet 'Info' sur la droite.
  4. Et enfin choisissez "Attendre MyApp.application à lancer" option.

Plus ici dans "Personnaliser les fichiers Exécutables dans le Régime de l'Éditeur".

EDIT:
Dans le cas où vous manquez de journaux dans GDB, voir Louis Gerbarg de commentaire pour sa réponse.

3voto

drvdijk Points 3940

Je ne travaille pas avec les notifications push, donc je ne sais pas le fonctionnement exact de notifications push. Cependant, je voudrais essayer imitant la réception d’une notification push en laissant la méthode principale de votre programme de feindre une notification a été publiée si possible, ou en appelant de l’application : didFinishLaunchingWithOptions : UIApplicationDelegate méthode de l’intérieur la applicationDidFinishLaunching : méthode.

HTH - Cheers, Daan

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