まずはじめに、iOSの開発ライセンスには、「iOS Developer Program (Standard)」と「iOS Developer Enterprise Program」があるのですが(*1 )、それぞれのライセンスで利用できる配布方法としては以下の通りとなります。
Standard | Enterprise | |
実機デバッグ(開発用配布) | ○ | ○ |
Ad-Hoc(評価用配布) | ○ | ○ |
In-House(組織内配布) | − | ○ |
AppStore(一般公開) | ○ | − |
条件 | 個人・法人(7,800円/年) | 法人(23,800円/年) |
(「iOSライセンス&配布方法まとめ - Qiita」を参考に少し改編)
今回紹介するのは、AppStore 登録前の iOSアプリを、評価用の実デバイスにインストールする手順(上表の「Ad-Hoc(評価用配布)」)についてです。
(なお、今回紹介する方法ついては 2014年6月現時点のものです。)
その前に、「実機デバッグ(開発用配布)」というのは、Mac と iOSデバイスを直接 USBで繋いで Xcode 経由でインストールする方法で、「App Storeへの 登録に関するチュートリアル」の P.14〜17 で、
- デバイスをポータルに追加登録する。
- アプリケーションにコード署名を施す。
- デバイス上でアプリケーションを起動する。
という手順で詳細に説明されているので、ここでの説明は不要かと思います。
(うまく行かない場合は、「Xcodeからアプリを実機に書き出す際にエラー (Xcode cannot run using the selected device.)」も合わせてご覧ください。)
なお、今回説明する「Ad-Hoc(評価用配布)」とは、「iOSライセンス&配布方法まとめ - Qiita」によると、
評価用配布(AdHoc)
App Storeを介さずに、最大100台のデバイスまでアプリ配布可能。
デバイス追加の都度、UDID登録、プロビジョニングファイル更新、リビルド等の作業が必要。
という特徴があり、「実機デバッグ(開発用配布)」のようにデバイスを1台ずつ Mac に USB接続しなければならないという手間なしに、複数のデバイスにアプリを同時配布することができるのがメリットです。
今回やりたいこと & 現状
- AppStore 登録前の iOSアプリをインストールページ経由で、評価用の複数の iOSデバイスにインストールできるようにする
- iOS Developer Program (Standard) ライセンスを取得済み
- 証明書(Certificate)を作成済み
手順
手順を簡単に説明すると、
- 証明書(Certificate)を作成(※詳細は省略)
- App ID を作成
- 配布先のデバイスを登録
- プロビジョニングファイルを作成
- プロジェクトに Provisioning Profile をインストール
- 配布するアプリデータを作成
- ダウンロードページを作成
という流れになります。
なお、「App Storeへの 登録に関するチュートリアル」の P.23〜31 にも同じような手順が以下のように記載されていますので、ぜひ参照してください。
- デバイスIDの登録
- アドホックプロビジョニングプロファイルの作成
- iOS App Storeパッケージの作成
- アドホックプロビジョニングプロファイルとアプリケーション本体をデバイスににインストール
それでは進めていきます。
1. 証明書(Certificate)を作成
1)Member Center にログイン
iOS Developer Program から、「Member Center」にログインします。
[Certificates, Identifiers & Profiles] をクリックします。
2)証明書(Certificate)を作成
「Certificates」をクリック。
証明書を作成します。
証明書は作成済みなので、以降については省略します。
なお、証明書の作成方法については、「iOSアプリを App Store にバージョンアップ申請するときの手順メモ」 も参考にしてください。
2. App ID を作成
アプリのID を作成します。
1)App ID を作成
[Identifiers] -> [App IDs] を選択します。
[+] ボタンをクリックします。
以下の情報を入力して、「Continue」をクリック。
App ID Description | アプリの名称です。「-」などの記号は使えません |
Bundle ID | 「Explicit App ID」でユニークな App ID を指定 |
App Services | 適当にチェック |
「Submit」をクリックします。
3. 配布先のデバイスを登録
1)デバイスの識別子(UDID)を取得
Mac に iPad 等のデバイスを接続し、iTunesを立ち上げて、デバイスの識別子(UDID)を取得します。
ここをクリック。
シリアル番号をクリックすると、「UDID」に表示が切り替わります。
右クリックで「コピー」できます。
2)デバイスの UDID を登録
iOS Developer Program の Member Center に戻ります。
[Devices] -> [All] を選択し、[+] をクリックします。
Name は適当なものを、UDID は 1) で取得したものを入力して、「Continue」をクリック。
「Register」をクリックします。
4. プロビジョニングファイルを作成
[Provisioning Profiles] -> [All] を選択し、[+] をクリックします。
これが今回のキモ。
[Distribution] -> [Ad Hoc] を選択します。
先ほど作成した App ID を選択して、「Continue」をクリック。
Distribution用の証明書を選択して、「Continue」をクリック。
配布したいデバイスを選択して、「Continue」をクリックします。
「Profile Name」を適当に入力して、「Generate」をクリック。「Ad Hoc」であることが分かりやすい名前がいいかもしれません。
「Download」をクリックして、Distribution用の Provisioning Profile をダウンロードします。
5. プロジェクトに Provisioning Profile をインストール
ここからは Xcode での作業です。
1)Provisioning Profile をインストール
Xcode でプロジェクトを開いておきます。
4. でダウンロードした Distribution用の Provisioning Profile (xxxx.mobileprovision) をダブルクリックすると、Provisioning Profile がインストールされます。
「Team」に、Distribution用の証明書を選択します。
6. 配布するアプリデータを作成
配布するアプリデータ (.ipa) を作成します。
1)Xcode での設定
[BuildSettings] -> [Code Signing] で、先ほど登録したプロビジョニングプロファイル名が表示されるので選択します。
2)実機を接続
Mac に実機を接続して、「Scheme」に実デバイスを選択します。
3)アーカイブ
Xcodeメニュー -> [Product]->[Archive] を選択します。
ビルドが正常に終了すると、Organizer が起動します。
以下、完全に個人的なメモです。
ld: library not found for -lPods clang: error: linker command failed with exit code 1 (use -v to see invocation) ### CocoaPods のインストール ### http://www.atmarkit.co.jp/ait/articles/1403/08/news008.html ### http://tech.vasily.jp/2014/02/cocoapods/ $ sudo gem install cocoapods $ pod setup $ cd ~/Documents/ios_app/edu-c-camera/ $ pod install Analyzing dependencies Downloading dependencies Installing AFNetworking 2.2.3 (was 2.2.3) Installing FTPManager 1.6.3 (was 1.6.3) Installing FlatUIKit 1.3 (was 1.3) Installing MBProgressHUD 0.8 (was 0.8) Installing Reachability 3.1.1 (was 3.1.1) Generating Pods project Integrating client project
4)Distribute
Organizer で「Distribute」をクリックします。
「Save for Enterprise or Ad Hoc Deployment」を選択して、「Next」をクリック。
Ad Hoc 用のプロビジョニングファイルを選択して、「Export」をクリックします。
「Save for Enterprise Distribution」にチェックを入れ、以下の値を入力して「Save」をクリックします。(なおここでは、ダウンロードページの URL を「https://ad-hoc-xxxxx.s3.amazonaws.com/index.html」と想定しています。)
Application URL: | https://ad-hoc-xxxxx.s3.amazonaws.com/xxxxx.ipa |
Title: | アプリ名(「-」などの記号やスペースも使用可能) |
Large Image URL: | https://ad-hoc-xxxxx.s3.amazonaws.com/large.png |
Small Image URL: | https://ad-hoc-xxxxx.s3.amazonaws.com/small.png |
xxxxx.ipa ファイルと xxxxx.plist ファイルが作成されます。
【注意点 ①】
plistファイルをリクエストする URL のプロトコルを「https」で指定しないと、アプリダウンロード時に「証明書が有効ではないため、appをインストールできません」とのエラーになってしまいます。
(参考)
- 【悲報】iOS7.1から企業内アプリ配布(Enterprise In-House)にSSLが必須となった模様 | Lancork
- code.rock: S3のバケット名はよく考えて命名しましょう!
- Amazon S3とSSL | ふるかわごうのブログ
5)S3 にダウンロード用ファイルをデプロイ
S3に以下のファイルを配置して、公開します。
S3 bucket: ad-hoc-xxxxx.s3 ├── xxxxx.plist ├── index.html ├── large.png └── small.png
index.html
<!DOCTYPE html> <html lang="ja"> <head> <meta name="viewport" content="width=device-width" /> <meta charset="utf-8"> <title>Ad-Hoc ダウンロード</title> </head> <body> <h1>Ad-Hoc ダウンロード</h1> <a href="itms-services://?action=download-manifest&url=https://ad-hoc-xxxxx.s3.amazonaws.com/xxxxx.plist">ダウンロード</a> </body> </html>
【注意点 ②】
https の場合は、index.html まで URL指定しないとダメでした。
【注意点 ③】
今のところ、Amazon S3 ではベーシック認証は使えないようです。
特定のデバイスの UUID のみを登録しているのでそこまで不都合は生じないと思うのですが、誰でもダウンドーロできる状態で放っておくのは好ましくないので、ある程度時間が経ったら(目的が達成されたら)S3 上のファイルを消しておきましょう。
(参考)
6)Safari からダウンロードしてみる
iPad の Safari から、
https://ad-hoc-xxxxx.s3.amazonaws.com/index.html
にアクセスして、アプリをダウンロード・インストールしてみます。
インストールできれば、万事 OKです。
【参考】
参考
アプリリリースまでの入門書として最高です。
*1:他に教育機関用のライセンスもありますがここでは割愛