"prefs:root=" non-public URL scheme

I'm working on an app which I inherited from another developer. The app had previously been published to the app store.


When I tried to publish it again with my updates, Apple rejected it with this complaint:


Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.


I did not add this code. I did search the app and did find a reference to "prefs:root=Bluetooth". It looks like the previous developer was trying to open the Bluetooth preferences on behalf of the user in the case when Bluetooth is not enabled. As the app is made specifically to communicate with a Bluetooth device, this is a helpful feature.


Is there some other way to do this, or must I simply remove this functionality in order to pass App Review?


Thanks,

Frank

Replies

I cannot say something sure about App Review, and the representative of App Review have never answered and would never answer here.


But reading some tens of reports from developers world-wide on `prefs:root` (or some other non-public URL Schemes),

the answer to Is there some other way to do this is No.

or must I simply remove this functionality in order to pass App Review?

Yes. You can show some guidance screen to show how users can enable Bluetooth, but cannot directly open the Settings for Bluetooth.


If someone find a workaround about this, Apple would fix that hole in the next month.

And there's no slight sign of some public APIs for this purpose being provided.