67
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

設定アプリを開く方法

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

さいご

公式な方法ではないと思うので、この方法を使う際は気をつけてください!
あと面白いスキームを見つけたら教えてください!

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
67
Help us understand the problem. What are the problem?