エラーの発生を報告する

Firebase Crash Reporting は、アプリで発生したエラーの詳細レポートを作成します。エラーは類似したスタック トレースのクラスタにグループ化され、ユーザーに与える影響の大きさで優先順位付けされます。自動レポートを受信できるほか、カスタム イベントをログに記録して、問題発生に至った過程を把握できるようにすることもできます。

Crash Reporting を設定する

アプリで Crash Reporting を設定するには、次の手順を行います。

  1. Firebase SDK をインストールします。
  2. Firebase console でアプリを Firebase プロジェクトに追加します。
  3. Firebase Crash Reporting の依存関係を Podfile に追加します。
    pod 'Firebase/Crash'
  4. Firebase モジュールを UIApplicationDelegate サブクラスにインポートします。

    Objective-C

    @import Firebase;
    

    Swift

    import Firebase
    
  5. FIRApp 共有インスタンスを設定します。通常はアプリケーションの application:didFinishLaunchingWithOptions: メソッドを使用します。

    Objective-C

     verbatim f4837415eb98478ae53b9bc9796b0226 // Use Firebase library to configure APIs
    [FIRApp configure]; endverbatim f4837415eb98478ae53b9bc9796b0226 
    

    Swift

     verbatim 2ac23ab3ab1009da8a019fb5469208e7 // Use Firebase library to configure APIs
    FIRApp.configure() endverbatim 2ac23ab3ab1009da8a019fb5469208e7 
    

シンボル ファイルをアップロードする

人が読んで理解できる形式のクラッシュ レポートを表示するためには、各ビルドの後にシンボル ファイルをアップロードする必要があります。実行スクリプトを Xcode に追加すると、この処理を自動的に行うことができます。

  1. アップロードを認証するためのサービス アカウント キーをダウンロードします。それには、Firebase console からプロジェクトを選択し、[Generate New Private Key] をクリックします。
  2. Xcode でアプリのターゲットをクリックして [Build Phases] を選択し、[+] をクリックしてフェーズを追加します。
  3. [Run Script] を選択して以下の内容を追加し、サービス アカウント パスGOOGLE_APP_ID に適切な値を設定します。
    # Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
    GOOGLE_APP_ID=1:my:app:id
    
    # Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "/Path/To/ServiceAccount.json"
        

最初のエラーを作成する

最初のエラーを作成するには、AppDelegate の didFinishLaunchingWithOptions メソッドに assert を追加して、Firebase 初期化呼び出しの直後にアプリが起動する際にクラッシュを発生させます。

Objective-C

assert(false);

Swift

fatalError()

上記の assert を追加した後は、以下の手順でエラーを作成できます。

  1. アプリを Xcode から起動します。
  2. Xcode で [Stop] をクリックして、デバッガとの接続を解除します。
  3. 端末またはエミュレータのホーム画面からアプリを直接起動します。
  4. アプリでエラーが発生するのを待ちます。
  5. アプリが正常に起動するように、クラッシュする行を削除します。
  6. Xcode でもう一度クイックスタートを実行します。レポートが正常にアップロードされたことを示すログメッセージが 15 秒以内に表示されます。
  7. Firebase console の Crash Reporting のセクションをチェックし、エラーを確認します。エラーが表示されるまでに 1~2 分ほどかかることに注意してください。

カスタムログを作成する

FIRCrashLog() を使用して、クラッシュ レポートに含めるカスタムログ メッセージを作成できます。次の例はログ メッセージの作成方法を示しています。

Objective-C

 verbatim fd24397090a7b1e558a6a87adfe30811 FIRCrashLog(@"Cause Crash button clicked");
assert(NO); endverbatim fd24397090a7b1e558a6a87adfe30811 

Swift

 verbatim 9563a4039ec1b4c7e2137ecad8f4197c FIRCrashMessage("Cause Crash button clicked")
fatalError() endverbatim 9563a4039ec1b4c7e2137ecad8f4197c 

ビットコードのサポート

ビットコードが有効にされている場合、Crash Reporting で収集されたスタック トレースを読めるようにするために、以下の手順に従ってスタック トレースをシンボリケートする必要があります。

  1. アプリのデバッグ シンボル(.dSYM)ファイルをダウンロードします。これらのファイルをダウンロードする方法については、クラッシュデータを「Devices」ウインドウに表示し、インポートするをご覧ください。

  2. すべての .dSYM ファイルが .xcarchive としてダウンロードされたら、.dSYM ファイルをわかりやすい場所に抽出します。

  3. 一括アップロード スクリプトを使用して、シンボリケートする必要があるアプリのバージョンに対応する .dSYM ファイルをアップロードします。Spotlight でこのファイルを含めるようにインデックスが更新されるまでに 1 分ほどかかる場合があります。

    ./Pods/FirebaseCrash/batch-upload -i "Path/To/Info.plist" -p "Path/To/GoogleService-Info.plist" "Path/To/ServiceAccount.json" "UUID-OF-DSYM"
      

既知の問題

  • 現在、Firebase SDK では Xcode シミュレータでの NSException クラスの使用をサポートしていません。このクラスを使用すると、Firebase console にスタック トレースが不適切な形式で表示されます。回避策として、実際の端末を使用するか、別の種類の例外(assert など)でテストしてください。

  • Crash Reporting では各ユーザーを識別するために一意の ID を使用します。Xcode 8.1 の既知のバグにより iOS 10 シミュレータではこの ID を作成できないため、エラーレポートをアップロードできません。一時的な回避策として、端末上でテストを実行するか、アプリ設定の [Capabilities] セクションで [Keychain Sharing] をオンにしてください。このバグは、Xcode 8.2 のベータリリースで解決されています。

フィードバックを送信...