Non public api usage iOS App - Invalid Binary - ios

Whenever i try to upload a binary, Apple is giving me this error. Last month, I uploaded a version and it got successfully uploaded, i have not made many changes in the code in this version - just minor bug fixes, but now, it's giving me this error. Please help.
Email by Apple :
Dear developer,
We have discovered one or more issues with your recent delivery for "Schoofi". To process your delivery, the following issues must be corrected:
Non-public API usage:
The app contains or inherits from non-public classes in Schoofi: XCTestCase
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.
If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview#apple.com. For further information, visit the Technical Support Information page.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team

You shouldn't include XCTestCase in your apps binary. Tests don't need to be apart of the submitted binary. Make sure the test classes are only included in your test bundle and not your apps bundle, by checking the appropriate check boxes in the file inspector on the right pane in Xcode.

Related

How to fix the _ADBannerContentSizeIdentifierLandscape, non-public symbols

I got apple mail following content:
We identified one or more issues with a recent delivery for your app, "App name". Please correct the following issues, then upload again. ITMS-90338: Non-public API usage - The app references non-public symbols in "App name": _ADBannerContentSizeIdentifierLandscape, _ADBannerContentSizeIdentifierPortrait. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/
Get above error message app store when upload the app too app store, i removed the iAd.framework reference related all pods and library but still i got same error email.
Any have solution for this error, please share your thoughts..,
Thanks.
I think the best idea might be to send a TSI because that is sounding like an apple problem.
The final solution is to remove the Mobile App Tracker framework in the project.

iTunesConnect app has one or more issues - Non-public API usage

I received the below email shortly after I submit my app to the AppStore from XCode Organizer. My app contains the framework in this GitHub (https://github.com/wujianguo/iOSAppsInfo), I use it to create shortcuts to the rest of the users installed applications, and ONLY for that purpose.
Is there a different way of getting a list of all installed apps so I can create shortcuts or will all methods be instantly rejected as below?
Dear developer,
We have discovered one or more issues with your recent delivery "shortcut-app". To process your delivery, the following issues must be corrected:
Non-public API usage:
The app references non-public selectors in Xxxx xxxx: _applicationIconImageForBundleIdentifier:format:scale:, allInstalledApplications, appTags, applicationProxyForIdentifier:, localizedShortName, openApplicationWithBundleID:
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.
If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview#apple.com. For further information, visit the Technical Support Information page.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
This library uses private API which you cannot use especially when you submit the app to apple, as they will reject it like this.
I am not aware of another way to get installed apps, but in order for apple to accept uploading the app, you must stop using this library, specially this method.

iOS app built from xcode but not showing build in iTunes Connect

I have built an iOS app and trying to update the version and upload it to AppStore. Its getting uploaded from Xcode and am getting the success message. But i could not find the build in itunesconnect. For a while its shown in activity tab with processing status but while refreshing it gets disappeared.
Sometime, its will takes time to appeared on ITC.
Still it not seen on ITC, then please upload one more time using Application Loader but change the build version.
Lets try it
Make sure your Info.plist has all the keys that you're trying to access.
I had the same issue on Friday. Submission was successful, but then I was waiting for hours, tried Application Loader, changing version number, all with no luck.
A day later got email from Apple:
Dear developer,
We have discovered one or more issues with your recent delivery for "MyAppName". To process your delivery, the following issues must be corrected:
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSAppleMusicUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
In case (like me) you're using Appcelerator, there was a bug in 5.5.1 resolved in 6.0.0. Find out more about it here
‌I had exactly the same problem. On the 3rd rebuild after a version number change while it was uploading I watched the iTunes Connect ->Activity->All Builds page. It appeared there 'processing' for 2 minutes. It then disappeared. However I then got an email from Apple telling me that it had been rejected because it uses the camera and photo library. iOS 10 has stricter control of privacy issues. It only requires a string against the correct key in the .plist to resolve - the keys are of the type 'NSPhotoLibraryUseageDescription' (or 'Privacy - Photo Library Useage Description' depending on how the plist is viewed).
It is extremely frustrating that the first two uploads did not result in any message from Apple - why cant they keep the build on the Activity page with some info about the reason it failed? Why do they not send an email every time they reject a build? I have wasted an entire day on this!
If you are suffering from this issue, have a think about what you are accessing and see if there is an appropriate privacy useage description string you can add to your plist. I see from various forums that some frameworks ask for a whole raft of permissions that you may not think your app needs - try adding every privacy useage description temporarily to see if that resolves the problem
Actually my app had watch extensions which was not removed properly. So once i removed them from "Build Phases" -> "Embed Watch Content", it got solved.

App rejection issue 2.5.1: Apps that use non-public APIs will be rejected (Since iOS10)

we just got my rejection from Apple about some non-public API "contectId". The only thing I have done since I upgraded to the latest Xcode and Titanium SDK (Also with the newest macOS), this became a problem.
I know that there's steps here in the message, but is this an Titanium bug or something?
--
Hello,
Thank you for your resubmission.
Performance - 2.5.1
Your app still uses or references the following non-public APIs:
contextId
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.
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
Best regards,
App Store Review
Although it was not really a Titanium-issue than more an issue with Apple detecting false positives, this issue has just been fixed in Titanium 5.5.1.GA and later, thanks!
I've also had two App updates rejected due to this reason.
Over the same period I've had others approved.
One common item between the two App updates that were rejected is the use of the following property set in my project:
<property name="run-on-main-thread" type="bool">true</property>

Card.io cause Non-public API usage

I got some trouble when I try to upload my app to AppStore.
Apple reject the app with these error message:
Non-public API usage:
The app references non-public selectors in MyAppiOS: cardNumber, cardType, libraryVersion, navigationBarStyle, navigationBarTintColor, preload, setCardNumber:, setNavigationBarTintColor:
Deep searching told me that the Card.IO is causing the problem, indeed it has all the above selectors.
The same code was uploading successfully. What can be the cause of such behavior?
The same code was uploading successfully. What can be the cause of such behavior?
Apple is continuously updating the checks they do on submitted applications. This means that re-submitting a new version, even with a trivial change, can sometimes end up rejected because of the new checks.
Your best bet is to ensure you're using the latest version of the library. An update might already be available for you - unless you're in the first people affected. In the later case you should file an issue with the developer or, since it's open source, re-compile a version of the library that excludes those symbols.

Resources