我需要通过互联网更新存储在外部数据库中的内容的设备上的本地数据库。此应用程序将用于制作订单,因此项目的奖品必须始终是实际的。目前,当我们看到带有进度条和某种公告的漂亮照片时,我就像开始画面一样。首先,我从外部服务器获取db的版本,如果它等于本地版本,我转到菜单屏幕。如果它不相等,我更新我的本地数据库,然后转到主菜单。此屏幕仅在我们午餐应用程序时打开。
我描述了我如何看待WP生命周期
应用程序只是第一次吃午餐,下次我们需要通过后退按钮关闭应用程序来获取午餐事件而不是总是像这样工作。我不确定,但我认为当我们很快启动应用程序并关闭它时,该应用程序将被停用而不会关闭。
当用户转到其他应用程序时,我们的应用程序进入休眠状态,当我们回到我们的应用程序时,它将被激活(不会被激活)
以下是显示应用程序生命周期的图片
我的问题是我们何时应该更新我们的应用程序?
我们无法用旧数据(奖品/产品)订购。 用户可以将我们的应用程序保持数周处于休眠状态,同时奖品可以上升或下降。另一方面,每当我们的应用程序被激活时,我们会检查更新,我们会创建大量流量,这对用户来说会很尴尬。 (用户在这里非常重要,因为他会玩它)。
您如何看待通过发送推送通知向应用通知更新。当应用程序收到通知时,它只显示更新屏幕并完成工作;)我认为这将是最好的方式,因为应用程序不需要每次都要求更新服务器,我们不会错过任何新内容。
任何建议和观点,你如何解决这个问题对我来说都是无价之宝。
答案 0 :(得分:1)
这是一个很棒的问题:您应该何时更新客户端上的数据,以确保使用该应用的用户始终保持最新状态?
不幸的是,这个问题没有绝对的答案可以涵盖所有人的所有情景。
如果价格变化是在可预测的基础上发生的,例如隔夜或某些时间,和/或一周的特定日期,最容易处理这种情况。
如果我们知道价格只在一天(或一周)的特定时间发生变化,我们可以通过检查自上次以来我们是否已经过检查来限制不必要的网络流量(因此延迟使用该应用)价格可能已经改变。
如果使用Silverlight技术构建应用程序(如果定位为7.X,8.0&可能是8.1,则会出现这种情况),那么当启动或启动启动或激活事件时,您应检查应用程序启动情况。
当然,在应用程序使用时可能会更改价格。在这种情况下,您可以在应用程序运行时向应用程序发送推送通知,告诉它更新数据。您可能还需要处理尝试购买但尚未收到或已采取行动的情况。更多关于以下内容。
当没有运行时,无法向此类应用发送消息以使其自动触发获取最新数据。
如果您想检查后台(当应用未运行时),那么您需要使用定期后台代理,该代理可以下载最新数据,以备下次使用该应用时。
如果为Windows Phone 8.1构建应用程序并使用新的应用程序框架(即不是Silverlight),则可以触发后台任务以从通知消息中下载最新数据。您可能还希望在设备未开启时错过任何通知的情况下触发设备检查 在应用启动时,您应该在激活或恢复事件后检查最新数据,以检查导航到(启动)应用程序的时间。
使用上述任何技术,您无法确定应用是否已收到通知其更新数据的消息,或运行后台任务以检查最新数据,甚至是否能够当应用程序未运行时,访问服务器以获取最新数据。这就是为什么除了在后台完成的任何检查之外检查启动是有意义的。
最终,如果价格可以随时更改并且必须使用/兑现最新价格,则有必要在购买时检查客户端上使用的最新服务器价格和产品的价值实际上是。 (实际上,你可能会检查这一点,以确保没有订购停产或缺货的产品。)
这应该是在其他时间同步数据所做的任何其他工作的补充。
答案 1 :(得分:0)
嗯,我认为你不应该绑定到应用程序的激活...如果每次用户要进行新订单或者他是否要更新他当前的购物车时检查更新怎么办?可能不是最新的价格,而是某种哈希首先,如果它不同 - 然后拉出整个更新的价格。这似乎是用户应该知道最新价格的最低必要情况。
有点
var serverHash = DataSetvice.PullHash(); // Get the latest hash from the server. Very short message containing only hash (or datastamp)
if (deviceHash != serverHash)
var updatedPrices = DataService.PullPrices();