Crashlytics Android SDKでカスタムキャッチ例外を記録する方法を見つけましたが、iOS SDKではそのようなものを見つけることができません。Crashlyticsでキャッチした例外を記録する方法はありますかiOS?
Android説明: http://support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions を参照してください。
Crashlytics and Fabricのマイクはこちら。
IOS、tvOS、またはOS Xアプリで、記録されたNSErrorをキャプチャできるようになりました。使用したい:
[CrashlyticsKit recordError:error];
または
Crashlytics.sharedInstance().recordError(error)
これにより、ユーザーセッションごとにかなりの数のNSErrorを記録できます。これらはアプリの再起動時にのみ送信されます。ログに記録されたエラーエラーは、エラードメインとコードによってグループ化されます。これは、エラーの問題がさまざまなコールサイトに及ぶ可能性があることを意味します。
ドキュメント を参照してください
最後に、Crashlyticsは必要な機能3.5.0を追加しました!!
[CrashlyticsKit recordError:error];
または
Crashlytics.sharedInstance().recordError(error)
参照
/**
*
* 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
歴史
これは実際には期待通りに機能しません:メッセージはCrashlyticsに保存されますが、アプリを再起動した後のみで、最後のメッセージのみを保存します。
これまでのところ、ここで言及した解決策は機能しません。 Crashlyticsを使用してiOSで処理された例外を追跡する方法はありません。
これを使用して、例外をログに記録できます
[[Crashlytics sharedInstance] recordCustomExceptionName:@"HandledException" reason:@"Some reason" frameArray:@[]];
Crashlyticsでは、クラッシュレポートに表示されますが、NON-FATALS
タイプ。
意図されていない場合のイベント例外は、同じ方法で記録されますAndroid処理された例外です。
これはバージョン3.0.7で利用可能です。
recordCustomExceptionName:reason:frameArray:
このメソッドを使用して、単一の例外構造をレポートに記録できます。これは、コードがLua、C#、Javascriptなどの非ネイティブ言語と対話する場合に特に役立ちます。この呼び出しはコストがかかる可能性があるため、プロセスの終了直前にのみ使用してください。このAPIは、NSExceptionオブジェクトをログに記録するためのものではありません。安全に報告可能なすべてのNSExceptionは、Crashlyticsによって自動的にキャプチャされます。
Crashlytics SDKを使用して、キャッチした例外をiOSに記録することはできません。 CLS_LOGを使用してカスタムメッセージを記録できますが、これらのログメッセージは次のクラッシュデータと共にのみCrashlyticsに送信されます。クラッシュがない場合、これらのログメッセージはCrashlyticsダッシュボードに表示されません。同じことに関してCrashlyticsサポートチームから公式の確認を得ました。 iOSでキャッチされた例外のログは、ロードマップにあります。
この機能をIOS Crashlyticsの代替としてサポートするために、さまざまなサイトを調べました。
これまでのところ、クリッタリズムが最高だと思いました。@ Dima Crashlyticsの代替品だと思います。試してみてください。
プロジェクトにcrittercismを統合するのに役立つリンクをいくつか紹介します...!
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]
}
それらのリンクを参照して、それがあなたにとって役立つかどうかを確認してください...!
Catchブロックで以下の行を使用して、キャッチされたカスタム例外を処理します
NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler();
handler(exception);
iOSの場合 http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler