71
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

設定アプリを開く方法

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

さいご

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

参考

71
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?