Visual Studio Mobile Centerのクラッシュレポート機能をiOSアプリで試してみた

vsmc

クラッシュレポート機能を試してみる

こんにちは!モバイルアプリサービス部の加藤潤です。
前回、VSMCを使ってアプリを配布してみました。 今回はクラッシュレポート機能を試してみたいと思います。

VSMCは記事執筆時点でPreview版です。そのため、正式版リリース時には機能が異なる可能性がありますのでご注意ください。なお、Preview版の間は無料で利用できます。

クラッシュレポート機能については公式ドキュメントに以下の記載があります。

Crashes are grouped together by similarities like the reason for the crash and where the occur in the app. It is possible to inspect each individual crash report for the last 3 months, after that a stub of 25 crashes will be kept.

クラッシュの原因や発生場所によってグルーピングされるようです。
また、直近3ヶ月分のクラッシュレポートの確認ができるようです。

Mobile Center SDKを組み込む

クラッシュレポート機能を使うにはアプリにMobile Center SDK for iOSを組み込む必要があります。
SDKはMITライセンスの下に公開されています。
※記事執筆時点でSDKはパブリックプレビューです。

SDKのバイナリファイルをダウンロードしてXcodeプロジェクトに組み込むことも可能ですが、CocoaPodsを使った方が簡単です。
Podfileにpod 'MobileCenter' もしくは pod 'MobileCenter/MobileCenterCrashes' を記述します。

前者はCrashesはもちろんの事、Analyticsも含むMobileCenterの全てのサービスを使う場合の記述です。
後者はCrashesサービスのみ使う場合の記述です。

今回は後者の書き方で試しました。
上記を記述し、pod installを実行すればSDKがダウンロードされます。

SDKのセットアップ

pod install 完了後、.xcworkspaceを開き、AppDelegate.swiftに以下のimport文を追加します。

import MobileCenter
import MobileCenterCrashes

さらに、application(_:didFinishLaunchingWithOptions:)メソッド内に以下を記述します。

MSMobileCenter.start("{Your App Secret}", withServices: [MSCrashes.self])

{Your App Secret}の部分はご自身の環境に合わせて設定してください。

AppシークレットはGetting Startedのトップページで確認できます。 app_secret_001

または「Manage app」からも確認できます。 app_secret_002

クラッシュするコードを仕込む

以下のように画面に1つボタンを配置し、ボタンタップ時にクラッシュさせてみます。

crash_report_sample_app

クラッシュするコードはこちらです。

@IBAction func didTapCrashButton(_ sender: Any) {
    let str: String! = nil
    print(str) // クラッシュ!
}

dSYMファイルをアップロードする

クラッシュログを人間が読める形にするためにはデバッグシンボルファイル(.dSYM)を取得してVSMCにアップロードする必要があります。

DebugビルドでdSYMファイルを生成する

今回はDebugビルドで試してみます。
DebugビルドではデフォルトでdSYMファイルを生成しない設定になっているので設定を変更します。

ビルドターゲットを選択し、Build Settings > Build Options > Debug Information FormatのDebugをクリックし、 build_option_debug_001

「DWARF with dSYM File」に変更します。これによりDebugビルド時にもdSYMファイルが生成されるようになります。
build_option_debug_002

ビルドしてdSYMファイルを取得する

ビルドしたらProductsから.appファイルを選択し、「Show in Finder」でFinderを開きます。

dsym_001

開いたフォルダ内に.dSYMファイルがあります。 dsym_002

VSMCにdSYMファイルをアップロードする

dSYMファイルが取得できたら、VSMCにアップロードします。

symbols_001 symbols_002

実行結果

何回かボタンをタップしてクラッシュさせてみました。 以下のように管理画面上にクラッシュの一覧が表示されました。

crash_report_list

一覧をクリックしてクラッシュの詳細を見ると、スタックトレースやデバイスの種類、OSのバージョンを確認することが出来ました。 crash_report_stacktrace

おわりに

今回はVSMCのクラッシュレポート機能を試してみました。
UI上、dSYMファイルのアップロードが成功したのか失敗したのかよくわからなかったり、クラッシュログのダウンロード機能が無い等、改善してほしいところは多々ありますが、まだプレビュー版ですので今後に期待です。

参考