2013年06月25日

iOSアプリ配信(3)iOS Developer Enterprise の注意点

iOS Developer Enterprise はうまく使うと便利ですが、面倒だったり、注意しなければならないこともあります。

(1)アプリのバージョンアップの仕組みを自分で作らなければなりません

エンドユーザーのスキルが高くバージョンアップをメール等で連絡することで皆がSafariからダウンロードページにアクセスしてくれるような恵まれた環境なら良いのですが、アプリからワンタッチでアップデートできるようにしてほしいという要望が出ることも多いと思います。

アプリ起動時に配信サーバに問い合わせて、新しいバージョンがあったら確認メッセージを表示して、アップデートを実行するときはSafariに切り替えて…、という仕組みを作る必要があるかもしれません。端末側に加えて、サーバ側もある程度作り込みが必要になるかもしれません。

(2)1年で期限が切れるので期限管理が大切

iOS Developer Enterprise Program は1年ごとに更新する必要があります。こちらはAppleからのメールを見逃さないようにしていれば、まあ大丈夫かと思います。

見逃しがちなのは、アプリに組み込んだ InHouse プロビジョニングプロファイルも1年で切れるということです。最初のうちは Enterprise Program とほぼ同じ日付なので忘れることはないと思いますが、Enterprise Program とは異なる日付で管理されているのでアップデートのタイミングによっては日付がずれてきます。(早まります)

プロビジョニングプロファイルの期限日の1ヶ月前くらいになると、端末には「プロビジョニングプロファイルはあとXX日で有効期限が切れます」というメッセージが表示されるのですが、普通の人でこのメッセージの意味が分かる人はいないと思われますので、問い合わせが殺到することが予測されます。

また、プロビジョニングプロファイルの有効期限が切れるとアプリ自体が起動しなくなりますので、アプリ内にバージョンアップの仕組みが組み込まれている場合は、Safariからアクセスするインストールページを案内してインストールし直してもらわなければなりません。

プロビジョニングプロファイルを作り直す場合、デベロッパー証明書の期限も近づいていると思いますので、そちらの更新も行なう必要があると思います。デベロッパー証明書を更新するには、Mac のキーチェーンアクセスからCSRを作成してアップロードし、CERファイルをダウンロードしてキーチェーンアクセスに登録します。
※先日デベロッパー証明書を更新したら有効期限が3年後の日付になりましたが、プロビジョニングプロファイルは相変わらず1年後の日付でしたので、更新作業が必要なことは変わらないようです。

最初のうちは、Enterprise Program の支払いが済まないと証明書の更新が行なえないかと思っていたのですが、支払いを済ませる前に更新処理を行なうことができたので、1ヶ月前と言わずもっと早い時期にプロビジョニングプロファイルの更新を行なうことができると思います。

アプリのプロビジョニングプロファイルの更新は通常のアップデートと同じやり方で配信しますので、アプリの修正が無くてもバージョンを上げてアップデート版を配信するようにします。

iOS Developer Enterprise と似たようなもので Volume Purchase Program(VPP) というものが2012年10月より使えるようになりましたので、こちらについては次の記事で紹介します。

(3)エラーがちょっとわかりにくい

OTAインストールでエラーが発生すると端末側にエラーメッセージが表示されますが、何が原因なのか分からないので原因究明に時間がかかることがあります。
otatest-error.png

このメッセージが表示されているということは plist のダウンロードは成功しているということですので、その先で何かエラーが発生していることになります。例えば下記のような可能性があります。
・ipaファイルへのパスが正しくない
・ipaファイルがダウンロードできない
・Largeアイコンがダウンロードできない
・Smallアイコンがダウンロードできない

Largeアイコンは表示されないと思うのですが、ちゃんとダウンロードできないとエラーになるようです。

「再試行」をタップするとダウンロードから再度実行します。3G回線などネットワークが安定していないだけなら再試行でうまくインストールされる可能性はあります。

