簡體   English   中英

混淆:(2.5)使用非公共API的應用程序將被拒絕

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

我將我的應用程序提交到App商店,並在審核后被拒絕。 Apple的理由是:


2.5:使用非公共API的應用程序將被拒絕

*我們發現您的應用使用了一個或多個非公開API,這些API不符合App Store審核指南。 不允許使用非公共API,因為如果這些API發生變化,可能會導致糟糕的用戶體驗。 我們在您的應用中發現了以下非公開API:

dateWithCalendarFormat:時區:

HOUROFDAY

minuteOfHour

secondOfMinute

setNavigationBar:

如果您在源代碼中定義了與上述API相同名稱的方法,我們建議您更改方法名稱,以便它們不再與Apple的私有API發生沖突,以避免在將來的提交中標記您的應用程序。

此外,上述API中的一個或多個可能位於應用程序附帶的靜態庫中。 如果您無權訪問庫的源,則可以使用“strings”或“otool”命令行工具搜索已編譯的二進制文件。 “strings”工具可以輸出庫調用的方法列表,“otool -ov”將輸出Objective-C類結構及其定義的方法。 這些技術可以幫助您縮小有問題的代碼所在的位置。*


但問題是我沒有聲明或定義任何名稱為上述API的方法。 我沒有使用任何自定義庫。 這是非常簡單的應用程序(刨床),我只使用:UIKit,CoreData,AVFoundation,Foundation和EventKit。

我昨天給蘋果發了消息,但仍然沒有回答。

有任何想法嗎?

你在上面的評論中說過你用的

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

現在, [datePicker date]返回一個NSDate ,其文檔顯示沒有名為dateWithCalendarFormat:timezone:的公共方法dateWithCalendarFormat:timezone:還是hourOfDay等。

所以,你不能只使用它們。

對於setNavigationBar: , UINavigationController的屬性navigationBar是一個只讀屬性,正如文檔所述。 因此您無法設置它。

編譯應用程序時,編譯器應該發出很多關於它的警告,說沒有找到選擇器等。你應該始終將這些警告視為錯誤,並消除它們。 這樣您就可以避免在提交后拒絕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM