TOAST > TOAST SDK使用ガイド > TOAST Log & Crash > iOS

[告知] TOAST SDK 0.13.0でarm64eアーキテクチャを使用する機器(iPhone XS、XR、XS Max、iPad Pros 3rd)で発生したクラッシュ集計、分析が可能です。

Prerequisites

  1. TOAST SDKをインストールします。
  2. TOASTコンソールで、Log & Crash Searchを有効化します。
  3. Log & Crash Searchで、AppKeyを確認します。

TOAST Logger構成

  • iOS用TOAST Logger SDKの構成は次のとおりです。
Service Cocoapods Pod Name Framework Dependency Build Settings
TOAST Log & Crash ToastLogger ToastLogger.framework [External & Optional]
* CrashReporter.framework (Toast)
Mandatory ToastCore
ToastCommon
ToastCore.framework
ToastCommon.framework
OTHER_LDFLAGS = (
"-ObjC",
"-lc++"
);

TOAST Logger SDKをXcodeプロジェクトに適用

1. Cococapods適用

  • Podfileを作成して、TOAST SDKに対するpodを追加します。
platform :ios, '9.0'
use_frameworks!

target '{YOUR PROJECT TARGET NAME}' do
    pod 'ToastLogger'
end

2. バイナリをダウンロードしてTOAST SDK適用

  • TOASTのDownloadsページで、全体iOS SDKをダウンロードできます。
  • Xcode ProjectにToastLogger.frameworkToastCore.frameworkToastCommon.frameworkを追加します。
  • TOAST LoggerのCrash Report機能を使用するには、一緒に配布されるCrashReporter.frameworkもプロジェクトに追加する必要があります。 linked_frameworks_logger

Project Settings

  • Build SettingsOther Linker Flags-lc++-ObjC項目を追加します。

    • Project Target > Build Settings > Linking > Other Linker Flags other_linker_flags
  • CrashReporter.frameworを直接ダウンロードするか、ビルドした場合はBuild SettingsEnable Bitcodeの値をNOに変更する必要があります。

    • Project Target > Build Settings > Build Options > Enable Bitcode enable_bitcode

      TOASTのDownloadsページでダウンロードしたCrashReporter.frameworkは、bitCodeをサポートします。

TOAST Symbol Uploader適用

プロジェクトのデバッグ設定を変更

  • ビルド設定を変更してプロジェクトのデバッグ情報形式を変更する必要があります。
  • Xcode -> Project Target -> Build Settings -> Debug Information Format -> Debug -> DWARF with dSYM File

開発環境でRun Scriptを使用して自動アップロード

  • Xcode -> Project Target -> Build Phases -> + -> New Run Script Phase
  • 表示される新しいRun Scriptセクションを展開します。
  • Shell(シェル)フィールドの下にあるスクリプトフィールドで新しい実行スクリプトを追加します。
if [ "${CONFIGURATION}" = "Debug" ]; then
    ${PODS_ROOT}/ToastSymbolUploader/toastcloud.sdk-*/run --app-key LOG_N_CRASH_SEARCH_DEV_APPKEY
fi
  • LOG_N_CRASH_SEARCH_APPKEYにはLog&Crash SearchのAppKeyを入力する必要があります。
  • Run Scriptセクションの下にあるInput FilesにdSYMの基本パスを設定します。
    • ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

symbol_uploader_script_pods_path

Symbol Uploaderを使用して直接アップロード

  • SymbolUploaderの使い方
USAGE: symbol-uploader -ak <ak> -pv <pv> [-sz <sz>] <path> [--verbose]

ARGUMENTS:
  <path>                  dSYM file path is must be entered. 

OPTIONS:
  -ak, --app-key <ak>     [Log&Crash Search]'s AppKey must be entered. 
  -pv, --project-version <pv>
                          Project version must be entered. 
  -sz, --service-zone <sz>
                          You can choose between real, alpha, and demo. (default: real)
  --verbose               Show more debugging information 
  -h, --help              Show help information.

  • XcodeのRun Scriptを使用せずにユーザーが任意の時点で、次のような方法でSymbolUploaderを使用して直接Symbolをアップロードできます。
