Objective-C
iOS
Swift

設定アプリの各画面に一発で遷移するURLスキームを使ってSafariの検索エンジン設定画面を開いてみる

More than 3 years have passed since last update.


設定アプリを開く方法

定数の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


さいご

公式な方法ではないと思うので、この方法を使う際は気をつけてください!

あと面白いスキームを見つけたら教えてください!


参考