設定アプリを開く方法
定数のUIApplicationOpenSettingsURLStringをNSURLにしてopenURLを実行
@available(iOS 8.0, *)
public let UIApplicationOpenSettingsURLString: String
Swift
if let url = NSURL(string:UIApplicationOpenSettingsURLString) {
UIApplication.sharedApplication().openURL(url)
}
Objective-C
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
実行
実行してみると設定 -> MyApp の画面が開く
本題
設定 -> MyApp の画面に遷移したところでできることが限られている。
本当にやりたいことは、設定アプリの各画面へ遷移させることです。
ex) 設定 -> 壁紙 に遷移し、画像を壁紙に設定してもらうなど。
方法
URL Scheme 設定
Target -> Info -> URLTypes ->URL Schemes に prefs を設定
実装
画面に対応するスキームをNSURLにしてopenURLを実行
この場合は設定 -> プライバシー -> カメラ の画面を開く
Swift
if let url = NSURL(string:"prefs:root=Privacy&path=CAMERA") {
UIApplication.sharedApplication().openURL(url)
}
Objective-C
NSURL *url = [NSURL URLWithString:@"prefs:root=Privacy&path=CAMERA"];
[[UIApplication sharedApplication] openURL:url];
Safariの検索エンジン設定画面を開いてみた
スキーム例
- 一般 "prets:root=General"
- Wi-Fi "prefs:root=WIFI"
- ソフトウェアアップデート "prefs:root=General&path=SOFTWARE_UPDATE_LINK"
- プロファイル "prefs:root=General&path=ManagedConfigurationList"
- キーボード "prefs:root=General&path=Keyboard"
- 位置情報 "prefs:root=LOCATION_SERVICES"
- 通知 "prefs:root=NOTIFICATIONS_ID"
- TouchID "prefs:root=TOUCHID_PASSCODE"
- 壁紙 "prefs:root=Wallpaper"
他にもたくさんあるので検索かけるなり、pathがそのまんまなので推測すると面白い画面に遷移させることができるかもしれませんね。
Sample Code
Safariの検索エンジン設定画面を開くサンプルでございます。
https://github.com/tochiba/OpenSettingApp
さいご
公式な方法ではないと思うので、この方法を使う際は気をつけてください!
あと面白いスキームを見つけたら教えてください!