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
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
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.
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.
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 ...!
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