困惑于:(2.5)使用非公共API的应用程序将被拒绝
我将我的应用程序提交到应用程序商店,经过审核后被拒绝。 Apple 给出的原因是:
2.5:使用非公开 API 的应用将被拒绝
*我们发现您的应用使用了一个或多个非公开 API,这不符合 App Store 审核指南。不允许使用非公共 API,因为如果这些 API 发生更改,可能会导致糟糕的用户体验。 我们在您的应用中发现以下非公开 API:
dateWithCalendarFormat:timeZone:
hourOfDay
分钟OfHour
SecondOfMinute
setNavigationBar:
如果您在源代码中定义了与上述 API 名称相同的方法,我们建议您更改方法名称,以便它们不再与 Apple 的私有 API 发生冲突,以避免您的应用程序在将来的提交中被标记。
此外,上述一个或多个 API 可能驻留在您的应用程序附带的静态库中。如果您无权访问该库的源代码,您可以使用“strings”或“otool”命令行工具搜索编译的二进制文件。 “strings”工具可以输出库调用的方法列表,“otool -ov”将输出 Objective-C 类结构及其定义的方法。这些技术可以帮助您缩小有问题的代码所在的范围。*
但是,问题是我没有声明或定义任何名称与上述 API 相同的方法。而且我没有使用任何自定义库。这是一个非常简单的应用程序(planer),我只使用了:UIKit、CoreData、AVFoundation、Foundation 和 EventKit。
我昨天给苹果发了信息,但仍然没有回复。
有什么想法吗?
I submit my App to App store, and after review it was rejected.
Reason from Apple was:
2.5: Apps that use non-public APIs will be rejected
*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 APIs in your app:
dateWithCalendarFormat:timeZone:
hourOfDay
minuteOfHour
secondOfMinute
setNavigationBar:
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.
Additionally, one or more of the above-mentioned APIs may reside in a static library included with your application. If you do not have access to the library's source, you may be able to search the compiled binary using "strings" or "otool" command line tools. The "strings" tool can output a list of the methods that the library calls and "otool -ov" will output the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides.*
But, problem is that I did not declare or define any of methods with the names as the above-mentioned APIs. And I did not used any custom library. It is quite simple application (planer) and I used only: UIKit, CoreData, AVFoundation, Foundation and EventKit.
I send message to Apple yesterday, but still no answer.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在上面的评论中说您使用了
Now,
[datePicker date]
返回一个NSDate
,其 文档显示没有名为dateWithCalendarFormat:timezone:
或hourOfDay
等的公共方法。因此,您不能只使用它们。
至于
setNavigationBar:
,UINavigationController
的属性navigationBar
是一个只读属性,正如文档所说。因此你无法设置它。当您编译应用程序时,编译器应该发出大量警告,指出未找到选择器等。您应该始终将这些警告视为错误,并消除它们。这样您就可以避免提交后被拒绝。
You said in the comments above you used
Now,
[datePicker date]
returns anNSDate
, whose documentation shows there's no public methods nameddateWithCalendarFormat:timezone:
norhourOfDay
etc.So, you can't just use them.
As for
setNavigationBar:
, the propertynavigationBar
ofUINavigationController
is a readonly property, as the documentation says. Therefore you can't set it.When you compile your app, the compiler should have issued lots of warning about it, saying that the selector was not found, etc. You should always regard those warnings as errors, and eliminate them. This way you can avoid rejection after submission.