./SymbolUploader --app-key {APP_KEY} --project-version {CFBundleShortVersionString || MARKETING_VERSION} {symbol path(~/Project.dSYM)}

同じバージョンのSymbolがすでにアップロードされている場合、SymbolUploaderはアップロードされているSymbolを削除してアップロードを実行します。 この時、2つのSymbolファイルのファイル名が異なる場合、アップロードされていたSymbolは削除されません。 Log & Crash SearchコンソールからアップロードされているSymbolを削除する必要があります。 https://console.toast.com/→組織選択→プロジェクト選択→ Anaytics → Log & Crash Search →設定→シンボルファイル

CrashReport 使用時注意事項

  • arm64eアーキテクチャを使用する機器のクラッシュ・分析のためにはTOAST Loggerと一緒に配布されるPLCrashReporterを使用しなければなりません。
    • TOASTのDownloadsページではない他の場所でダウンロードしたり、直接ビルドしたPLCrashReporterを使用する場合、arm64eアーキテクチャを使用する機器のクラッシュ分析が不可能です。

TOAST Logger SDK初期化

  • Log & Crash Searchで発行されたAppKeyを設定します。

初期化API仕様

// 初期化
+ (void)initWithConfiguration:(ToastLoggerConfiguration *)configuration;

初期化プロセス例

ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY"];
[ToastLogger initWithConfiguration:configuration];

ログ送信

  • TOAST Loggerは、5つのレベルのログ送信関数を提供します。

ログ送信API仕様

// DEBUG Level log
+ (void)debug:(NSString *)message;

// INFO Level log
+ (void)info:(NSString *)message;

// WARN Level log
+ (void)warn:(NSString *)message;

// ERROR Level log
+ (void)error:(NSString *)message;

// FATAL Level log
+ (void)fatal:(NSString *)message;

ログ送信API使用例

[ToastLogger info:@"TOAST Log & Crash Search!"];

ユーザー定義フィールド設定

  • 希望するユーザー定義フィールドを設定します。
  • ユーザー定義フィールドを設定すると、ログ送信APIを呼び出すたびに設定した値をログと一緒にサーバーに送信します。

ユーザー定義フィールドAPI仕様

// ユーザー定義フィールド追加
+ (void)setUserFieldWithValue:(NSString *)value forKey:(NSString *)key;
  • ユーザー定義フィールドは、Log & Crash Search > ログ検索をクリックした後、ログ検索画面の選択したフィールドに表示される値と同じです。

ユーザー定義フィールド制約事項

  • すでに予約されているフィールドは使用できません。
  • フィールド名には'A-Z、a-z、0-9、-、_'を使用できます。最初の文字は'A-Z、a-z'のみ使用できます。
  • フィールド名のスペースは、'_'に置換されます。

ユーザー定義フィールド使用例

// ユーザー定義フィールド追加
[ToastLogger setUserFieldWithValue:@"USER_VALUE" forKey:@"USER_KEY"];

クラッシュログの収集

  • TOAST Loggerは、クラッシュ情報をログに送信する機能を提供します。
  • TOAST Loggerを初期化する時、一緒に有効になり、使用するかを設定できます。
  • クラッシュログを送信するには、PLCrashReporterを使用します。

CrashReporter使用するかの設定

  • CrashReporter機能は、基本的にTOAST Loggerを初期化する時に一緒に有効になります。
  • TOAST Loggerを初期化する時、使用するかを設定できます。
  • クラッシュログ送信機能を使用しない場合は、CrashReporter機能を無効にする必要があります。

UserIDが設定されている場合、Log&Crash SearchコンソールのCrash Userセクションでユーザー固有のクラッシュ体験を確認できます。 UserIDの設定は[開始する](./getting-started-ios/#UserID設定)で確認できます。

CrashReporter有効化

// CrashReporter Enable Configuration
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY" 
                                                                        enableCrashReporter:YES];

