web-dev-qa-db-fra.com

Crashlytics iOS - exception de capture de journal

J'ai trouvé un moyen de consigner les exceptions interceptées personnalisées dans le Crashlytics Android SDK, mais je ne trouve rien de tel pour le SDK iOS. Existe-t-il un moyen de consigner une exception interceptée avec Crashlytics sur iOS?

Voir Android explication: http://support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions

46
Magnus

Mike de Crashlytics et Fabric ici.

Vous pouvez désormais capturer des NSErrors enregistrés dans votre application iOS, tvOS ou OS X. Vous souhaitez utiliser:

[CrashlyticsKit recordError:error];

ou

Crashlytics.sharedInstance().recordError(error)

Cela vous permettra de capturer un bon nombre de NSErrors enregistrés par session utilisateur. Ceux-ci ne sont envoyés qu'à la relance de l'application. Les erreurs enregistrées sont regroupées par domaine d'erreur et code. Cela signifie que les problèmes d'erreur peuvent s'étendre sur de nombreux sites d'appels différents.

Voir Documentation

43
Mike Bonnell

Enfin Crashlytics a ajouté la fonctionnalité souhaitée 3.5.0 !!

[CrashlyticsKit recordError:error];

ou

Crashlytics.sharedInstance().recordError(error)

Référence

/**
 *
 * This allows you to record a non-fatal event, described by an NSError object. These events will be grouped and
 * displayed similarly to crashes. Keep in mind that this method can be expensive. Also, the total number of
 * NSErrors that can be recorded during your app's life-cycle is limited by a fixed-size circular buffer. If the
 * buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch
 * of your application.
 *
 * You can also use the -recordError:withAdditionalUserInfo: to include additional context not represented
 * by the NSError instance itself.
 *
 **/
- (void)recordError:(NSError *)error;
- (void)recordError:(NSError *)error withAdditionalUserInfo:(nullable CLS_GENERIC_NSDICTIONARY(NSString *, id) *)userInfo;

https://docs.fabric.io/ios/changelog.html#january-7-2016


L'HISTOIRE

Cela ne fonctionne pas comme prévu: le message est enregistré dans Crashlytics mais uniquement après le redémarrage de l'application et il n'enregistrera que le dernier message.

Jusqu'à présent, aucune des solutions mentionnées ici ne fonctionne. Il n'y a aucun moyen de suivre les exceptions gérées dans iOS à l'aide de Crashlytics.


Vous pouvez l'utiliser pour enregistrer toute exception

[[Crashlytics sharedInstance] recordCustomExceptionName:@"HandledException" reason:@"Some reason" frameArray:@[]];

Dans Crashlytics, vous le verrez dans le rapport d'erreur, mais avec le NON-FATALS type.

Si ce n'est pas le cas, les exceptions d'utilisation prévues sont enregistrées de la même manière Android les exceptions gérées le sont.

Ceci est disponible dans la version 3.0.7.

recordCustomExceptionName: raison: frameArray:

Cette méthode peut être utilisée pour enregistrer une seule structure d'exception dans un rapport. Cela est particulièrement utile lorsque votre code interagit avec des langues non natives comme Lua, C # ou Javascript. Cet appel peut être coûteux et ne doit être utilisé que peu de temps avant la fin du processus. Cette API n'est pas destinée à être utilisée pour consigner des objets NSException. Toutes les exceptions NSE à signaler en toute sécurité sont automatiquement capturées par Crashlytics.

https://docs.fabric.io/appledocs/Crashlytics/Classes/Crashlytics.html#//api/name/recordCustomExceptionName:reason:frameArray :

5
7ynk3r

Il n'est pas possible de consigner une exception interceptée dans iOS à l'aide du SDK Crashlytics. CLS_LOG peut être utilisé pour consigner des messages personnalisés, mais ces messages de consignation iront à Crashlytics uniquement avec les données de plantage suivantes. S'il n'y a pas de plantage, ces messages de journal ne se poseront jamais dans le tableau de bord Crashlytics. J'ai reçu une confirmation officielle de l'équipe d'assistance Crashlytics à ce sujet. La journalisation des exceptions prises dans iOS est là dans leur feuille de route.

3
Sinu Varghese

J'ai parcouru différents sites pour que cette fonctionnalité soit prise en charge pour IOS alternatif à Crashlytics.

J'ai trouvé que le crittercisme est le meilleur jusqu'ici .. @ Dima Je pense que c'est l'alternative à Crashlytics..try it.

Voici quelques liens utiles pour intégrer le crittercisme dans votre projet ...!

http://docs.crittercism.com/ios/ios.html#logging-handled-exceptions

http://www.raywenderlich.com/34050/overview-of-ios-crash-reporting-tools-part-2

@try {

     } 
@catch (NSException *exc) 
     {
        [Crittercism logHandledException:exc]
    }

Référez-vous à ces liens et voyez que cela vous est utile ou non ...!

2
Vidhyanand

Utilisez les lignes ci-dessous dans le bloc catch pour gérer l'exception interceptée personnalisée

NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);

comme expliqué pour iOS http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler

1
Aanabidden