iOS アプリ - Ad Hoc 配布用に .ipa ファイルをホストする方法 (over-the-air distribution)

今回は Ad Hoc 配布を over-the-air distribution (インターネットでファイルをダウンロードしてインストールする方法) で行います。

このページでは、Ad Hoc 配布用に .ipa ファイル(iOS アプリのバイナリファイル)などをホストする方法をご説明します。


Xcode で Ad Hoc 配布用の .ipa ファイルなどの生成とエクスポートができている前提で進めます。

まだの方は Ad Hoc 配布 (Ad Hoc distribution) のメニューに戻って生成してください。

Ad Hoc 配布用のマニフェストファイル .plist を準備する

まずは、Ad Hoc 配布用のマニフェストファイル .plist を準備します。

Xcode から .ipa ファイルなどを生成してエクスポートすると以下のようなファイルできたと思います。

Ad Hoc 配布用に .ipa ファイルをホストする方法 1


この中で、Ad Hoc 配布用にホストするのは .plist ファイル(マニフェストファイル)と .ipa ファイル(iOS アプリのバイナリファイル)です。

どちらのファイルもファイル名を変更しても大丈夫です。 今回は TableViewTest.ipa を AnimalPics.ipa に変更しました。

Ad Hoc 配布用に .ipa ファイルをホストする方法 2


エディタで manifest.plist ファイルを開くと中身は次のような感じになっていると思います。

必要に応じて、14・20・26・32・34・40 行目の [ ] の箇所を変更してください。

<?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>[ipa ファイルへの https の URL]</string>
    </dict>
    <dict>
     <key>kind</key>
     <string>display-image</string>
     <key>url</key>
     <string>[57x57 のアプリ画像ファイルへの https の URL]</string>
    </dict>
    <dict>
     <key>kind</key>
     <string>full-size-image</string>
     <key>url</key>
     <string>[512x512 のアプリ画像ファイルへの https の URL]</string>
    </dict>
   </array>
   <key>metadata</key>
   <dict>
    <key>bundle-identifier</key>
    <string>[アプリの Bundle ID]</string>
    <key>bundle-version</key>
    <string>[アプリの Bundle バージョン]</string>
    <key>kind</key>
    <string>software</string>
    <key>platform-identifier</key>
    <string>com.apple.platform.iphoneos</string>
    <key>title</key>
    <string>[アプリ名]</string>
   </dict>
  </dict>
 </array>
</dict>
</plist>

URL は全て https でエラーや警告が出ずにアクセスできる状態なくてはなりません。

display-image と full-size-image の dict エレメントはなくても Ad Hoc 配布できます。


今回 Ad Hoc 配信する、AnimalPics アプリでは、次のように設定しました。

  • [ipa ファイルへの https の URL]
    https://softmoco.com/distTest/AnimalPics.ipa
  • [57x57 のアプリ画像ファイルへの https の URL]
    https://softmoco.com/distTest/img57.png
  • [512x512 のアプリ画像ファイルへの https の URL]
    https://softmoco.com/distTest/img512.png
  • [アプリの Bundle ID]
    com.softmoco.AnimalPics
  • [アプリの Bundle バージョン]
    1.0
  • [アプリ名]
    AnimalPics

Ad Hoc 配布用に .ipa ファイルをホストする方法 3


インストールリンク用の html ファイルを作成してホストする

続いて、iOS アプリをインストールする為のリンク用の html ファイルを準備します。

次のファイルを index.html という名前で保存しました。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>AnimalPics</title>
</head>
<body>
  <h1>
   <a href="itms-services://?action=download-manifest&url=https://softmoco.com/distTest/manifest.plist">AnimalPics アプリをインストールする</a>
  </h1>
</body>
</html>

ポイントは 9 行目だけで、クリックして iOS アプリをダウンロードしてインストールするためのリンクを配置します。

<a href="itms-services://?action=download-manifest&url=[plist ファイルへの https の URL]">アプリをインストールする</a>

URL は https でエラーや警告が出ずにアクセスできる状態なくてはなりません。


image ファイルも 57x57 と 512x512 サイズのアプリのアイコン画像を png フォーマットで準備しました。

これで Ad Hoc 配布用に .ipa ファイルをホストする準備ができました。

Ad Hoc 配布用に .ipa ファイルをホストする方法 4

これらのファイルを指定した URL でアクセスできるところにアップロードしてください。

今回は https://softmoco.com/distTest/ のディレクトリの下に全てのファイルをアプロードしました。


Ad Hoc 配布でデバイスに iOS アプリをインストールする

それでは、Ad Hoc 配布で iPhone にアプリをインストールしてみましょう。

Ad Hoc 配布用の Provisioning Profile を作った時に選択したデバイスから、インストールリンクがある html ファイルをブラウザで開きます。

[AnimalPics アプリをインストールする] リンクをタップします。

Ad Hoc 配布用に .ipa ファイルをホストする方法 5


"softmoco.com" would like to install "AnimalPics" という確認ダイアログ出てくるので、[Install] をタップします。

Ad Hoc 配布用に .ipa ファイルをホストする方法 6


ダイアログボックスが消え、Home 画面に戻ると AnimalPics アプリがインストールされています。

Ad Hoc 配布用に .ipa ファイルをホストする方法 7


AnimalPics アプリが起動でき、これで Ad Hoc 配布 (Ad Hoc distribution) によるインストールが完了です。

Ad Hoc 配布用に .ipa ファイルをホストする方法 8

Over-the-air 配布がうまくいかない時のヒント

Over-the-air の Ad Hoc 配布 (Ad Hoc distribution) がうまく行かない方の為に、私が試して確認したことを書き留めておきます。

うまくインストールできた方はとばしてください。


.plist ファイル、.ipa ファイル、画像ファイルへのリンクは https でなくてはならず、エラーや警告が出ていてもうまくいきません。

自己署名証明書を使う場合は、各デバイスにもルートCA証明書、中間CA証明書をインストールする必要があります。


インストールの URL から .plist ファイルなどが取得される際、ブラウザからアクセスする時と違って、セッション ID などの情報が送信されないようです。

その状態でログインが必要になる場所に .plist ファイルなどがあると、インストールが開始しません。


インストールリンクの URL の .plist の後にクエリ文字列を続けるとインストールが開始しませんでした。

また、インストールリンクの URL が https://www.test.com/GetManifestFile のような形でマニフェストファイルと全く同じ内容、同じ content-type で xml を返したとしてもインストールできませんでした。

私が試した限りマニフェストファイルの URL は .plist で終わらないとインストールが開始しませんでした。


マニフェストファイル内の .ipa などの URL の後にはクエリ文字列を続けても大丈夫ですし、https://www.test.com/GetBinaryFile のような URL でもインストールできました。


IIS などのウエブサーバでファイルをそのままホストしていて、ブラウザでファイルにアクセスできない時は、ウエブサーバの MIME Types に .ipa は application/octet-stream、.plist は application/xml か text/html が設定されているか確認し、なければ追加してみてください。

プログラムでバイナルファイルを読み込んだり、マニフェストファイルを動的に生成してダウンロードするようにしている場合も、レスポンスの content-type を上記のように指定してください。


まとまりなく思いついたことを書いてしまいましたが、何か問題解決のお役にたてば幸いです。


以上、Ad Hoc 配布用に .ipa ファイルをホストする方法をご説明しました。

© 2024 iOS 開発入門