iOS6 アクセスガイドについて調べてみた
デバイスの操作を制限できる
iOS6からOSの機能としてアクセスガイドが提供されるようになりました。アクセスガイドは、アプリの切り替えなどのデバイスの操作を限定する機能で、子供がiOSデバイスで遊ぶ際に勝手に色々といじられないようにしたい場合などに便利です。しかしそれよりも、社内でiOSデバイスを配布して業務システムアプリのみを利用させたいケースや、端末をエンドユーザーに貸し出す形でアプリを利用させたいケースなどに非常に重宝する機能です。
最近、業務でアクセスガイドを利用する機会がありましたので、まとめたいと思います。
下記のデバイスを検証に利用しました。
- iPhone4 iOS6.0.2
- iPad 4th iOS6.0.0
使い方
アクセスガイドを利用できるようにする
iOSの「設定」アプリを起動して、「一般」>「アクセシビリティ」>「アクセスガイド」と選択していくと、アクセスガイドの設定画面が表示されます。ここで、「アクセスガイド」をオンにすればアクセスガイドを利用できるようになります。
また、「パスコードを設定」からアクセスガイドを解除する際に入力するパスコードを設定することができます。デバイスのロックを解除するパスコードとは別のもので、必ずしもデバイスのロック解除のパスコードと同じである必要はありません。
アクセスガイドを利用する
アクセスガイドのメインの機能は、画面表示中のアプリから別のアプリに切り替えをさせないようにすることです。まず、表示したままにしたいアプリを起動します。次にホームボタンをトリプルクリックすると、以下のようなアクセスガイド開始画面が表示されます。
画面右上の「開始」ボタンをタップするとアクセスガイドが開始されます。
アクセスガイドが開始された後にホームボタンを押すと以下の画面のようなメッセージが表示され、ホームボタンによる操作を受け付けなくなります。
アクセスガイドを終了するには、ホームボタンをトリプルクリックしてアクセスガイド開始画面を表示します。
画面左上の「終了」ボタンをタップするとアクセスガイドが終了し、ホームボタンによる操作可能になります。
オプションの設定
タッチ操作の無効化
アクセスガイド有効時には、画面中の任意の範囲のタッチ操作を無効化することができます。タッチ操作を無効化する範囲は、アクセスガイド開始画面で表示されているアプリ画面を直接選択して指定します。げなわツールのような感じで、適当に画面をドラッグして選択できます。
黒い半透明のボーダーで囲まれた範囲がタッチ操作が無効になるエリアです。エリアは自由に調整できますし、複数箇所の選択もできます。
アクセスガイドを開始すると、選択した領域は黒い半透明のボーダーで覆われてタッチ操作ができなくなります。
また、全てのタッチ操作を無効にしたい場合は、アクセスガイド開始画面の「オプション」ボタン押下で表示されるアクションシートの「タッチ」をオフにします。すると、アプリ画面全体が黒い半透明のボーダーで覆われて全てのタッチ操作が無効になります。
画面回転の無効化
アクセスガイド有効時に画面回転を無効にしたい場合は、アクセスガイド開始画面の「オプション」ボタン押下で表示されるアクションシートの「動作」をオフにします。
このオプションをオフにすると、シェイクジェスチャが検出できなくなるようです。ただし、CoreMotionを利用したデバイスモーションはきちんと取得できます。
スリープの有効化
デフォルトでは、アクセスガイド有効時はデバイスがスリープしないようになっていますが、OSの設定画面でスリープを有効にすることができます。
スリープを有効にするとスリープボタンによる操作が可能になり、ボタンを押すと通常通りスリープします。デバイスにパスコードロックがかかっている場合、この状態でデバイスのスリープを解除しようとすると通常通りパスコードを入力してロックを解除する必要があります。ロック解除後もアクセスガイドは有効なままです。
その他
URLスキームによる他アプリの起動はできない
当然ですが、URLスキームによる他アプリの起動はできません。これはサードパーティ製のアプリに限ったことではなく、Apple製のアプリでも同様です。例えば、Safariでアドレスバーに"maps://"と入力してマップアプリを起動しようとしても、何も反応がありません。
アクセス権
位置情報などアクセス権が必要な機能を利用する場合、アクセスガイドを有効にする前にOSでアプリに対してアクセスを許可する必要があります。例えば位置情報の場合、通常は位置情報の初回利用時に位置情報の利用をアプリに対して許可するかを尋ねるダイアログが表示されます。しかし、アクセスガイド有効時に初回アクセスが発生するとそのダイアログは表示されず、アプリから位置情報が利用できません。
SocialFrameworkやUIActivityでTwitterを利用する場合等、OSでアクセス権を管理しているものは同様です。
ハードウェア機能の利用
アクセスガイド有効時もハードウェア機能は問題なく利用できるようです。全ての機能は試していませんが、カメラ・加速度センサ・ジャイロ・磁気センサ・GPSは問題なく利用できました。
通知センター
アクセスガイド有効時は通知センターは無効になっており、画面上端をスワイプすると出てくる通知センターのメニューも出てきません。
アプリの異常終了時
アクセスガイド有効時にアプリが異常終了すると、アクセスガイドが有効な状態でアプリが再起動されます。しかし、この動作が非常に不安定で、数回に1回程度の頻度でアプリが再起動されません。しかも、内部的にはアクセスガイドが継続されているようで、ホーム画面が表示されているにもかかわらずホームボタンが効かず、アクセスガイドを解除してくださいというメッセージが表示されます。
また、アプリが再起動される際には一瞬ホーム画面が表示されますが、その際にタイミング良く他のアプリのアイコンをタップすると、アクセスガイドが有効な状態でそのアプリが起動してしまいます。
アプリ異常終了時の再起動動作はあてにしない方が良さそうです。
スリープボタン+ホームボタン長押しによる強制リセット
スリープボタン+ホームボタン長押しによるOSの強制リセットは制限することができません。ただし、リセット後のOS再起動時にはアクセスガイドが有効な状態で元のアプリが起動されて復帰しますのであまり問題にならないと思います。
デバイスのバッテリー切れ
このケースは問題になる可能性があります。デバイスのバッテリー切れ後、充電をしてOSを起動するとアクセスガイドは終了しており、ホーム画面が表示された状態で復帰します。こうなると、ユーザーによって不正な操作が行われてしまう可能性があります。
この状態への対策としては、現状ではデバイスにパスコードロックを設定しておくことくらいしかできそうにありません。もちろん、通常の運用時にデバイスがスリープしてしまった場合も当然パスコードでロックされてしまいますので、この場合はスリープは無効にしておかないとユーザーがデバイスを操作できない状態になってしまいます。