「再試行」を試してもエラーになってしまう場合は、エラーの原因を突き止める必要があります。「完了」をタップするとインストール処理が(そのまま)中断されますので、青いバーが途中で止まっているアイコンを長押しし、プルプルさせてから×アイコンをタップして削除します。

インストールテストを何度か繰り返していると、アイコンの削除ができなくなってしまうことが稀にあります。このような場合は、スリープボタン長押しで表示される赤い「電源オフ」をスライドさせて、電源を切ってから再起動すると、画面から消えます。

サーバ側のファイルがダウンロードできない場合は、WWWサーバのエラーログを見るとファイルの特定ができると思います。

(4)BASIC認証の入力が面倒

Enterprise Program の場合、第三者が勝手にインストールするのを防ぐ必要がありますが、BASIC 認証を設定した場合、ユーザーIDとパスワードの入力が複数回求められます。
otatest-auth.png

おそらく、ipa ファイルや plist ファイルをダウンロードするたびに認証する必要があるということだと思うのですが、インストールのためのリンクをタップした後、ユーザーIDとパスワードを何度も入力するのはちょっと面倒だと思います。とりあえず我慢して入力しています。


posted by はるこち at 10:23| Comment(11) | TrackBack(0) | iOSアプリ開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
iOS10からEnterprise版のベーシック認証付きOTA配布がうまくいかないんですが、現在の運用はどのようにされていますか?
iOS9はSSL関連でうまくいかなかったので、httpsに統一してからこれまではうまくいっていたのですが...悲
Posted by たいよう at 2016年12月21日 10:13
こんにちは。
私のところではiOS10の端末からでも、それまでと同じやりかたで問題なく配布できています。
何かエラーメッセージとか表示されているでしょうか?
Posted by はるこち at 2016年12月21日 13:17
返信ありがとうございます。
なるほど、そうなんですね。

エラーメッセージは「項目をダウンロードできません 後でやり直してください」ってやつよく見るエラーですね。
ただ困ったことに、一度ベーシック認証エラーを起こすと、再起動しても別の操作をしている時に「認証が必要です〜」といった認証ダイアログが出てきて、キャンセルしてもOKしても定期的に出てくるという謎の状況なんですよね。。。

こんな状況は今までにないのでちょっと困っちゃいました^^;
Posted by たいよう at 2016年12月21日 15:47
他のi0S10.2端末で行ったところ問題なくダウンロードできました。泣
もしかしたら端末の問題なのかもしれません。
ベーシック認証全て取り除いてもベーシック認証ダイアログがずっと出てくるので、やっぱりおかしいですね。
Posted by たいよう at 2016年12月21日 16:16
再起動を試していらっしゃるんですね。

OTAインストールの処理中は、何かファイルをダウンロードする毎に認証が要求されるようなので、インストールをきちんと中断させないとファイルのダウンロードを再試行してしまい、認証ダイアログが表示されるのではないかと思います。

インストール中のアイコンを長押ししてバツボタンをタップして、きちんと消さないと、何度も繰り返されると思います。

Enterprise ということは、サーバにログインすることはできますでしょうか?
access_log にどのようなアクセスが記録されているか確認してみると手がかりがあるかもしれません。

あと、私も良くやってしまうのですが、

・アドレスが間違っていて他のサーバや他のフォルダを見ている

ということは、ないですよね。。。
Posted by はるこち at 2016年12月21日 16:31
> インストール中のアイコンを長押ししてバツボタンをタップして、きちんと消さないと、何度も繰り返されると思います。
認証エラーでバツボタンを押しても消えないときはiTunes経由で削除するようにしてますね。。

> ・アドレスが間違っていて他のサーバや他のフォルダを見ている
わかります。htmlかplistの修正でやりがちですよね。笑
一応今回も確認しましたが大丈夫でした。

