我刚开始学习 OBJ-C,但我确实有一个正在努力构建的最终目标应用程序;此应用程序将是 iPad 上的主/详细应用程序,需要通过网络服务“实时”保持自身更新。当多个用户之一(在不同的 iPad 上)在应用程序中执行某些操作时,它还需要将数据发送到远程 MySQL 数据库。
编辑:正如 lxt 澄清的那样:““使用推送通知作为轮询 Web 服务的提示是否合适?” - 答案是这样的。
我为这个问题设想的示例是一个小部件库存管理器,它具有流入表视图的“传入”库存和用户将在详细视图中拖放库存的“库存存储箱” .
像这样:
注意:我的应用程序不要求自己在不在前台时保持更新。它可以愉快地睡去,直到它再次发射;此时,它需要使用最新数据进行自我更新。Kyle 使用applicationWillEnterForeground为问题的这个特定方面提供了答案:
为了在不使我的 web 服务服务器负担过重的情况下实现这一点,我设想了一种解决方案,它结合了 web 服务轮询和推送通知,以在一个用户 (iPad) 对数据进行任何更改时触发轮询。所以,流程是这样的:
无论用户可能执行任何操作,都会每分钟触发一次 Web 服务的“默认”轮询。
当用户从 tableview 中拖动库存项目并将其放入存储箱时,该存储箱将向登录到同一总体帐户的任何其他 iPad 发起 PUSH 通知并触发 Web 服务轮询以刷新其数据。
简而言之:每当 iPad“A”上的用户更改任何内容时,都会向 iPad“B”、iPad“C”等发送推送通知。当 B、C、D 等收到推送时,他们会轮询服务器刷新他们的数据。
另一种方法是让帐户上的每台 iPad 每 15 秒触发一次 Web 服务轮询;这对我来说似乎带宽昂贵(并且通常不会导致数据发生变化)。
我的问题不是“我怎么……?” 以及更多的“我应该如何......?”。我意识到 StackOverflow 可能会觉得这有点“主观”,但我认为这是一个非常有价值的问题,因为我花了两天时间研究这种具体做法(使用 PUSH 通知来触发 web 服务轮询)并且发现完全零相关文章。
感谢您抽时间阅读。任何帮助,将不胜感激。示例代码和/或特定框架/工具包信息将不胜感激。但现在我只需要知道这是否是个好主意。