App rejected from Apple store

Hello
After i submit ionic App to IOS App store it showing binary rejection. And also showing the following issues.

Guideline 2.5.1 - Performance - Software Requirements

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.

Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Next Steps

To resolve this issue, please revise your app to provide the associated functionality using public APIs or remove the functionality using the “prefs:root” or “App-Prefs:root” URL scheme.

How to solve this issue.

How and where are you using that? Why?

Where can i find the uses of “prefs:root=” non-public URL scheme ?

Go to your project’s target -> then Info -> then URL Types, there you should find URL Schemes with value like ‘perfs’ or ‘perfs:root’

from this StackOverflow answer: https://stackoverflow.com/a/51282521

Your problem is strange. So I find it interesting! But it doesn’t happen normally. Maybe you’re using some weird library?

Hello @Sujan12 @AaronSterling
URL scheme value show prefs
what to do next?

2018-08-21

Create a new Ionic project with ionic start and see if this is present there as well.

If it is not, you know that somehow you or one of the plugins you use added this. You can try to find out which one, or just remove it and see if everything still works.

What is your ionic info output?

Hello @Sujan12

ionic info output
cli packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.19.1
ionic (Ionic CLI) : 3.19.1

global packages:

cordova (Cordova CLI) : 7.1.0 

local packages:

@ionic/app-scripts : 3.1.6
Cordova Platforms  : ios 4.5.4
Ionic Framework    : ionic-angular 3.9.2

System:

ios-deploy : 1.9.2 
Node       : v8.9.0
npm        : 5.7.1 
OS         : macOS High Sierra

Environment Variables:

ANDROID_HOME : not set

Misc:

backend : pro

And plugin list

>

cordova plugin ls
com.synconset.imagepicker 2.1.8 "ImagePicker"
cordova-open-native-settings 1.5.1 "Native settings"
cordova-plugin-add-swift-support 1.6.0 "AddSwiftSupport"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-background-mode 0.7.2 "BackgroundMode"
cordova-plugin-badge 0.8.7 "Badge"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-fcm 2.1.2 "FCMPlugin"
cordova-plugin-file 5.0.0 "File"
cordova-plugin-file-transfer 1.7.0 "File Transfer"
cordova-plugin-geofence 0.7.0 "geofence"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-inappbrowser 2.0.2 "InAppBrowser"
cordova-plugin-ionic-webview 1.1.16 "cordova-plugin-ionic-webview"
cordova-plugin-local-notification 0.9.0-beta.2 "LocalNotification"
cordova-plugin-mauron85-background-geolocation 2.3.5 "CDVBackgroundGeolocation"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.3.0 "StatusBar"
cordova-plugin-stripe 1.5.3 "cordova-plugin-stripe"
cordova-plugin-whitelist 1.3.1 "Whitelist"
cordova.plugins.diagnostic 4.0.5 "Diagnostic"
es6-promise-plugin 4.2.2 "Promise"
ionic-plugin-keyboard 2.2.1 "Keyboard"
mx.ferreyra.callnumber 0.0.2 "Cordova Call Number Plugin"

I would search the plugins folder for the string “prefs” as a simple start to trying to find out if this is added by a plugin. And of course do what I wrote above as well.

Or maybe just on the whole project with some program that allows you to do that like VS Code

cordova-plugin-mauron85-background-geolocation 2.3.5 “CDVBackgroundGeolocation”

is the problem

Hello ,
My app has been rejected today because i am using the background location plugin ,
the rejection cause from apple is :
Apple Rejection Notice:

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.

Do you have any updated of background geolocation plugin or a solution to fix it ?
Thank you in advance for your help

You can simply remove the openURL call from LocationManager.m in the plugin if you can’t update to 2.3.6.