はじめに
業務でも長い間iOSアプリ開発に携わっていたため、
アプリのクラッシュがユーザに及ぼす影響が非常に大きいことは身にしみて感じています。
とはいってもユーザの手元にあるアプリがクラッシュした報告を受けて、
それを調査するのは至難の業。
ましてやクラッシュの増加を検知して報告前に対応を施すなんてもってのほか。
…と思っていましたが、Fabricというプラグインの中で提供されているCrashlyticsを導入すれば、
それが簡単にできてしまいます。
Crashlyticsとは
Twitterの提供するクラッシュレポート提供サービスの一つです。
FabricというSDKのプラグインの1つとして提供されています。
Fabric – App Development Platform for teams
利用するメリット
- インストール数がわかる
- クラッシュ率がわかる
- クラッシュした箇所(行)がわかる
導入手順
今回は、Fabricのチュートリアル通りにFrameworkを取り込むのではなく、
AdmobやRealmと同じ方法で導入したかったためCocoaPodsを利用して導入します。
0. 環境
1. Fabricにユーザ登録をする
前述の通り、Crashlyticsを使用するためにはFabricというプラグインを利用することになりますので、
Fabricのユーザ登録が必要になります。
Get Fabricからユーザ登録を行ってください。
Fabric – App Development Platform for teams
2. FabricとCrashlyticsをインストールする
Podfileを編集して
vi Podfile
FabricとCrashlyticsを追加します。
use_frameworks! pod 'Fabric' pod 'Crashlytics'
インストールします。
$ pod install Analyzing dependencies Downloading dependencies Installing Crashlytics (3.9.3) Installing Fabric (1.7.2) Generating Pods project Integrating client project Sending stats Pod installation complete! There are 5 dependencies from the Podfile and 6 total pods installed.
3. Build Phaseにrun scriptを追加する
Build Phaseにrun scriptを追加します。
これにより、ビルド時にFabricを起動するスクリプトが自動で走ります。
"${PODS_ROOT}/Fabric/run" <FABRIC_API_KEY> <BUILD_SECRET>
※ログインした状態で下記にアクセスすると、
FABRIC_API_KEYとBUILD_SECRETが設定された状態のスクリプトがコピーできます。
fabric.io
4. Info.plistにFabricのAPIキーを追加する
Info.pilst>Open As>Source CodeでInfo.plistをソースコードで表示します。
そして、下記の
追記する箇所はどこでも構いません。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Fabric</key> <dict> <key>APIKey</key> <string>9da669cf8e9498fac65ac8b565aadf226074982a</string> <key>Kits</key> <array> <dict> <key>KitInfo</key> <dict/> <key>KitName</key> <string>Crashlytics</string> </dict> </array> </dict> (中略) </dict> </plist>
5. AppDelegateに初期化処理を入れる
AppDelegate.swiftのapplicationメソッドの中にCrashlyticsの初期化処理を追加します。
この際、FabricとCrashlyticsのimportが必要になります。
import UIKit import Fabric import Crashlytics @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { Fabric.with([Crashlytics.self]) return true } }
6. ビルドする
Cmd+Rでビルドします。
ビルドに成功したら、導入は完了です。
Fabricにログインすると、アプリが追加されています。
テスト
クラッシュを強制的に発生させる、テストコードも公開されています。
どこでも構いませんが、できれば初期で表示されるView Controllerに下記のように記載します。
import UIKit import Crashlytics class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let button = UIButton(type: .roundedRect) button.frame = CGRect(x: 20, y: 50, width: 100, height: 30) button.setTitle("Crash", for: []) button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside) view.addSubview(button) } @IBAction func crashButtonTapped(_ sender: AnyObject) { Crashlytics.sharedInstance().crash() } }
アプリを実機でRunし、「Crash」ボタンを押下するとクラッシュを発生させてレポートに表示することができます。
まとめ
たったこれだけで、アプリのクラッシュ率やインストール数、利用状況などの確認ができます。
iOS/Android両対応です。
今回は今後の管理の利便性を考慮してCocoaPodsを利用して導入しましたが、
Fabricインストール時のチュートリアルに則ってFrameworkを取り込むともっと簡単に導入できます。
入れておいて損になることはないと思いますので、ぜひ入れてみてください♪