今回、アプリも削除して、ベーシック認証もFTPで全て取り除いて、Safariのキャッシュとクッキーも削除して、サスペンド状態のアプリも全て削除して、端末再起動しても出続けるという謎事象が出ているのです。。
全く訳わからないですよ。。再起動後に認証ダイアログが出た瞬間、壊してやろうかと思いましたからね。

すみません、サーバにログインがちょっとわからなかったんですが、access_logは確かに見てみると何かわかるかもしれませんね!ありがとうございます。
Posted by たいよう at 2016年12月22日 10:06
そうですか…。そうなると、ちょっとわからないです。

あとはログを見るというところだと思いますが、サーバ側は access_log というファイルを見ます。

アプリ側は、確か、Xcode の Devices の画面でケーブル接続されている端末のログが表示できたと思うので、それを見て何か手がかりを探すという感じでしょうか。

Devices のログ表示はちょっとわかりにくいんですが、ログが表示されていないときは、デバイスを選択した後、四角に囲まれた三角マークをクリックすると表示されると思います。
Posted by はるこち at 2016年12月22日 15:24
すみません、ご回答ありがとうございました。
サーバーのaccess_logには401認証エラー以外に情報を得られなかったので、Xcodeのログを見てみたところ、「/PrivateFrameworks/AppstoreDaemon.framework/appstored.bundle/appstored」というエラーを出していました。
https://forums.developer.apple.com/thread/63865
にもあるように、「全ての端末ではないが、InHouseの配布ができない状況にある。現状諦めている」というコメントが見受けられます。。
以前、iOS10のアップデート時にOTAインストールがうまくいかない事象が数多くありましたが、未だにApple側の潜在的な不具合が直っていないのかもしれません。。。

もう少し粘ってみますが、無理だったらTestFlightでの配布への移行も考えてみます;
Posted by たいよう at 2016年12月26日 13:52
こんにちは。
情報ありがとうございます。

フォーラムを見てみましたが英語だったのでGoogle翻訳でザッと見た範囲ですが、「機能制限でAppStoreからのアプリインストールを制限しているとアドホックOTAインストールができない」ということのようにも読めました。

手元の端末で試してみたら、たしかに AppStore が表示されないように(アプリインストールが行えないように)機能制限するとアドホックのOTAインストールもエラーになってしまいましたが、これは以前からこういう動きだったような気もするので、よくわからないです。

Apple側の問題だとすると対応は難しいものがありそうですね。
Posted by はるこち at 2016年12月26日 15:52
こんにちは。
機能制限についてですが、手元の端末には掛けていなかったんでスルーしていましたが、情報通りエラーになるんですね。
情報ありがとうございます。

情報共有になりますが、あれから端末の初期化を何度かしてインストールを試したら、問題なくインストールできました。苦笑
もしもはるこちさんに同じような事象が起こった際はぜひ端末の初期化をお試し下さいませw

諸々とご返信頂きありがとうございました。
Posted by たいよう at 2016年12月27日 14:08
こんにちは。

端末の初期化で直ったんですね。とりあえず良かったです。
ゴミデータが残ってしまっていたんでしょうね。
(真の原因はわかりませんが…)

結果報告をいただき、ありがとうございます。
似たような状況になったら試させていただきます。
こちらとしても大変助かります。
ありがとうござました。

>たいようさん
>
>こんにちは。
>機能制限についてですが、手元の端末には掛けていなかったんでスルーしていましたが、情報通りエラーになるんですね。
>情報ありがとうございます。
>
>情報共有になりますが、あれから端末の初期化を何度かしてインストールを試したら、問題なくインストールできました。苦笑
>もしもはるこちさんに同じような事象が起こった際はぜひ端末の初期化をお試し下さいませw
>
>諸々とご返信頂きありがとうございました。
Posted by はるこち at 2016年12月27日 14:59
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック

×

この広告は180日以上新しい記事の投稿がないブログに表示されております。