项目范围:餐规划应用程序
首先,让我告诉你有关的项目和应用程序的功能。我们必须发展两个手机版的应用为iOS和Android平台。客户的想法是通知用户有关超市的营销活动(销售,特别优惠,等等)都在向顾客提供一个有用的膳食计划的工具。
应用程序包括一个定期更新画廊菜肴一起配方,原料可以出售在超市发现。用户可以设计菜单和添加食谱他们喜欢日历。基于他们所创建的菜单,应用程序的计算需要多少的每个成分,为用户提供了一个完整的购物清单。换句话说,用户不需要担心什么和在哪里买:所有原料可以在超市购买特价。听起来像一个杰出的的想法,但要做到这一点,必须解决的几个问题。
拖放
在我们遇到一些挑战,从图像传输的应用图像画廊到日历。
Android应用程序中,为了抢一个元素并将其拖到别处,你会用“长按”。长按是由画廊处理,也处理其他触摸事件。因此,如果用户将图像从画廊和向下沉沦的日历,画廊可能会开始滚动。我们想避免。
正确进行拖放工作,我们从画廊的触摸事件处理成一个全局坐标系统。因此我们设法避免画廊滚动和组织相互作用的传递元素和其他对象之间的陈列。
类似的问题出现在发展应用的iOS版。在iOS版本,TableView解释向下手势滚动。纠正我们决定禁用TableView的手势识别,当用户触摸需要移动到日历的图像情况。
数据更新和同步
一个更为复杂的问题是面临在实现数据更新和同步与服务器的机制。
首先,我们把这些过程的一个单独的后台服务,他们不干扰用户所做的。
那么,问题是什么?
首先,一个需求说明的程序应该全功能脱机工作时。因此,所有的数据 (包括特别优惠,菜谱,购物清单,等)应存储不仅在服务器上,而且在应用程序本身,所以用户可以脱机访问它。一旦一个连接互联网的出现,一个同步以前保存的数据与新数据的过程开始。
当然,所有数据都应该正确地显示在更新了。然而,问题是,应用程序包含大量的相关实体,其链接可以很容易破碎的更新过程。
作为一种方法来解决这些问题,我们采用数据缓存,还决定同步相关的代码部分之间的工作流程。
此外,我们要特别关注的日历,因为有一些另外的要求。首先,我们要将日历一个用户帐户,使家庭成员可以同时计划从不同的设备菜单,或者通过一个移动应用程序或网站。
这是说,在日历数据同步的过程应该只有在域更新成功的开始。从而可以避免从服务器接收未知的食谱。
通常,可以实现同步的变化很容易保存日期和比较,其变化是最近的。然而,在我们的情况下,我们遇到了一些困难,与第三方API。
一种选择是只使用lastmodifieddate场组织同步,在那里我们可以节省时间上改变服务器上的一个元素。但这还不够,计算时间差和比较装置上改变日期和服务器。这就是为什么软件外包公司添加当前服务器时间API。