2009-02-27 151 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位)。