2009-02-27 180 views
39

我正在致力于调用Web服务的iPhone应用程序。我在苹果商店发布了这个应用程序,但它被拒绝了(并且正确如此),因为如果没有可用的互联网连接,则没有向用户显示错误消息。由于显然这个应用程序没有它就无法运行iPhone SDK互联网连接检测

所以我只是想知道如何最好地实现这一目标?我猜一些需要去viewDidLoad方法,将抛出一个警告框,说“你需要一个互联网连接来使用这个应用程序”。

任何想法,将不胜感激。

回答

48

如果您的应用程序必须具有网络访问权限,最简单的方法是将以下设置作为布尔值添加到您的info.plist中。

  • SBUsesNetwork - 确保设备具有活动连接
  • UIRequiresPersistentWiFi - (编辑不适用,这似乎是在某些时候发现了一个私有API的人,是不是苹果的开发者文档中。)确保设备通过WiFi连接

如果您的选择不正确,那么在启动应用程序时,用户将看到适当的消息。所有这些信息都来自OS,因此是本地化的。

如果您的应用程序在运行时无法从网站下载数据(丢失信号,网站停止运行),您仍然应该警告用户,而不是无限期地旋转。

+0

伟大的提示,谢谢! – 2009-02-27 21:36:19

+0

优秀。谢谢。 – givp 2009-02-27 21:38:32

+1

您是否必须为“SBUsesNetwork”分配一个值或者将其添加为键?我无法在iPhone SDK或Apple Developer Support站点上找到任何文档:-( – 2009-03-26 00:30:31

28

Apple Developer Connection有一个示例应用程序(Reachability),它使用系统配置框架来确定网络状态。它会告诉你你是否有WiFi,EDGE/3G或没有互联网连接。

您将在应用程序中使用此代码的一部分来确定网络状态,然后在没有可用连接的情况下提供接口提示,如UIAlertView

4

警示词:谨防SBUsesNetwork。我个人很想知道SBUsesNetwork最初是从哪里来的,因为它在苹果公司的文档中没有提到,我可以找到它。当我将该键添加到我的应用程序的plist(作为布尔值)并设置为true时,它似乎不会影响我的应用程序的行为 - 我不会收到有关飞行模式的警告,无论是完全重新启动应用程序还是前景以前的发射是背景。

我的应用程序将UIRequiresPersistentWifi设置为true,这看起来也可以做人们声称SBUsesNetwork所做的工作(加上其他的东西!)。

(我在iPhone 4上运行iOS4.2.1,XCode 3.2.5 64位)。