iTunes Connect の TestFlight 機能を使ってみる

iTunes Connect から [TestFlight Beta Testing](https://developer.apple.com/app-store/testflight/) が使えるようになったので早速試してみました。

テスターには Internal Testers と External Testers の2種類が存在するらしいのですが、後者の方はまだ __Coming Soon__ になっているため、今回は Internal の方を試しました。

__追記：2014/10/24からExternalの方も使用可能になったようです！__ 使い方は[こちら](http://qiita.com/koogawa/items/ec876e29e7f45a240b53) 

* すでに iTunes Connect に何かしらアプリを登録していることを想定しています
* TestFlight を使ってアプリをインストールするには __iOS 8 がインストールされたデバイスが必要になります__
* 記事中のスクリーンショットは[公式ドキュメント](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/BetaTestingTheApp.html)のものを引用させて頂いております

## ビルドのアップロード

まずはテスターに配布したいビルドを Xcode で Archive して、iTunes Connect にアップロードします。ここまでは通常のアプリ申請時と一緒ですね。（どうでもいいけど"ビルド"という呼び方がなかなか慣れない）

![BuildNumberTab_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/334985f5-6d16-e8f2-1a20-a8820e638b50.png "BuildNumberTab_2x.png")

アップロードが正常に完了すると、上のように「My Apps」の __Prerelease__ セクションにアップしたビルドが追加されているはずです。

ここでビルド番号をクリックすると、テストの詳細情報を設定することができます。テスターに伝えたい情報などがあればここに記載しておくと良いでしょう。

## テスターを招待

### テスターになるための条件

Internal Testers の場合、iTunes Connect にアカウントを持っており、かつ `Admin`, `Legal`, もしくは `Technical` の権限が付与されていることが条件となります。

権限の設定などは iTunes Connect の「Users and Roles」から行えます。

![U-RUsers_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/050f38fa-cc88-3f01-91f2-b9ff677c97fd.png "U-RUsers_2x.png")

### アプリにテスターを追加

Prerelease セクションの __Internal Testers__ タブには、テスターとして登録できるメンバーが表示されています。

![2InternalTestersAvailable_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/cbcf31cb-fa64-770c-a430-a4f021f95236.png "2InternalTestersAvailable_2x.png")

テスターとして登録したいメンバーにチェックを入れ、「Save」をクリックしましょう。25人まで追加できるようです。

### テスターを招待

テスターを招待するには __Builds__ タブの「Enable TestFlight Beta Testing」スイッチをオンにします。これでテスター全体に招待メールが届きます。

![EnableTestFlightOn_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/b4372e74-7318-1062-5345-88d61b940153.png "EnableTestFlightOn_2x.png")

招待メールを受け取ったテスターはメールの内容に従い、[TestFlightアプリ](https://itunes.apple.com/us/app/testflight/id899247664?mt=8)のインストール（未インストールの場合）、および配布アプリのインストールを行います。

![BylS9jZCIAAZf0L.jpg](https://qiita-image-store.s3.amazonaws.com/0/8292/a318008c-c3d9-1d9a-0d1c-6f5807f2f4ef.jpeg "BylS9jZCIAAZf0L.jpg")
↑私のアプリで実行した例。インストールの有効期限は30日間のようです。

### インストール状況の確認

__Builds__ タブ画面からは、ビルドのインストール回数などが確認できるようです。

## テストの実施

その後はテスターからフィードバックを受けながら改善を進めていきます。

新しいビルドをアップロードしたい場合は、再度 Xcode で Archive して、iTunes Connect にアップロードするだけです。

新しいビルドが __Builds__ タブに追加され、アクティブになります。古いビルドは自動的に非アクティブになります。

![BuildNumberTab_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/334985f5-6d16-e8f2-1a20-a8820e638b50.png "BuildNumberTab_2x.png")

また、このタイミングでテスターには最新版がアップされた旨のプッシュ通知が届くようです。

![BylTstTCYAAn18O.jpg](https://qiita-image-store.s3.amazonaws.com/0/8292/ef034d79-35ea-f988-bf2f-8f4dec5569bd.jpeg "BylTstTCYAAn18O.jpg")
↑私のアプリで実行した例

## テスト終了

テストを終了するには「Enable TestFlight Beta Testing」スイッチを __オフ__ にします。

![EnableTestFlightOff_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/c4decb2a-c03c-9447-1119-04228762a7f7.png "EnableTestFlightOff_2x.png")

これにより、テスターは招待を受け取ることもビルドをインストールすることもできなくなります。すでにビルドがインストールされているテスターは影響を受けません。

スイッチをオンにすればいつでもテストを再開することができます。

## App Storeへ提出

テストを終えたビルドはそのまま App Store へ提出することができます。

![App_Review_2x.png](https://qiita-image-store.s3.amazonaws.com/0/8292/94433f62-4856-a10b-f315-0f89b3934009.png "App_Review_2x.png")

申請手順は通常のやり方と一緒です。

* [Submitting the App to App Review](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SubmittingTheApp.html)

## 参考になるリンク

* [TestFlight Beta Testing](https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/BetaTestingTheApp.html) - Apple公式ドキュメント
* [TestFlight が Xcode / iTunes Connect でサポートされました！](http://dev.classmethod.jp/smartphone/iphone/testflight-xcode-itunes-connect/) - クラスメソッドさんのブログ
* [新TestFlight](http://qiita.com/hayashi311/items/2ba77d43d9b368383f32) - Qiita