【发布时间】:2011-11-04 11:43:46
【问题描述】:
我将我的应用提交到应用商店,但在审核后被拒绝。 苹果的原因是:
2.5:使用非公开 API 的应用将被拒绝
*我们发现您的应用使用了一个或多个非公共 API,这不符合 App Store 审核指南。不允许使用非公共 API,因为如果这些 API 发生变化,可能会导致糟糕的用户体验。 我们在您的应用中发现了以下非公共 API:
dateWithCalendarFormat:timeZone:
hourOfDay
一分钟
secondOfMinute
设置导航栏:
如果您在源代码中定义了与上述 API 同名的方法,我们建议您更改方法名称,以便它们不再与 Apple 的私有 API 冲突,以避免您的应用程序在以后的提交中被标记。
此外,上述一个或多个 API 可能驻留在您的应用程序随附的静态库中。如果您无权访问该库的源代码,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。 “strings”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的方法。这些技术可以帮助您缩小问题代码所在的范围。*
但是,问题是我没有声明或定义任何名称为上述 API 的方法。而且我没有使用任何自定义库。这是一个非常简单的应用程序(planer),我只使用了:UIKit、CoreData、AVFoundation、Foundation 和 EventKit。
我昨天给苹果发了信息,但还是没有回复。
有什么想法吗?
【问题讨论】:
-
快速 grep 您的源代码以获取其中之一的实例(例如
secondOfMinute)。他们出现在任何地方吗? -
如果您没有调用任何使用私有 API 的 Apple 代码,并且您联系了他们,请等待回复。
-
方法 dateWithCalendarFormat:timeZone:, hourOfDay, minuteOfHour 和 secondOfMinute 我在我的代码中只使用了一次: int hour = [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] hourOfDay]; int min = [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] minuteOfHour]; int sec = [[[datePicker date] dateWithCalendarFormat:nil timeZone:nil] secondOfMinute];其中 datePicker 是来自 UIDatePicker 类的对象:@property (nonatomic, retain) IBOutlet UIDatePicker *datePicker;在 setNavigationBar 方法中也是如此。我没有声明或定义这些方法。
标签: objective-c ios app-store-connect appstore-approval