我完全迷失在一些听起来微不足道的事情中。据我所知,我的客户希望有某种在android中发生的行为,称为自动同步。
我正在构建一个带有视图控制器的应用程序,该应用程序具有从服务器检索的数据。每个视图控制器都显示对象列表,或者只显示一个对象。
当应用程序来自后台时,我的客户端希望发生一个请求,询问服务器是否有任何新对象要检索。如果答案是肯定的,我会收到我应该更新的视图控制器,当我在显示这些对象的视图控制器上时,我应该请求接收新对象并更新我的列表或视图。
不应该有来回的通知,因为这将是应用程序的内部过程,以使其始终更新。
因此,我的客户要求我建立这种行为,并让缓存系统正常工作。是否有任何良好的做法或解决方案来实现这一结果?
来自JavaScript背景,我将为您提供在运行JavaScript的Cordova类型移动应用程序上运行的答案。
1) 在移动设备上创建一个本地数据库,并将所有对象存储在其中
2)在数据库中创建一个表来存储"上次同步"的日期和时间
3)在服务器上设置API端点,以接受"上次同步"参数,并返回所有比上次同步日期和时间更新的数据
4)在每次加载页面时,向API请求检索最新信息并将其保存在本地数据库中
5)在每个后续页面加载时,加载新数据。(作为用户体验)
现在,如果您不想在每次页面加载时不断进行API调用,则有一种不同的方法。
在移动应用程序和服务器之间设置套接字连接
http://socket.io
这将允许您在每次更新服务器数据库时"推送"新数据。
当用户第一次打开应用程序时,调用API获取所有更新,并在socket.io频道上注册实时更新。
最重要的是当API调用提前终止并丢失一些信息时。仅在成功更新时更新您的"上次同步"日期时间。
也许一个好的答案是使用核心数据。然后根据需要同步本地结果,同时发出请求并合并本地和服务器响应。你必须决定哪位推荐人获胜。