2016-04-27 142 views
5

我使用websocket與Swift 2來維護應用程序和服務器之間的一些數據。這個websocket在前臺和後臺狀態下工作正常,但是當我終止(kill)app時,websocket連接中斷。當再次進入應用程序時,它將再次開始工作。當應用程序處於終止狀態時,保留活動websocket

注:

  • 所有背景,VOIP等權限給出。
  • 一般來說,websocket不能在後臺工作,我已經想通了 解決方案繼續工作在後臺狀態和當設備鎖定時 。
  • 嘗試了靜默推送通知,它調用了websocket連接的 方法,但發生了靜默推送通知,但方法 僅在回到應用程序時才起作用。

因此,任何想法和建議都讚賞有關如何在應用程序處於終止(終止)狀態時保持活動websocket?

提前致謝!

+0

你永遠不會有一個處理程序,使用無聲推動,只有當應用程序再次激活它將被處理。我真的無法看到這樣做的方式。 – Brduca

+0

@Brduca - 我沒有得到任何處理程序,並且只有當我回到應用程序時,無聲推送通知纔有效。任何人都可以知道其他選項嗎? – Hasya

+0

Hasya,這就是我要告訴你的。這是不可能的。 – Brduca

回答

3

這是不可能的。當用戶終止應用程序時,所有事情都隨之而來,如果情況並非如此,那麼用戶將無法停止應用程序執行奇怪的事情(除了重新啓動整個設備)。

此外,你不應該嘗試一些奇特的東西來避開系統限制,因爲這將最終導致應用程序拒絕你發佈到商店和/或在應用程序運行時不滿意電池壽命的用戶。

+0

非常感謝Wain,我需要知道你的一件事情,例如app處於kill狀態,app將推送通知稱爲「來電」,1分鐘後再次將另一個推送通知作爲「未接來電」,但我還是很喜歡碰到任何通知,那麼當通知欄(欄)中出現「未接來電」通知時,我們是否可以清除/刪除「來電」推送通知? (用戶還沒有碰過任何東西) – Hasya

+0

不,沒有辦法編輯該列表,iOS爲您處理(與用戶交互有關) – Wain

+0

Wain,Skype iOS應用程序如何發生? Skype.your的幫助會發生在我身上。 – Hasya

0

您可以嘗試使用可用內容的推送通知來實現您正在查找的行爲,這會讓您有時間清醒地在後臺下載內容(更多信息here),爲此您的有效負載應該是結構類似,

{ 
    "aps" : { 
     "content-available" : 1 
    }, 
    "data-id" : 1234 
} 

然後實現下面的方法來下載內容,或在你的情況做一些與你的web套接字

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

此方法只應使用在更新一些狀態你的應用程序或下載一些數據,Apple建議不要使用它來保持你的套接字始終處於活動狀態,如果你使用它來保持你的套接字始終處於活動狀態,我肯定會最終拒絕你的應用程序。

+0

我知道這一點,並已實施,靜默推送通知無助於保持Web套接字活着。但是這隻有在從終止狀態返回到應用程序時才起作用。非常感謝很多弗朗西斯科。 – Hasya

相關問題