新TestFlightの使用方法

iOS8からTestFlightがiTuneConnectに追加されました。
もとは、別会社のサービスだったのが、Appleに買収されて、iTunesConnectと合体し、公式のベータテストサービスになったので、利点や使い方など、簡単に纏めてみました。

**これらはAppleへの申請時に一緒にiTunesConnectを使って出来るので、基本はどんなエンジンを使っていても、使える・・・はず！**

（※iOSアプリってどうやって公開するの？？？って気になった方は[こちらへ](http://qiita.com/annaok/items/882f9ce8980a97d0f774)）

2017/9/8 更新
だいぶ情報が古くなってきたので、外部テストユーザーの項目などを追加し、全体的に見直し

# 使用する利点
何といっても、**申請するAppをそのままの状態で事前に確認出来る**のは良い！
今まではAdhocでテストしたのを、再度リリース用にアーカイブして・・・
とする必要があったので、テスト用のコードとかちゃんと消えてるかな・・・と心配しながら公開を待たなくても大丈夫になった。
（心配性の自分はよくその心配をしていた^^;
あとは、地味に**プロビジョニングファイルにUDIDの登録をしなくてもテストが出来る**のも嬉しい。

# 使える範囲

## アプリ数
* 1ライセンス**100個のアプリ**を同時にβテスト可能

## iTunesConnectテストユーザ(内部テストユーザ)
**アップロードしたアプリに対してそのままテストが可能**

* 1ライセンス**25ユーザ**が上限
* ~~1ユーザは、**10台のデバイス**が上限~~(無くなった？？？)
* アプリの有効期限は、アップロードしてから**90日**(期限が切れたら再度アップロードが必要)

## 外部テストユーザー
**アップロードし、Appleのベータ版AppReview審査を通ったアプリのみ。**(通常の審査とほぼ同様)

* 1ライセンス**10,000ユーザ**が上限
* アプリの有効期限は、アップロードしてから**90日**(期限が切れたら再度アップロードと審査が必要)



# TestFlight使用方法
*※AppleDeveloperLicenseの登録などは、ここでは省略しております。
AppleDeveloperLicenseについては、[ここ](http://qiita.com/Raugh/items/882f9ce8980a97d0f774)らへんが参考になると思います。
すでに、Licenseを持っている人向けになります。
あと、アプリの登録とかも簡略化しています^^;*


## テスト用Appの追加
1. iTunesConnectの**「マイApp」**を選択
2. テストするアプリを登録(iTunesConnectへのアプリ基本情報の登録や、アップデートの基本情報の更新など)
3. **TestFlight**タブの左側にある**テスト情報**から、**ベータ版Appの説明**、**フィードバックメールアドレス**、**審査時の連絡先**これらは必須。他の項目は、アプリに合わせて記載。
3. テスト情報の上部にある**保存ボタン**から保存することで、Appの追加とメタデータの送信が完了

## アプリのアップロード
1. Xcodeでテストするアプリを**アーカイブ(Product->Archive)**。
2. **オーガナイザ(Window->Organizer)**を開く(アーカイブ直後であれば自動で開きます)
3. Archivesからアップロードするアプリとバージョンを選び、**「Upload to App Store...」**ボタンを選択
4. 証明書を選び**「Choose」**ボタンを選択(※ここで証明書が出てこない場合などは、Xcode->Preference->Accountsから下の「＋」ボタンを押してAppleIDを登録してください)
5. アプリの確認をして**「Upload」**ボタンを選択
6. (キーチェーンアクセスの接続などを許可しながらしばらく待つ・・・)
7. アップロードの完了(テスト期間は、この時点から**90日**です。期限が切れた場合は、再度こちらの手順でアップロードが必要です)

## iTunesConnectテストユーザ(内部テストユーザ)
既に追加されているユーザはアップロードが完了後にそのまま[TestFligthアプリ][app]でテストが可能
### ユーザの追加
1. iTunesConnectの**「ユーザと役割」**を選択
2. **iTunesConnectユーザ**を**「＋」**ボタンから追加(新規ユーザはAppleIDの作成が必須)
3. 役割は、**「Admin」**、**「App Manager」**、**「Developer」**、**「Marketer」**、**「Technical」**のどれか、または複数を設定
4. アクセスできるアプリを選択。特に何も入れない場合は、全てのアプリにアクセス可能となる。
5. iTunesConnectユーザの一覧に表示されていることを確認
7. ユーザの追加が完了

*※既に他のAppleDeveloperProgramに紐付いているAppleIDなど内部テストユーザとして追加できない場合は、以下の外部テストユーザとして追加する必要がある。*



## 外部テストユーザ
内部テストユーザと違い、Appのアップロード後、**ベータ版AppReviewの審査を通過したアプリのみ**テストが可能
### ユーザ、グループの作成
1. iTunesConnectの**「マイ App」**を選択
2. **TestFlight**タブにある**「新規グループ」**から任意の名前を付けてグループを作成（既に作成済みのグループに追加する場合は、省略）
3. グループ内の**テスター**を選択し、横にある**「＋」**ボタンから追加
4. [新規テスターの場合]**メールアドレス**、**姓**(オプション)、**名**(オプション)を記載して招待(メールアドレスは、AppleIDじゃなくても可能・・・っぽい・・・？)
4. [新規テスターの場合]メールアドレスに送信されたメールを、**使用するデバイス上で承認**。
5. ユーザの追加が完了

### ビルドの追加
1. iTunesConnectの**「マイ App」**を選択
2. **TestFlight**タブにある作成済みのグループを選択
3. グループ内の**ビルド**を選択し、横にある**「＋」**ボタンから追加
4. アップロード済みビルドの中から、**テストするビルド**を選択(各バージョンで選択できるのは一つだけ)
5. Appにサインインが必要な場合、IDとパスワードを入力(必要なければ、「ログインする」を解除)
6. テストする内容を記載して審査に提出。
7. 審査を通過したら、[TestFlightアプリ][app]にてテストが可能



#　[TestFlightアプリ][app]

*※TestFlightアプリがiOS8以上にしか入りません。iOS7以下は以前と同様にAdHocでのテストになります*

## TestFlightアプリのインストール
1. テストで使用する端末のAppStoreから**「TestFlight」**と検索するか、[こちら][app]からアプリをインストール
2. 起動してiTunesConnectに登録したAppleIDや、メールアドレスでログイン

*※TestFlightアプリ内のアカウントを切り替える場合は、AppStoreの一番下にあるAppleIDをサインアウトしてから、TestFlightアプリを起動させることでログイン画面が出てきてアカウントを切り替えることが出来ます。*


## テストアプリのインストール
1. iTunesConnectに登録したテストユーザのメールアドレスに、テストアプリの招待メールが届いていることを確認
3. TestFlightアプリを起動し、アプリの詳細画面から**「INSTALL」**ボタンを選択
4. アプリがインストールされるので、完了後、**「Open」**ボタンを選択することでアプリが起動
5. あとは、テスト！

**アプリ側がまだ日本語に対応してない？？？アップデートに期待**
(2014/9/25現在)

次回以降は、TestFlightアプリを開くと、一度登録したアプリが一覧になっています。



* * *
利点で書いた通り、
申請前の最終チェックが主な使用用途になりそうかな・・・
それができるようになっただけでも有難い。
（今までは、申請版で作成したアプリはテストが出来なくて、公開まで待たなきゃいけなかったからなぁ・・・

## ちなみに・・・テストが完了後、１分１秒でも早く公開したい場合
特急審査というのがあり、そちらのやりかたは[こちら](http://qiita.com/annaok/items/a9d971bcf0005719aa22)


# 参照
[TestFlightアプリ][app]
[Apple公式リファレンス][ref]

[app]: <https://developer.apple.com/app-store/testflight/> "TestFlightアプリ"
[ref]: <https://help.apple.com/itunes-connect/developer/#/devdc42b26b8> "公式リファレンス"