EnterpriseAppのアップデート機能
EnterpriseAppはAppStoreのアップデート機能に対応していないためこちら側で実装する必要があります。
そこで、強制アップデード機能などを実装することなどもあるかと思いますが、ココに罠が潜んでいます。
アップデート機能に潜む罠
実はiOS7端末でインストールしたEnterpriseAppをiOS8にしてからアップデートするとインストールが失敗することがあります。(というか失敗します)
インストールページに貼り付けるリンクは以下のように作るのですが、
<a href="itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=http:/oursite.com/myApp.plist" id="text">
aタグをタップしてもタップしても「http:/oursite.comからインストールします」的なアラートは出るのですが 一向にインストールが始まる気配がないかと思います。
しかも、一旦アプリを削除しようものなら 二度と画面にアプリが現れることはありません。
「えっ、どういうこと!?」と驚かれる方も居るかもしれません。(僕はとても驚きました)
解決法
以下のページが参考になりました。
簡単に言うと、
iOS8用のplistを用意しとくといいよ。
ってことみたいですね。
具体例として、既存のサーバーにおいてあるEnterpriseAppのplistの
BundleIdentifier(com.oursite.myApp)のStringを少し改変したものをiOS8用にもう1つ作って下さい。
<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>
を
<key>bundle-identifier</key>
<string>com.mycom.MyApp.ios8fix</string>
<key>bundle-version</key>
<string>0.2.2</string>
的に改変すればいいみたいです。(僕はこれでできました)
ココではダウンロードの際に監視するplistに記載されているBundleIDを偽装しているようです。
インストール後はローカルのBundleIDを見るので、アプリが複数インストールされるという自体にはならずに済みます。
新たな問題
上記の方法はあくまでも一時的に対処するためのものです。
社内のiOS7ユーザーがiOS8用に作ったplistを利用してインストールした後にiOS8にアップデートしたら同様の問題が生じます。
**「社内の端末のバージョンは勝手に上げるな」**と大きな声で言うのが一番の解決策なのかもしれないですね。
周知と検証は徹底すべきと痛感した次第です。