設定等の標準画面を開くURLはiOS5.1では使えない。

アプリケーションからシステム標準の設定画面、例えばネットワーク設定画面等を呼び出したいことがままある。
Androidの場合、こんな時は"ACTION_WIFI_SETTINGS"インテント一発でシステム画面を呼び出すことができる。

iOSの場合はこんな芸当はできないだろうと思っていたのだが、先日調べてみた所iOS5までは以下の方法で出来るということが判った。

iOS5で全般(General)設定画面を呼び出す
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]];

これをiOS5.0シミュレータ上※で実行すると実際に全般設定の画面が表示される。

実行結果

おー、iOSもAndroid並とは行かないがIntentぽいことが出来るんじゃないか。これは素晴らしい。

ところがこれはiOS5.0までの話であり、iOS5.1上で全く同じコードを実行しても何も起きない。
試しにiOS5.1シミュレータのSafariで同URLを開いて見たのだが、やはり上手く行かない。(iOS5.0では開ける)

prefs:root:General

どうやらiOSレベルでこの方法がブロックされてしまっているようだが、この辺はiOS5.1β時代からの話らしい。
iOS 5.1 Disables Home Screen Settings Shortcuts

ブロックされている理由は恐らくセキュリティだろう。
このハックはこっそり通話を行う、メールを送信する等の悪用が出来てしまう訳で、内部に手を突っ込まれるのが嫌なのは判るが、システムの機能を共有したいという要求があるから皆使うわけで、代替えの方法は提供されていないのだろうか。


※iOSのシミュレータは非常に再現性が高く重宝する。Windows Phone7の時もその再現性には感心したが、Androidだけはいろいろと劣るのが残念だ。