仅适用于iPhone

Dat*_*shi 1 xcode ios

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

Kri*_*dra 7

我认为一个选项是UIRequiredDeviceCapabilities在应用程序info.plist中提供标志.你可以给,Telephony或者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
}
Run Code Online (Sandbox Code Playgroud)

如果无法发送短信,请显示一个警告框,指示相同.只需2行代码,但头疼和紧张感较小..