2017-08-12 36 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

相关问题