iPhone SDK Internet连接检测

我正在开发一个iPhone应用程序,它会对Web服务进行一些调用。 我把这个应用程序发布到苹果商店,但是它被拒绝了(并且是正确的),因为如果没有互联网连接可用,没有向用户显示错误消息。 因为显然这个应用程序没有它就无法运行

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

任何想法,将不胜感激。

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

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

如果您的select不正确,则在启动您的应用程序时,用户将收到适当的消息。 所有这些信息最好来自操作系统,因此是本地化的。

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

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

您可以在应用程序中使用这些代码的一部分来确定networking状态,然后在没有可用连接(例如UIAlertView)的情况下提供接口提示。

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

我的应用程序有UIRequiresPersistentWifi设置为true,这似乎也做人们声称SBUsesNetwork所做的工作(加上其他的东西!)。

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