クラッシュ レポート コールバックの追加
モバイル RUM を使用している場合、コードの他の部分(Google Analytics など)がモバイル RUM が収集するクラッシュレポート情報を使用できるようにすることがあります。サマリークラッシュ情報を渡せるようにするには、クラッシュレポートのランタイムコールバックを設定します。iOS エージェントがクラッシュを検出して報告するときにコールバックを取得するには、コードに次のプロトコルを実装する必要があります。
@protocol ADEumCrashReportCallback <NSObject>
- (void)onCrashesReported:(NSArray<ADEumCrashReportSummary *> *)crashReportSummaries;
@end渡される各 ADEumCrashReportSummary には、次のプロパティがあります。
@interface ADEumCrashReportSummary : NSObject
/** Uniquely defines the crash, can be used as key to find full crash report. */
@property (nonatomic, readonly) NSString *crashId;
/** The exception name, may be `nil` if no `NSException` occured. */
@property (nonatomic, readonly) NSString * ADEUM_NULLABLE exceptionName;
/** The exception reason, may be `nil` if no `NSException` occured. */
@property (nonatomic, readonly) NSString * ADEUM_NULLABLE exceptionReason;
/** The Mach exception signal name */
@property (nonatomic, readonly) NSString *signalName;
/** The Mach exception signal code */
@property (nonatomic, readonly) NSString *signalCode;
@endGoogle Analytics などの別の分析ツールに情報を送信する場合は、次の 5 つのプロパティすべてを含めることを推奨します。
- exceptionNameと exceptionReason はオプションであり、クラッシュの原因をすばやく特定するのに役立ちます。これらは、例外レポートランタイム(Objective-C など)内でクラッシュ原因が発生した場合にのみ表示されます。
- signalName と signalCode は、クラッシュをすばやく特定するのに役立ちます。これらはシステムから取得するものであり、ランタイムとは独立しています。
その他の情報については、crashId を使用すると、コントローラ UI でクラッシュを検索できます。
たとえば、クラッシュ情報を iOS ロガーに出力するために、次のような ADEumCrashReportCallback クラスを実装できます。
// assumes the containing object has "adopted" the protocol
- (void)onCrashesReported:(NSArray<ADEumCrashReportSummary *> *)summaries {
for (ADEumCrashReportSummary *summary in summaries) {
NSLog(@"Crash ID: %@", summary.crashId);
NSLog(@"Signal: %@ (%@)", summary.signalName, summary.signalCode);
NSLog(@"Exception Name:\n%@", summary.exceptionName);
NSLog(@"Exception Reason:\n%@", summary.exceptionReason);
}
}エージェントの構成時に、ADEumCrashReportCallback プロトコルを実装するオブジェクトを設定します。
ADEumAgentConfiguration *config = [ADEumAgentConfiguration new];
config.crashReportCallback = myCrashReportCallback;前回の実行からクラッシュの検出と収集が行われた場合、メイン/UI スレッドでコールバックが呼び出されます。最新の iOS SDK ドキュメントを参照してください。