Hi,

I’ve application in Ionic, on submission on Store it got rejected saying I’m using some non-public APIs. Below is response received from them.

From Apple

2.5 - Apps that use non-public APIs will be rejected

2.5 Details

Your app still uses or references the non-public APIs, which is a violation of the App Store Review Guidelines. Specifically, your app includes a misuse of the UIWebBrowserView private class.

The use of non-public APIs is not permitted in the App Store because it can lead to a poor user experience should these APIs change.

Next Steps

Please revise your app to remove any non-public APIs. If you have defined methods in your source code with the same names as the above-mentioned APIs, we suggest altering your method names so that they no longer collide with Apple’s private APIs to avoid your application being flagged in future submissions.

Additionally, if you are using third party libraries, please update to the most recent version of those libraries. If you do not have access to the libraries’ source, you may be able to search the compiled binary using the “strings” or “otool” command line tools. The “strings” tool can output a list of the methods that the library calls and “otool -ov” will output the Objective-C class structures and their defined methods. These tools can help you narrow down where the problematic code resides. You could also use the “nm” tool to verify if any third party libraries are calling these APIs.

Resources

For information on the “nm” tool, please see the “nm tool” Xcode manual page.

If there are no alternatives for providing the functionality your app requires, you may wish to file an enhancement request.

If you have difficulty reproducing a reported issue, please try testing the workflow described in Technical Q&A QA1764: How to reproduce bugs reported against App Store submissions.

If you have code-level questions after utilizing the above resources, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide: complete details of your rejection issue(s)

screenshots

steps to reproduce the issue(s)

symbolicated crash logs - if your issue results in a crash log

I feel some of plugin is using it. Kindly check following plugin list

cordova-plugin-camera 2.1.0 "Camera"

cordova-plugin-console 1.0.2 "Console"

cordova-plugin-datepicker 0.9.3 "DatePicker"

cordova-plugin-device 1.1.1 "Device"

cordova-plugin-dialogs 1.2.0 "Notification"

cordova-plugin-geolocation 2.1.0 "Geolocation"

cordova-plugin-inappbrowser 1.2.1 "InAppBrowser"

cordova-plugin-network-information 1.2.0 "Network Information"

cordova-plugin-splashscreen 3.2.0 "Splashscreen"

cordova-plugin-statusbar 2.1.1 "StatusBar"

cordova-plugin-whitelist 1.2.1 "Whitelist"

cordova-plugin-x-socialsharing 5.0.10 "SocialSharing"

cordova-plugin-x-toast 2.4.2 "Toast"

cordova.plugins.diagnostic 2.3.10 "Diagnostic"

ionic-plugin-keyboard 1.0.8 "Keyboard"

onesignal-cordova-plugin 1.11.2 "OneSignal Push Notifications"

org.pushandplay.cordova.apprate 1.1.7 “AppRate”

Also system info

ionic -v

1.7.14

ionic info

Your system information:

Cordova CLI: 6.0.0

Gulp version: CLI version 3.9.1

Gulp local: Local version 3.9.1

Ionic Version: 1.2.4

Ionic CLI Version: 1.7.14

Ionic App Lib Version: 0.7.0

ios-deploy version: 1.8.4

ios-sim version: 5.0.4

OS: Mac OS X El Capitan

Node Version: v5.3.0

Xcode version: Xcode 7.2 Build version 7C68

I don’t understand which plugin/element is causing this issue. Can you guys help to understand or guide on nm tools