概要
iOSには、アクセスガイド(Guided Access)の機能があり、動かせるアプリを1つに制限することができます。
このエントリでは、筆者が「アクセスガイドを有効にしているときにアプリが落ちた場合はどのような挙動になるのか」がふと気になり、実験してみた内容を紹介します。
ご注意
- ご自身でも実験される場合には、アクセスガイドについてAppleのサイトの説明をよく理解した上で取り組まれてください。特に、アクセスガイドをパスワード付きで設定した上で、パスワードを忘れてしまうと解除ができなくなります。ご注意下さい。
- アクセスガイドを理解しないで使用すると大変なことになる場合があるので注意してください。
- アクセスガイドを理解しないで使用すると大変なことになる場合があるので注意してください。(大切なことなので2回繰り返しました)
前提
本エントリでは、下記を使用しています。
- iPhone 13 mini / iOS 15.1.1
- Xcode 13.1
- Mac Book Air (Apple Silicon) / macOS Monterey (12.0.1)
準備
実験用アプリのコードを書く
こういった見た目の実験用アプリを書きました。
主なコードは下記の通りです。(SwiftUIだと、短いコードで書けていいですね。)
いちおう、GitHubにも置いてありますが、XcodeでSwiftUIの新規プロジェクトを作ってコピペをすれば動くはずです。
struct ContentView: View {
var body: some View {
VStack {
VStack {
Text("🦁Terminate self by ...👻")
.padding()
Button("☠️calling abort()", action: {
abort()
}).padding()
.accentColor(Color.white)
.background(Color.red)
.cornerRadius(10)
.shadow(color: Color.pink, radius: 5, x: 0, y: 5)
Button("🍽consuming much memory", action: {
var buf:[UInt8] = []
buf.reserveCapacity(Int.max)
}).padding()
.accentColor(Color.white)
.background(Color.red)
.cornerRadius(10)
.shadow(color: Color.pink, radius: 5, x: 0, y: 5)
}
}
}
}
シミュレータでアプリを実験
Xcodeで動作対象をシミュレータにしてアプリを起動し、「Calling abort()」ボタンを押すと、SIGABRTのシグナルでアプリが停止します(下図)。期待通りです。
実機でアプリを確認
Xcodeで動作対象を実機iPhoneにしてアプリを一度動かした後、iPhoneからLightningケーブルを外します。アプリを起動し、「calling abort()」ボタンを押すと、アプリが落ち、ホームスクリーンに戻ります。期待通りです。
実験
アクセスガイドを有効にする
Appleのアクセスガイド(Guided Access)のサイトをよく読み、設定します。
(再掲)アクセスガイドを理解しないで使用すると大変なことになる場合があるので注意してください。
実験用アプリをアクセスガイド下で動かしてみる
準備のところで作ったアプリを動作させます。
アプリを開始してからアクセスガイドを開始し、「calling abort()」ボタンを2回ほど押して、それぞれアプリがまた前面で動き出している様子が下図です。
おわりに
このエントリでは、アクセスガイドを有効にしているときにアプリが落ちた場合はどのような挙動になるのかについて、実験してみた内容を紹介しました。
想像した通りではありましたが、実際に確認できて満足しました。