0

这将是我的第一个具有任何复杂性的 iOS 应用程序。在我开始尝试之前,我想概述一下组件和结构以获得一些反馈。

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

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

它实际上在输入时听起来并不复杂。这是构建此功能的正确方法吗?我错过了什么吗?非常感谢您的建议!

4

2 回答 2

2

有点逻辑问题:

服务器端组件每天将运行此程序 3-6 次:
通过 HTTP 请求拉取 currentLakeLevel。
从 Parse 中提取用户数据
将 currentLakeLevel 与用户指定的 lakeLevelChange 进行比较
如果差异为 => lakeLevelChange,则根据满足其指定条件的每个用户发送推送通知 HTTP Post 请求

您实际上还需要为每个用户存储最后警报的级别。否则,增量更改可能会超出用户的阈值,并且永远不会触发警报。

想象一下,如果我说我想在液位变化 6 英寸时收到警报。然后,您记录七个事件,其中水平每次上升一英寸。你从来没有观察到超过 6 英寸的变化,但总变化超过了我的通知阈值,我可能是想让你通知我。

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

于 2012-04-03T20:39:27.610 回答
1

你错过了不愉快的道路。这是程序员从不走的路,而程序总是在走。没有什么事情会按照我们的计划进行,所以我们必须为失败做好计划。问问自己这样的问题,“当服务器因维护或中断而断电并错过其 3-6 次预定运行中的一个或全部时会发生什么?” “是否应该将错过的处决排队并发送一堆错过的通知?” “当用户更改了他们指定为 lakeLevelChange 的内容但收音机已关闭和/或服务器请求无法完成时会发生什么?” “当 Parse 获取垃圾数据或产生垃圾日期时会发生什么?” 只询问其中的几个将引导您走向最佳设计。

于 2012-04-03T20:36:00.677 回答