[ToastLogger initWithConfiguration:configuration];

CrashReporter無効化

// CrashReporter Disable Configuration
ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY" 
                                                                        enableCrashReporter:NO];

[ToastLogger initWithConfiguration:configuration];

クラッシュ発生時に追加情報を設定して送信

  • クラッシュ発生直後、追加情報を設定できます。
  • setShouldReportCrashHandlerのBlockでユーザー定義フィールドを設定すると、正確にクラッシュが発生した時点に追加情報を設定できます。

Data Adapter API仕様

+ (void)setShouldReportCrashHandler:(void (^)(void))handler;

Data Adapter使用例

[ToastLogger setShouldReportCrashHandler:^{
  // ユーザー定義フィールドを通してCrashが発生した状況から得たい情報を一緒に送信
  // ユーザー定義フィールド追加
  [ToastLogger setUserFieldWithValue:@"USER_VALUE" forKey:@"USER_KEY"];

}];

ログ送信後、追加作業進行

  • Delegateを登録すると、ログ送信後に追加作業を進行できます。

Delegate API仕様

+ (void)setDelegate:(id<ToastLoggerDelegate>) delegate;

Delegate API仕様

@protocol ToastLoggerDelegate <NSObject>
@optional
// ログ送信成功
- (void)toastLogDidSuccess:(ToastLog *)log;

// ログ送信失敗
- (void)toastLogDidFail:(ToastLog *)log error:(NSError *)error;

// ネットワーク切断などの理由でログの送信に失敗した場合、再送信のためにSDK内部保存
- (void)toastLogDidSave:(ToastLog *)log;

// ログフィルタリング
- (void)toastLogDidFilter:(ToastLog *)log logFilter:(ToastLogFilter *)logFilter;
@end

Delegate使用例

#import <ToastLogger/ToastLogger.h>

@interface AppDelegate () <UIApplicationDelegate, ToastLoggerDelegate>

@end


@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // ...

    // 初期化
    ToastLoggerConfiguration *configuration = [ToastLoggerConfiguration configurationWithAppKey:@"YOUR_APP_KEY" 
                                                                            enableCrashReporter:YES];
    [ToastLogger initWithConfiguration:configuration];

    // Delegate設定
    [[ToastLogger setDelegate:self];

    return YES;
}

#pragma mark - ToastLoggerDelegate
// ログ送信成功
- (void)toastLogDidSuccess:(ToastLog *)log {
      // ...
 }

// ログ送信失敗
- (void)toastLogDidFail:(ToastLog *)log error:(NSError *)error {
      // ...
}

// ネットワーク切断などの理由でログ送信に失敗した場合、再送信のためにSDK内部保存
- (void)toastLogDidSave:(ToastLog *)log {
      // ...
}

// ログフィルタリング
- (void)toastLogDidFilter:(ToastLog *)log logFilter:(ToastLogFilter *)logFilter {
      // ...
}

@end

Network Insights

  • Network Insightsは、コンソールに登録したURLを呼び出して、遅延時間とレスポンス値を測定します。これを活用して複数の国(デバイスの国コード基準)からの遅延時間とレスポンス値を測定できます。

コンソールからNetwork Insights機能を有効にすると、TOAST Loggerを初期化する時、コンソールに登録したURLで1回要請します。

Network Insights有効化

  1. TOAST ConsoleLog & Crash Searchサービスをクリックします。
  2. 設定メニューをクリックします。
  3. ログ送信設定タブをクリックします。
  4. Network Insightsログを有効にします。

URL設定

  1. TOAST ConsoleLog & Crash Searchサービスをクリックします。
  2. ネットワークインサイトメニューをクリックします。
  3. URL設定タブをクリックします。
  4. 測定するにはURLを入力して追加ボタンをクリックします。
TOP