akiyoko blog

akiyoko の IT技術系ブログです

AppStore 登録前の iOSアプリを Ad-Hoc で配布してインストールする方法

まずはじめに、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 で、

  1. デバイスをポータルに追加登録する。
  2. アプリケーションにコード署名を施す。
  3. デバイス上でアプリケーションを起動する。

という手順で詳細に説明されているので、ここでの説明は不要かと思います。
(うまく行かない場合は、「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)を作成済み


 

環境

  • Mac OS X 10.9.4
  • Xcode 5.1





手順

手順を簡単に説明すると、

  1. 証明書(Certificate)を作成(※詳細は省略)
  2. App ID を作成
  3. 配布先のデバイスを登録
  4. プロビジョニングファイルを作成
  5. プロジェクトに Provisioning Profile をインストール
  6. 配布するアプリデータを作成
  7. ダウンロードページを作成

という流れになります。


なお、「App Storeへの 登録に関するチュートリアル」の P.23〜31 にも同じような手順が以下のように記載されていますので、ぜひ参照してください。

  • デバイスIDの登録
  • アドホックプロビジョニングプロファイルの作成
  • iOS App Storeパッケージの作成
  • アドホックプロビジョニングプロファイルとアプリケーション本体をデバイスににインストール



それでは進めていきます。



1. 証明書(Certificate)を作成

1)Member Center にログイン

iOS Developer Program から、「Member Center」にログインします。

f:id:akiyoko:20140618013942p:plain

f:id:akiyoko:20140618013950p:plain


[Certificates, Identifiers & Profiles] をクリックします。

f:id:akiyoko:20140618014141p:plain

2)証明書(Certificate)を作成

「Certificates」をクリック。

f:id:akiyoko:20140618014436p:plain


証明書を作成します。

f:id:akiyoko:20140618014542p:plain


証明書は作成済みなので、以降については省略します。
なお、証明書の作成方法については、「iOSアプリを App Store にバージョンアップ申請するときの手順メモ」 も参考にしてください。




 

2. App ID を作成

アプリのID を作成します。

1)App ID を作成

[Identifiers] -> [App IDs] を選択します。

f:id:akiyoko:20140618014903p:plain


[+] ボタンをクリックします。

f:id:akiyoko:20140618015013p:plain


以下の情報を入力して、「Continue」をクリック。

App ID Description アプリの名称です。「-」などの記号は使えません
Bundle ID 「Explicit App ID」でユニークな App ID を指定
App Services 適当にチェック

f:id:akiyoko:20140618015817p:plain


「Submit」をクリックします。

f:id:akiyoko:20140618020024p:plain

f:id:akiyoko:20140618020052p:plain




 

3. 配布先のデバイスを登録

1)デバイスの識別子(UDID)を取得

Mac に iPad 等のデバイスを接続し、iTunesを立ち上げて、デバイスの識別子(UDID)を取得します。

ここをクリック。

f:id:akiyoko:20140618020324p:plain


シリアル番号をクリックすると、「UDID」に表示が切り替わります。

f:id:akiyoko:20140618020601p:plain


右クリックで「コピー」できます。

f:id:akiyoko:20140618020742p:plain


2)デバイスの UDID を登録

iOS Developer Program の Member Center に戻ります。

[Devices] -> [All] を選択し、[+] をクリックします。

f:id:akiyoko:20140618020934p:plain


Name は適当なものを、UDID は 1) で取得したものを入力して、「Continue」をクリック。

f:id:akiyoko:20140618021127p:plain

「Register」をクリックします。

f:id:akiyoko:20140618021243p:plain

f:id:akiyoko:20140618021347p:plain




 

4. プロビジョニングファイルを作成

[Provisioning Profiles] -> [All] を選択し、[+] をクリックします。

f:id:akiyoko:20140618021542p:plain


これが今回のキモ。
[Distribution] -> [Ad Hoc] を選択します。

f:id:akiyoko:20140618021651p:plain


先ほど作成した App ID を選択して、「Continue」をクリック。

f:id:akiyoko:20140618021840p:plain


Distribution用の証明書を選択して、「Continue」をクリック。

f:id:akiyoko:20140618022004p:plain


配布したいデバイスを選択して、「Continue」をクリックします。

f:id:akiyoko:20140618022107p:plain


「Profile Name」を適当に入力して、「Generate」をクリック。「Ad Hoc」であることが分かりやすい名前がいいかもしれません。

f:id:akiyoko:20140618022349p:plain

「Download」をクリックして、Distribution用の Provisioning Profile をダウンロードします。

f:id:akiyoko:20140618022529p:plain




 

5. プロジェクトに Provisioning Profile をインストール

ここからは Xcode での作業です。

1)Provisioning Profile をインストール

Xcode でプロジェクトを開いておきます。

f:id:akiyoko:20140618225605p:plain


4. でダウンロードした Distribution用の Provisioning Profile (xxxx.mobileprovision) をダブルクリックすると、Provisioning Profile がインストールされます。

「Team」に、Distribution用の証明書を選択します。

f:id:akiyoko:20140618225720p:plain


6. 配布するアプリデータを作成

配布するアプリデータ (.ipa) を作成します。

1)Xcode での設定

[BuildSettings] -> [Code Signing] で、先ほど登録したプロビジョニングプロファイル名が表示されるので選択します。

f:id:akiyoko:20140618225852p:plain

2)実機を接続

Mac に実機を接続して、「Scheme」に実デバイスを選択します。


3)アーカイブ

Xcodeメニュー -> [Product]->[Archive] を選択します。

ビルドが正常に終了すると、Organizer が起動します。

f:id:akiyoko:20140618230711p:plain


以下、完全に個人的なメモです。

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」をクリックします。

f:id:akiyoko:20140618230722p:plain


「Save for Enterprise or Ad Hoc Deployment」を選択して、「Next」をクリック。

f:id:akiyoko:20140618231108p:plain


Ad Hoc 用のプロビジョニングファイルを選択して、「Export」をクリックします。

f:id:akiyoko:20140618231311p:plain


「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


f:id:akiyoko:20140618231628p:plain


xxxxx.ipa ファイルと xxxxx.plist ファイルが作成されます。


【注意点 ①】

plistファイルをリクエストする URL のプロトコルを「https」で指定しないと、アプリダウンロード時に「証明書が有効ではないため、appをインストールできません」とのエラーになってしまいます。

(参考)



 

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:他に教育機関用のライセンスもありますがここでは割愛