tvOSアプリをβ配布する


こんにちは。みなさんtvOSアプリ作ってますか？
tvOSには現状iOSのOTAのような便利な配布方法がないため、β配布する場合は、どんな人でもXcodeからインストールしなければなりません。
手順にまとめる機会があったため、せっかくなので記事にしました。

配布方法としては、以下の2つがあります。

- AdHoc署名のipaを配布
- Enterprise署名の配布(Xcode8.3.2くらいから利用可能になりました。)

AdHoc配布の場合、デバイス登録が必要になります。まずはこの部分を解説します。
Enterprise配布を利用する方は、そのまま [ArchiveしてExportする](http://qiita.com/toshi0383/items/8654798818a6774a11e5#archiveしてexportする) に進んでください。Xcode8のAutomatic Signingを利用すれば、困ることはないと思います。

# インストールしたいAppleTVのUDIDをProvisioning Profileに登録する
何はともあれ、テスターさんが使用するAppleTVのUDIDをプロビジョニングに登録しましょう。
他のアプリと使い回して良いのであれば、Xcodeが自動生成したプロビジョニングに追加していけば良いと思います。
UDIDはiTuneもしくはXcode経由で確認することができます。

### 実機Debugビルドで自動でUDIDを追加する
Xcode7からは、実機にデバッグインストールするときに自動でUDIDを追加してプロビジョニングを更新してくれます。Member Centerにログインしなくて良いので、この機能を使うと楽だと思います。

初回実機をdestinationにしてビルドすると怒られます。（スクショは初回じゃないので微妙に違うかもしれません）
<img src="https://qiita-image-store.s3.amazonaws.com/0/35008/85443847-b756-ebb5-16af-fb1622db5184.png" height="110" />
Fix Issueを押して解決できれば、プロビジョニングにUDIDが追加されているはずです。

これだけでReleaseビルドしたアプリもインストールできているので、`tvOS Team Provisioning Profile: *` と `XC Ad Hoc: *` の少なくとも2つが自動生成されているようです。

### Member CenterからUDIDを追加する

ここはいつも通りかと思いますので割愛します。

### iTunesでUDIDを確認する

![Screen Shot 2016-01-12 at 16.51.42.png](https://qiita-image-store.s3.amazonaws.com/0/35008/d3e4d04c-fe73-a240-b456-534b402a4c44.png "Screen Shot 2016-01-12 at 16.51.42.png")

USBでAppleTVをつなぐと、iTunesに表示されると思います。
UDIDの表示がないという方は、Serial Numberとか書かれたあたりをクリックすると表示が切り替わります。この辺りはiOSと一緒ですね。UDID右クリックでcopyできますのでくれぐれも手入力しようとしないように。。

![Screen Shot 2016-01-12 at 16.46.52.png](https://qiita-image-store.s3.amazonaws.com/0/35008/836d2f97-853c-5a73-3a13-d09ab34b213d.png "Screen Shot 2016-01-12 at 16.46.52.png")

### XcodeでUDIDを確認する
Window=>Devices の画面で確認できます。
![Screen Shot 2016-01-12 at 16.56.45.png](https://qiita-image-store.s3.amazonaws.com/0/35008/edf653eb-af12-97ab-ef32-1396a677a754.png "Screen Shot 2016-01-12 at 16.56.45.png")

# ArchiveしてExportする
いつも通りArchiveしてAdHocでipaをExportします。
このipaをGoogle Driveとか適当な場所において、配布完了となります。

# Xcodeからインストールする
ipaをダウンロードしたら、Xcodeを開きます。
Window=>Devices の画面の「+」ボタンを押してください。
![Screen Shot 2016-01-12 at 17.19.51.png](https://qiita-image-store.s3.amazonaws.com/0/35008/b9836462-2562-049f-fc34-bc1b35cba3e5.png "Screen Shot 2016-01-12 at 17.19.51.png")


ファイルインスペクタが出てきますので、ipaを選択すればインストールできます。
![Screen Shot 2016-01-12 at 17.23.18.png](https://qiita-image-store.s3.amazonaws.com/0/35008/5346a297-56a3-6293-e4f5-bcb923620151.png "Screen Shot 2016-01-12 at 17.23.18.png")

Enterprise配布の場合は、設定の「一般」=>「デバイス管理」(一番下)から「開発元を信頼」する必要があります。

# おまけ：ビルドしたアプリのプロビジョニングにデバイスが含まれていることを確認する

Payloadの中の`embedded.mobileprovision` でUDIDを確認できます。

```bash
$ unzip Sample.ipa
$ editor Payload/Sample.app/embedded.mobileprovision
.
.
.
    <key>ProvisionedDevices</key>
    <array>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
    </array>
```

余談になりますがunzipする手順が面倒だと思うので、拙作の以下のツールを使うと便利です。
https://github.com/toshi0383/ipanema

```bash
$ brew tap toshi0383/ipanema && brew install ipanema
$ ipanema -E Sample.ipa
.
.
.
    <key>ProvisionedDevices</key>
    <array>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
        <string>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</string>
    </array>
```

以上になります。