含义 - 使用非公开 API 的应用将被拒绝

meaning of - Apps that use non-public APIs will be rejected

我们的应用因为使用了非公开的 APIs 被 iTunes 拒绝

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 API/s in your app: .......

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.

那个拒绝是什么意思?

是吗means:there是一些苹果界面"SomeAppleInterface"

// SomeAppleInterface.m
@implementation SomeAppleInterface

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

在我的代码中,我调用了 apple 类的私有 api:

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

是这个错误的意思吗?如果是,我怎么能调用这个私有方法,它在 h 文件中没有提到? 请帮助我理解

您要求对 a rejection 进行澄清,这很可能只是 Apple 的一个错误。这个列表看起来像一堆误报。他们只是说你似乎在调用一堆他们认为是私有方法的一部分的方法 API.

在这个问题中,你提供了一个稻草人,向我们展示了一个无法编译的私有方法的调用。你好像在问 "how could I have accidentally called the Apple private API?"

问题是,不小心调用私有 API 真的很难。您可以创建一个公开私有 API 的类别 @interface。还有其他方法,但这根本不是您可以不小心做的事情。你必须有意识地采取步骤来调用私人 API.

所以问题就变成了如何从 Apple 获得误报报告。有可能您根本没有使用 Apple 的私有 API,但碰巧在您自己的 类 中有具有相同签名的方法。这可能会导致误报,只需更改您的方法名称即可解决。

但在这种情况下,我认为发生了一些完全不同的事情,我认为在您收到 Apple 的回复之前不值得尝试追踪它。在您收到他们的回音之前,没有必要大谈特谈。