Wednesday, October 9, 2019

Settings URLs Supported by iOS and iPadOS 13.1

Federico Viticci (tweet):

A few weeks ago, I came across a post on Reddit claiming that Apple had restored the ability to launch specific sections of the Settings app via Shortcuts in iOS and iPadOS 13.1. I was inspired by that discovery to finish working on a project I had long been putting off: documenting all the URLs supported by the Settings app in iOS and iPadOS.

After some a lot of trial and error, I’ve collected 120+ URLs that can open individual pages and sub-sections of the Settings app. In this post, I’m going to share the complete list of URLs that are supported as of iOS and iPadOS 13.1 (specifically, iOS 13.1.2), as well as a custom shortcut to launch them.

For example, you can open the iCloud Backup settings using prefs:root=CASTLE&path=BACKUP.

The equivalent Mac System Preferences URLs start with x-apple.systempreferences.

Matthias Gansrigler:

So, using @viticci’s iOS Settings URLs (prefs:root) will get your app rejected. Figures.

Now, I’m not sure if it’s the prefs: url scheme itself, or if it’s prefs:root= that they’re having an issue with.

I’m guessing the latter, because before, I used prefs: to launch, and that wasn’t rejected.

I’d even argue using public APIs to open a URL constructed from a string doesn’t really constitute using “private API”, but what do I know..


Update (2020-02-26): Craig Hockenberry:

PSA: If you’re using a URL that begins with “prefs:” or “App-Prefs:” you will be rejected.

It doesn’t matter if you’re trying to help a customer navigate a byzantine maze of switches and knobs to do the thing they want. You will be rejected.

Craig Hockenberry:

In this specific case, I want someone to know that Dynamic Type settings can be adjusted to make the app work better for them.

In a way, Apple is preventing me from making things more accessible for a customer.

Update (2021-01-05): sindresorhus:

Many apps need the ability to open a specific pane in System Preferences. The most common use is to direct users to manually enable some kind of privacy permission or to toggle an app extension. I also use it to help the user change some system settings, like in “Language & Region”. Some panes support a URL scheme x-apple.systempreferences:, while for others we have to open /System/Library/PreferencePanes/\(name).prefPane. And to open sub-panes of the Extensions system preferences, our only choice is to use an API which is now deprecated (FB8910479). This results in a large amount of boilerplate. It would be nice if the system provided a unified API to open System Preferences panes and sub-panes. This would save developers a lot of time and headache.

Update (2022-10-27): Rich Trouton:

Along with this change [in macOS 13 Ventura], a number of previously-known commands for opening individual System Preferences preference panes from the command line no longer work with System Settings.

However, it looks like the underlying command line functionality wasn’t changed by Apple. You just need to know what the new options are to enter. For more details, please see below the jump.


1 Comment RSS · Twitter

"The equivalent Mac System Preferences URLs start with x-apple.systempreferences."

And, AFAIK, at least one of the Security & Privacy Pref Pane URLs is now broken in Catalina.

Leave a Comment