1

我的应用被拒绝了,因为它在 iPad 上崩溃了。老实说,它应该崩溃,因为它没有我的应用程序使用的 sim 卡(用于发送消息)。我在我的构建中制作了设备:iphone 和部署目标 iphone。然而出于某种原因,苹果公司的人仍然试图在 iPad 上运行它。我怎样才能让我的应用程序只适用于 iPhone?没有理由捕获异常并尝试在 iPad 或 iPod touch 上运行它,因为大多数应用程序功能都包含发送短信。我该怎么办?以及如何确保应用程序只能在 iPhone 上运行,而不是在 iPad 或 iPod touch 上

4

1 回答 1

7

我认为一种选择是在应用程序 info.plist 中提供UIRequiredDeviceCapabilities标志。你可以给Telephonyor sms,所以它应该过滤掉没有 sim 卡的设备。

来自iphone app 编程指南

UIRequiredDeviceCapabilities — App Store 使用此密钥来确定您的应用程序的功能,并防止将其安装在不支持您的应用程序所需功能的设备上

如果您阅读上述 pdf(第 93 页)中的App Releted Resources部分,应该会更好。

从上述文件中,

如果您的应用需要特定设备功能的存在或不存在才能运行,您必须使用应用的 Info.plist 文件中的 UIRequiredDeviceCapabilities 键声明这些要求。在运行时,除非设备上存在声明的功能,否则 iOS 无法启动您的应用程序。此外,App Store 需要此信息,以便它可以生成用户设备要求列表并防止用户下载他们无法运行的应用程序

它说,iOS 在启动之前会检查所需的设备功能。所以我认为你没有任何问题。关于模拟器,我不确定上述是否适用于他们,因为我们甚至可以在模拟器中模拟来电(你知道模拟器没有 SIM 卡)。所以我不确定在这种情况下有多少模拟器可以帮助你。

还有一件事,Apple 只会在应用程序在非 sim 设备上运行时崩溃时拒绝该应用程序。Apple 总是批准一个应用程序在使用它之前优雅地检查设备功能是否存在。在使用短信功能之前,您可以检查设备是否可以发送短信。

if([MFMessageComposeViewController canSendText]){
  // send sms
}

如果它不能发送短信,显示同样的提示框。只需 2 行代码,但不那么头痛和紧张..

于 2012-12-03T06:31:12.167 回答