2017-08-12 31 views
0

我正在嘗試製作一個與WhatsApp完全相同的應用程序,迄今爲止最大的限制是,當用戶在一段時間後重新打開該應用程序並轉到Conversation View,新的Message秒應用程序處於後臺/暫停或終止狀態狀態必須從服務器(API)中恢復,這會導致Conversation View中顯示的新消息出現延遲。即使應用程序處於後臺/掛起/終止狀態,有沒有辦法讓CoreData與服務器API同步?

如何通過服務器API實現應用程序的永久同步?我很確定WhatsApp這樣的應用能夠做到這一點,因爲Message s永遠不會被下載,無論何時你重新打開該應用一段時間後,對吧?

什麼是正確的方式來模仿這種類型的行爲?我真的很想學習如何進行這種「高級」同步,我不知道從哪裏開始。再一次,我的目標是嘗試避免服務器下載新的Message,例如當用戶重新輸入Conversation View(例如,因爲這將是糟糕的UX)

在此先感謝!

+0

你不能真正得到完美的** **同步。你可以靠近。使用推送通知讓您的應用程序知道有消息要檢索。你也可以做一些*後臺處理來獲取更新。 – ryantxr

+0

是的,我開始意識到它不可能是完美的。但是,在進入它們所屬的ViewController後,是否應該下載「一些」數據(消息)?還是應該像在AppDelegate回調中那樣發生? – jlstr

+0

當應用程序進入前臺時,您可以加載所有對話的所有消息。然後他們在進入對話時已經加載。 – ryantxr

回答

1

您的應用將需要推送通知。這是一個必須有這樣的應用程序。

在服務器上,當您知道有新消息時,嚮應用發送推送通知。這會讓應用程序知道有消息要讀取。此時,應用可以標記應用圖標,彈出提醒並顯示在通知屏幕上。用戶控制通知的顯示方式。有關此通知

細節:當它得到通知 https://developer.apple.com/notifications/

您的應用程序可以加載的所有消息。

iOS應用程序確實有後臺進程的一些有限的選擇:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

+0

你好,這似乎正是我要找的。關於「使用推送通知啓動下載」和「獲取少量內容」的部分看起來很有希望。你有沒有碰巧找到一些Swift樣本?非常感謝先生。 – jlstr

+1

對不起。我沒有任何對此有幫助的代碼。推送通知有很多例子。寫一些代碼。如果您遇到困難,請打開一個新問題。 – ryantxr

相關問題