[Swift]アプリ内で設定アプリを開く方法いろいろ

アプリから設定アプリを開く方法をまとめました。

アプリから設定アプリを直接開く方法はiOS5.0.1まで可能だったそうですが、iOS5.1から禁止になったそうです。 しかしiOS8から復活。直接アプリから設定アプリを開けるようになりました。

通知やモバイルデータ通信など、設定アプリで設定してもらう機会は意外と多いです。そんなとき直接アプリから開けるようになれば、ユーザビリティが向上するでしょう。

それでは見ていきましょう。

実行環境

  • Xcode7.2
  • OSX Yosemite 10.10.5
  • Swift 2.1.1

UIApplicationOpenSettingsURLString を使う

UIApplicationクラスで定義されているUIApplicationOpenSettingsURLStringという定数を使うとアプリから設定アプリ呼び出せます。

遷移する設定アプリのページは、そのアプリにアプリ固有のプリファレンスがある場合はそのページヘ。プリファレンスがない場合は設定アプリトップに遷移します。 プリファレンスは 呼び出した設定アプリのページはトップになります。

以下のコードを実行すれば、設定アプリを開けます。

UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!)  

app-settings:スキームを使う

app-settings:というスキームを使っても設定アプリを呼び出せます。よくよくみたら、UIApplicationOpenSettingsURLStringの実態のようです。

呼び出した設定アプリのページはUIApplicationOpenSettingsURLStringと同じです。 プリファレンスがあるアプリはそのアプリのプリファレンスへ。 ないアプリは設定アプリトップになります。

UIApplication.sharedApplication().openURL(NSURL(string: "app-settings:")!)

prefsスキームを使う。

prefsスキームを使うと、設定アプリの様々なページに直接リンクすることができ、非常に便利です。
ただし、Targetに事前設定が必要です。 また、Appleから公式にアナウンスされているわけではないので、使用する場合は自己責任でおねがいします。 m(_ _)m

prefsを使うための事前設定

Target -> Info -> URLTypes ->URL Schemes に prefs を設定します。

prefsSetting

例えば、設定アプリ > 一般 ページへ遷移させたいなら "prefs:root=General"を指定します。

UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=General")!)  

他にもprefsで指定できるものはたくさんあります。

  • prefs:root=General&path=About
  • prefs:root=General&path=ACCESSIBILITY
  • prefs:root=AIRPLANE_MODE
  • prefs:root=General&path=AUTOLOCK
  • prefs:root=General&path=USAGE/CELLULAR_USAGE
  • prefs:root=Brightness
  • prefs:root=General&path=Bluetooth
  • prefs:root=General&path=DATEANDTIME
  • prefs:root=FACETIME
  • prefs:root=General
  • prefs:root=General&path=Keyboard
  • prefs:root=CASTLE
  • prefs:root=CASTLE&path=STORAGEANDBACKUP
  • prefs:root=General&path=INTERNATIONAL
  • prefs:root=LOCATION_SERVICES
  • prefs:root=ACCOUNT_SETTINGS
  • prefs:root=MUSIC
  • prefs:root=MUSIC&path=EQ
  • prefs:root=MUSIC&path=VolumeLimit
  • prefs:root=General&path=Network
  • prefs:root=NIKEPLUSIPOD
  • prefs:root=NOTES
  • prefs:root=NOTIFICATIONS_ID
  • prefs:root=Phone
  • prefs:root=Photos
  • prefs:root=General&path=ManagedConfigurationList
  • prefs:root=General&path=Reset
  • prefs:root=Sounds&path=Ringtone
  • prefs:root=Safari
  • prefs:root=General&path=Assistant
  • prefs:root=Sounds
  • prefs:root=General&path=SOFTWAREUPDATELINK
  • prefs:root=STORE
  • prefs:root=TWITTER
  • prefs:root=General&path=USAGE
  • prefs:root=VIDEO
  • prefs:root=General&path=Network/VPN
  • prefs:root=Wallpaper
  • prefs:root=WIFI
  • prefs:root=INTERNET_TETHERING

ぜひ使ってみてください

参考