2009-04-28 73 views
2

我的應用程序需要Internet連接。看起來,如果我將iPhone閒置一段時間,它會關閉它的3G連接。一旦我將其喚醒(幻燈片解鎖)並運行我的應用程序,它就無法連接到Internet。我必須首先運行Youtube或Safari,然後才能連接互聯網,然後我必須關閉Youtube/Safari,然後才能使用我的應用程序登錄到我的服務。iPhone 3G連接啓用

能否讓我知道如何從我的應用程序激活3G連接(這樣我可以直接從空閒狀態喚醒後使用我的應用程序,而且我不必運行其他應用程序,如Youtube/Safari?

感謝

回答

2

要禁用空閒計時器,請查看UIApplication類的idleTimerDisabled property

從蘋果:

此屬性的默認值是 NO。當大多數應用程序沒有 觸摸作爲用戶輸入的短期 時間段時,系統會將設備 置於「睡眠」狀態,其中屏幕 變暗。這是爲了達到節約能源的目的而完成的。然而, 應用程序沒有用戶輸入 除了在 加速度計的遊戲,例如,可以通過 這個屬性設置爲YES, 禁用「空閒定時器」,以避免 系統休眠。

重要須知:您應該只在必要時設置此屬性 屬性,並且當 不再需要時,應確保將其重置爲NO。大多數 應用程序應該讓系統 關閉屏幕時,空閒 計時器過去了。這包括音頻 應用程序。在適當使用 音頻會話服務時,播放和 錄製將在屏幕關閉時不會中斷。應該禁用空閒計時器的唯一的 應用程序是映射應用程序, 遊戲或類似的程序與零星的用戶交互 。

+0

感謝您的回覆Martin。這並不能解決原來的問題。我仍然需要啓動youtube/safari類型的應用程序來啓用3G連接,然後我可以運行我的應用程序。而且,這種方法也會消耗iPhone電量。 – ebaccount 2009-04-29 00:09:36

2

顯然有另一種更好的解決方案,但你可以用加載一個空白頁:。

[NSString stringWithContentsOfUrl ... ] 

,如果有必要的連接將被建立

+0

你可以讓我們知道API嗎? – ebaccount 2009-04-29 00:17:40

+0

@raihan - 你在這裏的API是什麼意思?只需執行remy的代碼:[NSString stringWithContentsOfUrl ...]再次訪問互聯網 – Raj 2009-04-29 08:58:05

0

你確定你正在建立連接嗎?我的應用程序使用套接字來做同樣的事情,並且在設備休眠之後重新建立連接沒有問題。在SystemConfiguration框架中使用Reachability API以在覆蓋範圍可用時獲得通知,並在此之後進行連接嘗試。請注意,在設備喚醒以獲得互聯網連接後,必須等待幾秒到幾分鐘時間,因此請耐心等待。

有來自Apple的Reachability示例,還搜索stackoverflow的可達性,你會發現更多的提示如何實現它。

1

只有NSURLConnection(以及其上層的任何API)在從睡眠狀態喚醒後重新初始化數據連接。要重新初始化數據連接,請創建一個虛擬NSURLConnection到非本地地址並立即取消;那麼socket API將按預期工作。

上有開發者論壇一個帖子裏的蘋果開發詳細說明了這一點(但我不能在此刻找到它)

0

其實,當您在更改網絡設置,得到了同樣的問題您的手機在應用程序啓動之間。例如,假設您在啓動應用程序時使用WIFI連接。然後關閉應用程序並關閉WIFI,以便設備使用運營商的網絡。當你重新啓動應用程序時,套接字將無法連接,除非你使用虛擬NSURLConnection(或者在啓動應用程序之前啓動瀏覽器)。

此外,在初始化它(使用connectionWithRequest或initWithRequest)之後取消NSURLConnection並不適用於我。請不要取消請求,或者在取消請求之前等待一段時間(例如,使用performSelector:withObject:afterDelay :)。