Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

confused about: (2.5) Apps that use non-public APIs will be rejected

I submit my App to App store, and after review it was rejected. Reason from Apple was:


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

*We found that your app uses one or more non-public APIs, which is not in compliance with the App Store Review Guidelines. The use of non-public APIs is not permissible because it can lead to a poor user experience should these APIs change. We found the following non-public APIs in your app:

dateWithCalendarFormat:timeZone:

hourOfDay

minuteOfHour

secondOfMinute

setNavigationBar:

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, one or more of the above-mentioned APIs may reside in a static library included with your application. If you do not have access to the library's source, you may be able to search the compiled binary using "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 techniques can help you narrow down where the problematic code resides.*


But, problem is that I did not declare or define any of methods with the names as the above-mentioned APIs. And I did not used any custom library. It is quite simple application (planer) and I used only: UIKit, CoreData, AVFoundation, Foundation and EventKit.

I send message to Apple yesterday, but still no answer.

Any ideas?

like image 941
Ivo Leko Avatar asked Aug 26 '11 12:08

Ivo Leko


1 Answers

You said in the comments above you used

 [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay]

Now, [datePicker date] returns an NSDate, whose documentation shows there's no public methods named dateWithCalendarFormat:timezone: nor hourOfDay etc.

So, you can't just use them.

As for setNavigationBar:, the property navigationBar of UINavigationController is a readonly property, as the documentation says. Therefore you can't set it.

When you compile your app, the compiler should have issued lots of warning about it, saying that the selector was not found, etc. You should always regard those warnings as errors, and eliminate them. This way you can avoid rejection after submission.

like image 119
Yuji Avatar answered Oct 17 '22 05:10

Yuji