iOS de crash de capture, les informations de débogage.. les Attraper et de les envoyer par courriel à l'équipe de Dev
Récemment, nous avons rencontré une situation où nous voulions voir les informations de débogage de l'application par un utilisateur sur son terminal. Donc, ce que je cherche, c'est un moyen de trouver le journal sur le périphérique, la coller en tant que texte en ligne sur un mail et permettre à l'utilisateur d'envoyer..
Des idées? Voici les questions à nouveau..
1)Trouver un journal de débogage sur le périphérique
2)ouvrir le fichier et de fixer le contenu du fichier sous forme de texte inséré dans le mail.
3)Permettre à l'utilisateur de e-mail la prochaine fois app se lance..
Merci,
- iTunes fait le fait pour vous automatiquement. Vérifiez votre iTunes-connexion au compte.
Vous devez vous connecter pour publier un commentaire.
Merci pour toutes les entrées les gars.. j'ai dévié de vos solutions en une seule qui permettrait de résoudre mon problème.. Voici ce que j'ai fait il pour être.. Sûrement, je n'ai pas compiler le code, c'est un mi cuit de code.. mais je vais repasser bientôt une fois que je l'implémenter dans mon code..
NSLog dans le fichier Comment NSLog dans un fichier LOG2FILE
Attraper le Crash et le Journal de trop dans un Fichier
Première, de créer une fonction qui va gérer l'erreur et la sortie de la console (ainsi que tout ce que vous voulez faire avec elle):
Ensuite, ajouter le gestionnaire d'exception à votre délégué d'application:
Définir une variable dans l'info.plist appelé s'est Écrasé et puis lire/écrire de cette façon
Une fois que l'application est lancée lire les infos.plist et invite l'utilisateur à soumettre le crash de journaux..
NSUserDefaults
?+ canSendMail
méthodePour l'enregistrement de vos données, utilisez Cocoalumberjack. Il est beaucoup plus rapide que NSLog et peut être activée/désactivée de façon dynamique. Elle fournit également des options pour enregistrer les données dans un fichier. NSLog va ralentir votre application et remplit le journal de la console. Aussi, vous ne voulez pas vous connecter trop en général. Vous ne pouvez pas vous en toute sécurité, faire de journalisation lorsque l'accident se produit. Donc, plutôt une fois que vous avez compris où le problème de la zone est, ajouter un peu plus d'exploitation forestière et essayer de le reproduire, par exemple à l'aide de tests automatisés cadres comme KIF.
Pour la capture de rapport de crash, vous ne devez rien d'autre qu'une solution basée sur le framework open source PLCrashReporter, qui peut en toute sécurité attraper les accidents, aussi lorsque vous app est déjà dans l'app store! L'interception d'Exception comme suggéré par d'autres n'est pas recommandé, vérifier cet article de voir pourquoi!
iTunes Connect vous propose de visualiser quelques-uns des rapports d'incident de trop, mais cela prend jusqu'à 2 semaines pour voir, mais de loin pas tous comme, par exemple, souligné par le Caméra+ développeurs. Afin de mieux vous servir de votre propre solution.
PLCrashReporter vous enverra standard apple formaté les rapports de plantage, prêt pour symbolication, si vous savez où l'incident se produit dans votre code, y compris les numéros de ligne.
Certaines solutions basées sur PLCrashReporter sont:
Les solutions proposées, soit autoriser l'envoi des données automatiquement au prochain démarrage ou en demandant à l'utilisateur si il/elle s'engage à envoyer.
Pour la connexion & de l'analyse Swift vous pouvez utiliser SwiftyBeaver, c'est un plein de fonctionnalités de journalisation plate-forme open-source Swift 2 & Objective-C Cadre, chiffré stockage dans le cloud et le Mac App.
Site web: https://swiftybeaver.com
Cadre (soutien): https://github.com/SwiftyBeaver/SwiftyBeaver
Disclaimer: je suis l'un des fondateurs.
C'est une solution qui attrape des accidents comme ils arrivent, il va donner plus lisible le code d'info qu'un crash. Il manque quelques de la de crash, mais que Jusqu'dit, vous devriez être en mesure d'accéder à ceux-ci de toute façon.
De l'autre, de SORTE question sur Xcode 4.2 revenant toujours à principal à s'écraser. La réponse n'utilise cette méthode et vous pouvez l'étendre à garder une trace de collision.
mettre en place votre propre gestionnaire d'exception dans l'AppDelegate
Mise à JOUR
J'ai fait un retour en arrière et cette solution a été offert par Zane Claes à la question Xcode 4.2 de débogage n'est pas symbolicate de la pile d'appel
Il offre une solution générale dans sa deuxième commentaire. "Je trouve qu'il est utile d'écrire le crash d'un fichier et invite l'utilisateur à le soumettre sur le prochain lancement (en mode release uniquement, afin de ne pas obtenir de la manière de débogage). Cela me permet d'obtenir d'excellents rapports de bug... et les utilisateurs savent que leur problème est adressé" je ne comprends pas que tout le monde voudrais demander à cette de l'utilisateur, mais il y a des super-utilisateurs qui serait heureux de vous aider.
Vous pouvez bien sûr inclure un ne plus afficher ce message à nouveau le bouton de sorte que les gens ne sont pas frustrés par le mécanisme de présentation de rapports.
Sinon,
Vous pouviez accéder à un serveur avec l'info (je ne sais pas si il fonctionnera comme il est en panne, mais de l'enregistrer et de temps en temps essayer de POSTER sur un serveur avec les détails)
J'ai été en utilisant Crittercism pour automatiser cela pour moi. Travaux de contrôle et dans la production de trop.
BugSense fournit des rapports d'incidents des services pour iOS. En plus de fournir une entièrement symbolicated trace de la pile, BugSense fournit analytics pour votre plante, sur l'ensemble de vos applications.
Je pense que c'est mieux de le faire par courriel, parce que quand votre application devient populaire, vous aurez besoin pour gérer tous ces e-mails manuellement, tandis que BugSense le fait automatiquement. Cependant, BugSense est aussi open-source, donc vous pouvez modifier son fonctionnement interne de la manière que vous voulez et ajouter des fonctionnalités supplémentaires.
En plus de cela, vous obtenez de nous travailler pour vous pour gratuit: Si vous avez une idée sur une nouvelle fonctionnalité sympa que vous souhaitez que nous avons, nous allons le faire -à condition que nous pensons qu'il est cool, trop.
Avertissement: j'écris le code pour BugSense-iOS.cadre.
Si vous utilisez le TestFlight avec leur SDK c'est automatisé. C'est un très beau système. Pour les versions de test uniquement, cependant.
https://testflightapp.com/sdk/
Voir Ryan réponse dans Comment faire pour afficher NSLog déclaration de l'iphone .application fichier pour un utilitaire gratuit fourni par Apple.
Mais ce n'est toujours pas de solution pratique. Si vous pouvez vous permettre un nouveau build, vous devriez changer votre journalisation au sein de l'application. Jano a quelques très bonnes idées sur ce en Comment NSLog dans un fichier. En particulier l'option 2 devrait le faire sans trop d'effort.
En général, je recommande de cacher natif de journalisation derrière une façade ou d'un modèle similaire, juste au début du projet, peu importe quel langage de programmation est utilisé.
J'ai utilisé le code ci-dessous pour attraper les journaux de débogage - Swift 4.1