2015-01-04 73 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

相关问题