18797
画面中央に出てくる「iOSのアップデートがあります。更新しますか？」のような、iOSのアップデート通知メッセージについて教えて下さい。

お客様がアプリを使用中にiOSのアップデートメッセージが画面に表示され、メッセージが表示されている間、アプリの挙動がおかしかったと報告を受けました。このアプリはiPadでデジタルサイネージのような使い方をしており、送られてくる情報を逐次画面に追加表示していくというモノです。

細かな症状は聞き取れなかったのですが、アップデートメッセージ表示中には情報更新がされず、メッセージを閉じた後に溜まっていたメッセージが一気に表示されたような動きをしたそうです。このアプリは近くに操作する人がいないので、iOSアップデートメッセージが長時間表示されたままになる可能性があります。

そこで教えていただきたいのですが：  
  
・iOSアップデートメッセージを意図的に再現する方法はあるでしょうか  
・iOSアップデートメッセージを出さないようにできるでしょうか  
・メッセージが表示されている間、どのような影響があると考えられるでしょうか

同じ経験のある方がいらっしゃると助かるのですが。  
よろしくお願いします
CC BY-SA 3.0
2015-11-07T22:50:45.123
18531
2015-11-13T23:31:45.613
13171
question
ios
iOSアップデートのメッセージによる影響
可能な範囲で答えさせて頂きます。

> ・iOSアップデートメッセージを意図的に再現する方法はあるでしょうか

iOSのプッシュ通知アラートと同様の再現方法ができるかもしれません。  
(プッシュ通知の許可アラートも何度も出ないため、テストしにくい。)

下記手順を試してみてください。

  1. 設定 > 一般 > 日付と時刻 > 自動設定をOFF
  2. 手動で日時を1日以上ずらす  
ちょうど1日は難しいので、少し余裕を持つと良いかもしれません。

  3. 端末を再起動

※テスト後は自動設定をONにして日付と時刻を戻しましょう。

私の手元にあるiPad mini2では上記手順で何度か再現できました。  
(iOS9.0.2 → iOS9.1 のアラートです。)  
ただし、iPad 第三世代では再現できなかったため、端末次第かもしれません。  
参考:
[iOSのプッシュ通知を何度もテストする方法](http://qiita.com/matsukaz/items/3d7c5d91e3269aae4e61)

> ・iOSアップデートメッセージを出さないようにできるでしょうか

これは開発者が制御できるものではないと思います。

> ・メッセージが表示されている間、どのような影響があると考えられるでしょうか

iOSアプリでは描画処理は全てメインスレッドで実行する必要があるので、  
メッセージが表示されている間は描画が進まないのだと思います。  
メッセージを閉じるまでの間にたまったタスクは処理待ち状態になっているはずなので、  
メッセージを閉じた後に一気に流れたのではないでしょうか？

少しでも参考になれば幸いです。
CC BY-SA 3.0
2015-11-10T16:46:34.753
18636
2015-11-10T16:46:34.753
8968
18531
answer
### iOSアップデートメッセージを出さない方法

デジタルサイネージのような扱いでしたら、Guided Access（いわゆるキオスクモード）にするのが一般的だと思われます。

あとはApple Configuratorで監視モードに入れる方法があります。ただし将来的に確実だとは言えず、公式な手段でもありません。

Apple
ConfiguratorやMDM自体にはiOSのバージョンアップデートを防ぐ直接の方法は提供されていません。監視モードに入れた端末はグローバルHTTPプロキシを設定できることを利用します。

これでmesu.apple.comとの通信をブロックすれば、最新のOSバージョンの確認を行う通信を行えなくなるので、アップデートメッセージも出なくなります。

iOS端末が特定のネットワークに接続されているのであれば、そこでブロックするという手段も取れます。

### アラート表示とアプリの動作について

もともとiOSはマルチタスクOSではなく、常にひとつのアプリがスクリーンを占有するもので、アラートダイアログは割り込みを掛けるプラグマティックな手段として用意されました。

このため、アラートはアプリケーションの上にオーバレイ表示されますが、制御はアプリケーションではなく、より上位のOSに属しています。

現在はマルチタスクが標準化し、大画面化に伴う複数アプリの同時起動などが一般化したことで、ダイアログはOSではなくアプリケーションが必要とするものに変化しました。`UIAlertView`から`UIAlertController`への移行が促されているのも、その辺りが起因していると思われます。
CC BY-SA 3.0
2015-11-11T13:09:50.980
18690
2015-11-11T13:09:50.980
5337
18531
answer
提案いただいた手順を実際に試してみた結果をまとめました。

回答をくださった、それぞれの方へのコメントでも良かったのですが、同じ疑問を持った方へ見やすいフィードフォワードとして、１つの回答にしてまとめました。Takahiroさん、quesera2さん、ありがとうございました。

**■ iOSアップデートメッセージの再現方法**

Takahiroさん提案の手順通りでした。  
具体的には以下の手順で再現します。

・iOSアップデートのあるデバイスを用意  
・iOSの設定アプリにて  
・一般 > 日付と時刻 > 自動設定をオフにする  
・日付を２日後にし、時間を１時間進める  
・設定アプリを終了  
・デバイスを再起動する  
・再起動後、10秒後ぐらいにiOSアップデートメッセージが出ます  
  
**■ iOSアップデートメッセージを出さない方法**

quesera2さん提案のアクセスガイド（キオスクモード）が有効でした。  
具体的には以下の手順で設定します。

・iOSの設定アプリにて  
・一般 > アクセシビリティ > アクセスガイドをオンにする  
・一般 > 日付と時刻 > 自動設定をオフにする  
・日付を２日後にし、時間を１時間進める  
・設定アプリを終了  
・デバイスを再起動する  
・iPadが再起動したら、以下を5秒以内に行う  
・デバッグ対象のアプリを起動  
・ホームボタンを３連打し、アクセスガイドを開始する  
・しばらく放置してiOSアップデートメッセージが出ないことを確認  
・ホームボタンを３連打し、アクセスガイドを終了する

アプリの運用でアクセスガイドが許されるのであれば、これは便利な方法だと思いました。

以上は iPad miniを使いiOS9.0からiOS9.1へのアップデートメッセージで試した結果です。  
みなさん、ありがとうございました！
CC BY-SA 3.0
2015-11-13T22:24:47.240
18797
2015-11-13T23:31:45.613
2015-11-13T23:31:45.613
13171
13171
18531
answer