iPhone SDK Internet连接检测

时间:2009-02-27 20:39:11

标签: ios objective-c iphone

我正在开发一个iPhone应用程序,它可以调用Web服务。我在Apple商店发布了这个应用程序,但它被拒绝了(这是正确的),因为如果没有可用的Internet连接,则没有向用户显示错误消息。很明显,没有它,应用程序就无法运行。

所以我只想知道如何最好地实现这一目标?我猜测需要在viewDidLoad方法中添加一些警告框,说明“你需要一个Internet连接才能使用这个应用程序”。

任何想法都会受到赞赏。

3 个答案:

答案 0 :(得分:48)

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

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

如果您的选择不正确,那么在启动您的应用程序时将向用户显示相应的消息。最重要的是,这个消息来自操作系统,因此是本地化的。

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

答案 1 :(得分:28)

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

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

答案 2 :(得分:4)

警示词:当心SBUsesNetwork。我个人很想知道SBUsesNetwork最初的来源,因为我在Apple的文档中没有提到我能找到的任何内容。当我将键添加到我的应用程序的plist(作为布尔值)并设置为true时,它似乎不会影响我的应用程序的行为 - 我没有得到关于飞行模式的警告,无论是重新启动应用程序,还是前景化以前的发布是背景的。

我的应用已将UIRequiresPersistentWifi设置为true,这似乎也可以完成人们声称SBUsesNetwork所做的工作(以及其他内容!)。

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