TestFlightの代わりにCrashlytics（Beta）でアプリを配布する

New TestFlightに切り替わってから数ヶ月が過ぎました。

旧TestFlightと比べて審査が入る分テスト配布に使い辛くなってしまったので代替ツールを探していましたが、よく目にする配布ツールは費用面やプランごとの機能制限が気になってしまい、他のものを探していたところ @k_katsumi さんからHockeyApp( http://hockeyapp.net/features/ )かCrashlyticsが良いのではと教えて頂いて、元々導入していたCrashlyticsを使うことに。


AppStoreで配布するバージョンにはCrashlyticsをインストールしたくない場合は
◆ 開発用ビルドにだけ解析ツールを組み込みたい
http://qiita.com/Takumi_Mori/items/df840e90ac685d9ce654

# Crashlyticsとは
モバイルアプリのクラッシュ統計ツールです。
今回は、このサービスに2014年5月頃に追加された「Beta」というテスター配布ツールを利用します。
Andorid版もあり、同じ画面でiOS/Androidのアプリを管理、配布することもできます。

## 導入方法
2014年の10月ごろから、CrashlyticsはFabricというサービスに統合されています。
インストール方法などは他の記事でまとめてくださっている方がいるのでそちらを参照ください。

【iOS】新しくなったCrashlyticsの使い方 Fabric版（アカウント取得編）
http://qiita.com/tomoki-n/items/1bc57054b5f9a2b24459
※ 記事内にもありますが、メールアドレスを登録してもすぐにメールが返って来るわけではないので気長に待ちましょう。


# Beta の使い方

## Crashlyticsにアプリを登録する
まずはCrashlyticsにアプリを登録しましょう。

インストールできていたら、基本的には書いてある英語も簡単なものですし
チュートリアル通りに進めて行けばいいと思うので省略しますが、
ちょっと引っかかりそうなRun Script周りだけ。

**1. インストールするprojectを選択する**
![ss1.png](https://qiita-image-store.s3.amazonaws.com/0/34166/4801495d-036e-be63-6d21-ffb34dd0529f.png)
取り合えず適当に。


**2. projectにRunScriptを登録する**
![ss1.5.png](https://qiita-image-store.s3.amazonaws.com/0/34166/2ba4914b-a282-7d00-9a6a-52a46f87bb35.png)
Targetを選択して、RunScriptがなければ左上の＋を押して New Run Script Phase
![ss2.png](https://qiita-image-store.s3.amazonaws.com/0/34166/01a5da10-cdc9-c6b5-8851-79fdb5f94b68.png)
Crashlyticsのチュートリアルに出ているRunScriptをコピペする。

あとはチュートリアル通りにビルドするとAppDelegateに記述するソースコードを指定されるので、それをコピペして実行すれば登録されます。


## Betaで配布する
Crashlyticsを導入したアプリをArchiveビルドすると、CrashlyticsのツールバーアイコンからDistributeできるようになります。
取り合えず適当に配布してみます。

**1. テスターのメールアドレスを入力して、Addして次へ**

　![ss2-1.png](https://qiita-image-store.s3.amazonaws.com/0/34166/c68fd938-22fd-b9fa-85bb-0b0045df1699.png)

　
**2. テスター向けのアップデート文章を書いて、次へ**
　![ss2-2.png](https://qiita-image-store.s3.amazonaws.com/0/34166/84b6368f-9861-e141-ca01-168e68baa2d5.png)

　
**3. テスターへアプリが配布されます**
Crashlyticsの「Beta」（アイコン上から2つ目）でテスターのインストール状況が分かります。
いちいちメールアドレスを入力するのが面倒なので、あらかじめテスターのGroupを作っておきましょう。
　![ss2-3.png](https://qiita-image-store.s3.amazonaws.com/0/34166/c8504203-d399-1331-e41f-f2982f8d85b3.png)

　
**4. 適当にグループ名を付けて、テスターを追加**
作ったあとで、前の画面に戻って「Add Testers」からグループを選択すれば、グループのメンバー全員に招待メールを送信できます。
　![ss3.png](https://qiita-image-store.s3.amazonaws.com/0/34166/89f6a6e9-92f4-030c-5afb-aa02a81ca154.png)


## Betaからインストールする
あまり画像ばかり貼ってもアレなので基本的には文章で書いて行きます。

1. 招待メールを送ったテスターに対して「You've been invited to test アプリ名」のようなメールがCrashlyticsから届きます。最下部にある「Let Me In」を押して招待を受けましょう。
　

2. Gmailアプリなどで開いているとSafariで開いてくれ、という警告が出るのでSafariで開きます。
![ss4-1.png](https://qiita-image-store.s3.amazonaws.com/0/34166/c84aec58-aaaa-0ed0-4c58-d3274e68054a.png)
　
3. Betaからインストールを行ったことが無いメールアドレスで受信した場合、名前の入力を求められます。特にテスターはCrashlyticsに登録する必要はなく、ここで名前を入力するだけで大丈夫です。
※**ここで一度名前を登録するとあとから変更する方法がありません。**オートコレクトで酷い名前に変わったりすることがあるので気をつけましょう。（直せなくなりました。。。）
　

4. iPhone5Cなどでは、なぜかそのままではインストールできないことがあります。そういった場合には、このチェックボックスをONにしましょう。（画像はOFFの状態）
![ss4-2.png](https://qiita-image-store.s3.amazonaws.com/0/34166/35e54028-2807-0b1f-d9b1-a2cbea095bf1.png)
　

5. 2回目以降のインストールからは、デスクトップに追加された「Beta」のアイコンからインストールが可能です。
![ss4-3.png](https://qiita-image-store.s3.amazonaws.com/0/34166/aa29dd54-8184-810a-f7de-3020e82dd9d2.png)
　

6. デバイスが登録されていない場合は、今回ちょっと再検証できませんでしたがBetaの管理画面から登録されていないデバイスを確認することができたはずです。そこからUUIDを確認し、provisioning Profileに登録して再ビルドしてください。


# 注意事項
Betaでは、配布するアプリ毎に招待メールからリンクを踏んでもらう必要があります。
新しいアプリを配布する場合は、以前に他のアプリをCrashlyticsからインストールしてもらったことがあっても初回の招待メールは必ず開いてもらうようにしましょう。

![ss4-4.png](https://qiita-image-store.s3.amazonaws.com/0/34166/cdc53c5c-e400-8024-3a2d-bf70c46dcbe4.png)
招待メールを再送する場合は、対象のユーザーを選択すれば簡単に再送できます。



# Crashyliticsに変更して良かったところ

- クラッシュ解析機能が便利。配布と関係ないけど。
- 新しいバージョンを公開していると、古いバージョンを起動したときにインストールの案内アラートが表示される。これが凄い便利。もしかするとBuild Versionのインクリメントが必要かも。
- テスターにわざわざアカウントを作ってもらう必要がない。


# （旧）TestFlightの方が良かったこと

- 新しいアプリを追加したときに、初回送信メールを開いてもらう、というプロセスを忘れがち



# 最後に
初回投稿から、長いエントリを書き過ぎました。

別途書いていますが、AppStoreで公開するバージョンではCrashlyticsをインストールしない方法なども投稿してあります。ビルドターゲットを変えるだけですが。
解析ツールを導入するには利用規約等の問題もありますのでそういった切り分けも重要です。

社内でアプリを配布する分には、Crashlyticsはかなりオススメです。他の配布ツールはかなり無料の範囲での利用が難しいですし。
むしろ旧TestFlightが使えるころから移行しておけばよかったかなとも思ってます。UI格好いいしね。