アプリをAdHocビルドで作成する
Test AdHocと表示するだけのアプリを作って、これを配信してみる。
![ios_adhoc1](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc1-300x246.png)
"Generic iOS Device"を選択する。
![ios_adhoc2](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc2-300x250.png)
Xcodeのメニューから[Product]-[Archive]を選択する。
![ios_adhoc3](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc3-300x207.png)
Archiveが作成されたら"Export"をクリックする。
![ios_adhoc4](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc4-300x207.png)
"Save for Ad Hoc Deployment"を選択して"Next"をクリックする。
![ios_adhoc5](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc5-300x207.png)
Teamを選択する。
![ios_adhoc11](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc11-300x207.png)
インストールできるデバイスの種別を選択できるみたいだけど、通常は"Export one app for all compatible devices"を選択して"Next"をクリックする。
Provisioning ProfileにアプリをインストールしたいデバイスのUDIDが含まれていないと、アプリインストール時に失敗するので注意。
![ios_adhoc6](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc6-300x207.png)
ここで"Include manifest for over-the-air installation"を選択しておくとmanifestファイルを作成してくれる。自分で作る事も出来る。"Next"をクリックする。
![ios_adhoc7](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc7-300x207.png)
manifestファイルを作成するのに必要な項目を入力したら"Export"をクリックする。
![ios_adhoc8](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc8-300x207.png)
任意の場所に作成するフォルダ名を指定して"Export"をクリックする。
OTA配信に必要なファイルを作成する
アプリ本体とmanifestファイルは作成されているので、Webサーバーにダウンロード用のリンクを張ったHTMLを用意する。以下は、そのサンプル。
adhoc.html<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AdHoc Test</title>
</head>
<body>
<a href="itms-services://?action=download-manifest&url=https://example.com/apps/manifest.plist">アプリをインストール</a>
</body>
</html>
Xcodeで作成されたmanifestファイルに画像が指定されているので、何か適当な57x57と512x512の画像を用意しておく。ないとエラーになるので画像を作成するか、またはmanifestファイルの画像指定を削除しても大丈夫らしい。manifestファイルの内容は以下の通り。
manifest.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>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://example.com/apps/TestAdHoc.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://example.com/apps/image_57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://example.com/apps/image_512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.example.TestAdHoc</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>TestAdHoc</string>
</dict>
</dict>
</array>
</dict>
</plist>
![ios_adhoc9](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc9-300x218.png)
最終的に作成したファイルは全部で5個のファイルになる。
Webサーバーにアップロードしてインストールできるか確認する
必要なファイル一式が作成出来たらWebサーバーにアップロードするんだけど、今はSSL化されていないサーバーからはダウンロードできないので、httpsで接続できるサーバーを用意する必要がある。Webサーバーに置いたダウンロード用のHTMLに接続してダウンロードできるか確認する。
![ios_adhoc10](http://itemy.net/blog/wp-content/uploads/2016/12/ios_adhoc10-225x300.jpg)
無事インストール成功。
注意点のまとめ
インストールできない場合は、大抵は以下のどれかではないかと思う。
- アプリをAdHocビルドした時のProvisioning ProfileにインストールしたいデバイスのUDIDが含まれていない。
- WebサーバーがSSL化されていない。
- manifestファイル作成時の入力ミス。
- この記事で書かれている製品やソフトについて
- Xcode 8.2.1