47

カスタム キャッチされた例外を Crashlytics Android SDK でログに記録する方法を見つけましたが、iOS SDK ではそのようなものを見つけることができません。iOS の Crashlytics でキャッチされた例外をログに記録する方法はありますか?

Android の説明を参照してください: http://support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions

4

5 に答える 5

43

Crashlytics と Fabric の Mike です。

iOS、tvOS、または OS X アプリでログに記録された NSErrors をキャプチャできるようになりました。使用したい:

[CrashlyticsKit recordError:error];

また

Crashlytics.sharedInstance().recordError(error)

これにより、ユーザー セッションごとにかなりの数のログに記録された NSError をキャプチャできます。これらは、アプリの再起動時にのみ送信されます。ログに記録されたエラー エラーは、エラー ドメインとコードによってグループ化されます。これは、エラーの問題が多くの異なる呼び出しサイトにまたがる可能性があることを意味します。

ドキュメントを見る

于 2016-01-12T18:37:38.703 に答える
5

最後に、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:理由:frameArray:

このメソッドを使用して、単一の例外構造をレポートに記録できます。これは、コードが Lua、C#、Javascript などの非ネイティブ言語と対話する場合に特に役立ちます。この呼び出しはコストがかかる可能性があるため、プロセスが終了する直前にのみ使用する必要があります。この API は、NSException オブジェクトをログに記録するために使用することを意図していません。安全に報告できるすべての NSException は、Crashlytics によって自動的にキャプチャされます。

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

于 2015-10-13T20:49:28.047 に答える
3

Crashlytics SDK を使用して iOS でキャッチされた例外をログに記録することはできません。CLS_LOG を使用してカスタム メッセージをログに記録できますが、これらのログ メッセージは次のクラッシュ データでのみ Crashlytics に送られます。クラッシュがない場合、これらのログ メッセージが Crashlytics ダッシュボードに表示されることはありません。同じことに関して、Crashlytics サポート チームから公式の確認を得ました。iOS でキャッチされた例外のログ記録は、ロードマップに記載されています。

于 2015-05-13T04:36:54.230 に答える
2

この機能を Crashlytics に代わる IOS でサポートするために、さまざまなサイトを調べました。

これまでのところ、クリッターシズムが最高であることがわかりました..@Dima Crashlyticsの代わりになると思います..試してみてください.

あなたのプロジェクトにクリッターシズムを統合するのに役立つリンクがいくつかあります...!

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]
    }

これらのリンクを参照して、役に立つかどうかを確認してください...!

于 2015-05-12T13:42:56.507 に答える
1

以下の行を catch ブロックで使用して、キャッチされたカスタム例外を処理します

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

iOS http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handlerについて説明されているように

于 2015-05-12T06:55:56.303 に答える