Troubleshooting steps for iOS App Store rejection issues
Common rejection reasons: The SDK contains a private API, such as UITabBarSwappableImageView, or Apple suspects that the app uses a hotpatching feature.
Example 1: Rejection because the SDK contains the private API UITabBarSwappableImageView.
Review the rejection reason from Apple.
The rejection reason is as follows:
NoteYour app also uses or references the following non-public APIs: UITabBarSwappableImageView. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience if these APIs change.
Update the SDK to version 3.2.0 or later. This version removes the private API.
Example 2: Was the app rejected by Apple because of the hotpatching feature?
Review the rejection reason from Apple.
The body of the rejection email is as follows:
NoteGuideline 2.5.2 - Performance - Software Requirements Your app, extension, or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with App Store Review Guideline 2.5.2 and section 3.3.2 of the Apple Developer Program License Agreement. This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes. This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts to change app behavior and/or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app. Important Information As a result of violating this guideline, your app’s review has been delayed. Future submissions of this app, and other apps associated with your Apple Developer account, will also experience a delayed review. Deliberate disregard of the App Store Review Guidelines and attempts to deceive users or undermine the review process are unacceptable and is a direct violation Section 3.2(f) of the Apple Developer Program License Agreement. Continuing to violate the Terms & Conditions of the Apple Developer Program will result in the termination of your account, along with any related or linked accounts, and the removal of all your associated apps from the App Store. We want to provide a safe experience for users to get apps and a fair environment for all developers to be successful. If you believe we have misunderstood or misinterpreted the intent of your app, you may submit an appeal for consideration or provide additional clarification by responding directly to this message in Resolution Center in iTunes Connect.
This guideline prohibits using the listed APIs in conjunction with a hotpatching feature. It does not prohibit the use of the APIs themselves. If your app includes these APIs but does not use hotpatching, the rejection is likely a mistake by the Apple review team. The Feedback iOS SDK does not use hotpatching features or integrate hotpatching frameworks, such as JSPatch or Rollout.js. If your app and any other integrated SDKs also do not use hotpatching, you can appeal to Apple. In your appeal, state that your app does not use any hotpatching features.
If the problem persists, you can join our DingTalk group for assistance. The group number is 35248489.