As far as I know, Apple doesn’t allow apps to directly navigate users to the Call Blocking & Identification settings screen. That’s why many apps just show instructions like: "Go to Settings > Phone > Call Blocking & Identification" to enable the app. Apple only officially provides UIApplicationOpenSettingsURLString, which takes users to the app's own settings page. But here’s where I’m confused: some Korean apps like Whowho and Adot Phone seem to be able to direct users to the Call Blocking & Identification screen. Whowho: https://apps.apple.com/kr/app/whowho-spam-block-callerid/id1033450260?l=en-GB Adot Phone: I'm wondering how these apps are doing that. Are they using some kind of private API or workaround? Those app are developed from Internet Serivce Provider Company.
Apple only officially provides UIApplicationOpenSettingsURLString, which takes users to the app's own settings page.
Not exactly. The actual requirement here is that apps should not use private API to open arbitrary locations in Settings.app. There are API open specific locations on behalf of apps (with "UIApplicationOpenSettingsURLString" being on example), which is what's happening here.
I'm wondering how these apps are doing that. Are they using some kind of private API or workaround?
No. Expanding on the answer above, the CXCallDirectory method "openSettings(completionHandler:)" allows an app to shift the user into the "correct" screen in Settings.app.
Lastly, that leads to here:
That’s why many apps just show instructions like: "Go to Settings > Phone > Call Blocking & Identification" to enable the app.
Not exactly. Part of the reason why this happened is that while CXCallDirectory.openSettings(completionHandler:) is not new (it's from iOS 13), in earlier system versions the Settings.app section it opened was ONLY used for CXCallDirectoryExtensions, not the broader extension set it opens in iOS 18. I suspect blocking apps didn't use it to opens settings because it was easier to explain the "full" setting navigation path instead of trying to explain to the user that they need to back "out" of the UI the app just opened.
It's also possible apps are simply unaware of the option. Many of these apps are quite old and this new method was introduced three release (iOS 13.4) after CXCallDirectory extensions (iOS 10.0).
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware