2012-04-03 63 views
0

这将是我的第一个任何复杂性的iOS应用程序。我想概述组件和结构以获得一些反馈,然后再着手尝试。iPhone应用程序,服务器端组件,解析集成

从用户的角度来看,该应用程序监控当地湖泊的水位,并在水位改变用户指定量时接收推送通知。我认为使用Parse对于管理用户数据是最容易的,我会尝试在Nodester上使用Node.js服务器端组件(我知道一些基本的JS,并且认为它是一种很好的语言,可以熟悉它)。以下是我如何看到它工作...

  • 用户在设备上创建一个帐户,并指定他们将收到推送通知的金额。用户的数据被推送到Parse的数据管理。
  • 服务器端组件将运行该程序,每天3-6次:
    • 拉经由HTTP请求
    • 拉从解析用户数据的currentLakeLevel
    • 比较currentLakeLevel到用户指定lakeLevelChange
    • 如果差异=>lakeLevelChange,则发送推送通知HTTP发布请求,每个用户满足其指定条件
  • 解析接收POST请求,并发送推送通知到APNS服务器
  • 客户端收到推送通知

它实际上其时打了出来,听起来并不可怕复杂。这是构建这个功能的正确方法吗?我错过了什么?建议非常感谢!

+0

让我们在这里处理iOS应用程序吧。如果您对节点 – ControlAltDel 2012-04-03 20:25:51

回答

2

位:

服务器端组件将运行该程序,每天3-6次:
拉经由HTTP请求的currentLakeLevel。
从解析
拉用户数据的currentLakeLevel进行比较,以指定lakeLevelChange
用户如果该差=> lakeLevelChange,推送通知HTTP POST请求被发送,每其自己指定的条件满足用户

实际上,您也需要为每个用户保存最后一次警报级别。否则,增量更改可能会蔓延到用户的阈值并永远不会触发警报。

想象一下,如果我说我想在水平改变6英寸时收到警报。然后记录每次升高一英寸的七个事件。你没有观察到超过6英寸的变化,但总变化超过了我的通知阈值,我可能打算让你通知我这件事。

因此,当您触发警报时,您需要存储当前级别,然后在每次更改事件时,将其与您通知的最后一级进行比较。

+0

我没有想到这一点,但有道理,谢谢。 – mnort9 2012-04-03 20:44:46

+0

我会对此采取一种深思熟虑的方法来处理一个可能直到后来才被发现的案例。 – jmstone617 2012-04-03 22:27:20

1

你错过了不快乐的路径。这是程序员永远不会旅行,而程序总是旅行的路径。我们计划的方式没有任何变化,所以我们必须计划失败。问自己这样的问题:“当服务器因维护或中断而掉电并错过其3-6个预定运行中的一个或全部时会发生什么?” “错过的处决队伍应该排队并发出一堆错过的通知吗?” “当用户更改他们指定为lakeLevelChange但无线电出局和/或服务器请求无法完成时会发生什么?” “当Parse获取垃圾数据或产生垃圾日期时会发生什么?”只要询问其中的一部分,就可以引导您实现最佳设计。一个逻辑问题的

+0

有疑问,请打开另一个问题,谢谢。 – mnort9 2012-04-03 20:45:57