Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone app rejection for using ICU (Unicode extensions)

I received the following mail form Apple, considering my application:


Thank you for submitting your update to Νομοθεσία to the App Store. During our review of your application we found it is using private APIs, which is in violation of the iPhone Developer Program License Agreement section 3.3.1; "3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs." While your application has not been rejected, it would be appropriate to resolve this issue in your next update. The following non-public APIs are included in your application: u_isspace ubrk_close ubrk_current ubrk_first ubrk_next ubrk_open 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 with future submissions. Please resolve this issue in your next update to Νομοθεσία. Sincerely, iPhone App Review Team


The functions mentioned in this mail are used in the ICU library (International Components for Unicode). Although my app is not rejected at this point, I don't feel very secure for the future of my app, because it relies heavily on the Unicode protocol and on this components in particular. Another thing is that I do not call these functions directly, but they are called by a custom 'sqlite' build (with FTS3 extensions enabled).

Am I missing something here? Any suggestions?

like image 425
nickbit Avatar asked Mar 11 '10 19:03

nickbit


3 Answers

I would recommend not publicly venting about the issue (that will only hurt you in the long run), but responding politely to the application review email address you were given, explaining that you are using a custom SQLite build which references the ICU framework. Given that this is a standard third-party framework, I would argue that these are not Apple's private APIs that you are using. It may be that they were simply overzealous in the inclusion of symbols in their scanning software.

If you are unable to convince them otherwise, you might contemplate switching from SQLite with FTS3 to something like Aaron Hillegass' BNRPersistence, which just added fast full-text searching.

like image 128
Brad Larson Avatar answered Nov 20 '22 20:11

Brad Larson


If they have trouble with linking to the system ICU, why not simply import the ICU source code into your project?

like image 39
rpetrich Avatar answered Nov 20 '22 18:11

rpetrich


Hmmm...it is possible that Apple also uses ICU components. The best response would be to politely explain what's going on, and hopefully things should sort out okay.

like image 28
coderaptor Avatar answered Nov 20 '22 19:11

coderaptor