2015-01-04 72 views
2

我們的應用程序通過,因爲使用非公開的API意義 - 使用非公開API的應用程序將會被拒絕

我們發現您的應用使用一個或多個非公開的API的iTunes都被拒絕了,這不符合App Store評論指南。使用非公開API是不允許的,因爲如果這些API發生變化,它可能導致糟糕的用戶體驗。

我們發現以下非公開的API /在你的應用程序: .......

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

拒絕的含義是什麼?

做它的意思是:有一些蘋果界面「SomeAppleInterface」

// SomeAppleInterface.m 
@implementation SomeAppleInterface 

- (void)SomePrivateAPI // this api doesn't exists in SomeAppleInterface.h file 
{ 
// ... some code 
} 

,並在我的代碼我打電話給蘋果類的私有API:

- (void)MyCodeMethod 
{ 
    SomeAppleInterface x; 
    [x SomePrivateAPI]; 
} 

是它這是什麼意思錯誤?如果是的話,我怎麼能打電話給這個私人的方法,它沒有在h文件中提到? 請幫我理解

+0

完整的錯誤消息附加到http://stackoverflow.com/questions/27730752/apps-that-use-non-public-apis-will-be-rejected我不問如何解決這個問題,我想要了解這個錯誤的含義 – user3896162 2015-01-04 13:41:08

+0

所以,我認爲Hot Licks的忠告是正確的,你回到他們說「這個拒絕通知沒有意義,因爲這些肯定不是私人的Apple API;請澄清」。很明顯,很多(如果不是全部)都不是嘗試調用私有API(並且不是巧合使用重複方法簽名)。 – Rob 2015-01-04 13:47:32

+0

感謝Rob,我會做到這一點,你能幫我理解非公開apis的問題嗎? – user3896162 2015-01-04 14:13:05

回答

3

您需要澄清a rejection,這很可能是蘋果方面的一個錯誤。這個列表看起來像一堆誤報。他們只是說,你似乎在調用一些他們認爲是私有API的一部分的方法。

在這個問題中,你提供了一個稻草人,向我們展示了一個不會編譯的私有方法的調用。你似乎在問「我怎麼會無意中調用Apple私人API?」

問題是,真的很難無意中調用私有API。您可以創建一個暴露私有API的類別@interface。還有其他方法,但這不是你無意中做的。你必須有意識地採取步驟來調用私人API。

所以問題變成了如何從蘋果公司得到一個誤報。有可能你根本沒有使用Apple的私有API,但恰巧在自己的類中有相同簽名的方法。這可能會導致誤報,只需更改方法的名稱即可解決。

但是在這種情況下,我認爲有一些完全不同的事情發生,我認爲值得一試,直到聽到Apple的迴應才值得嘗試。在你聽到它們回來之前,沒有必要把它弄得一團糟。

+0

「但碰巧在你自己的類中有相同的簽名方法」,是否意味着如果我使用私有方法(僅在m文件中)使用蘋果API的同名名稱,我也可能得到誤報?或只有公共API(在h文件上)? – user3896162 2015-01-04 15:33:36

+0

這當然不是您的.h文件中的接口中包含的問題(因爲它們無法訪問它)。這大概是看你的代碼調用方法的簽名。 – Rob 2015-01-04 21:26:26

相關問題