0

我们需要在我们的应用程序中具有消息传递功能(就像在 Facebook IOS 应用程序中告诉您新闻提要和聊天系统中有新故事一样)。请记住,Apple 的推送通知似乎不会成为一种选择,因为有效负载很大并且交易频率可能很大,我们一直在寻找自己实现此功能的方法。由于直接从 IOS 设备轮询我们的数据库也不是一个好主意,我们决定用 Java 实现 TCP 服务器。由于我们真的是缺乏经验的程序员(实际上是大学生),我有问题要问:

我们的 Java 程序如何知道我们的数据库中是否发生了任何更新?我们是否必须从 Java 代码内部轮询数据库?因为当这些更新发生时,套接字代码已经在运行(这显然是一个无限循环)我们如何从程序外部让它知道发生了新的事情?在 TCP 套接字方面,Java 或 PHP 更可取?

我现在的想法是当客户端连接到套接字时使用 Java 轮询数据库。当有更新时,Java 会将其写入套接字。

这是正确的方法吗?还是你们有更好的主意?

由于我们的新手站,请具体。

非常感谢!

4

1 回答 1

0

您提出的解决方案仅在应用程序实际运行时才有效。(也许,如果用户让它在后台运行,可能会残废 - 有关详细信息,请参阅 Apple 在 iOS 文档中的多任务处理)。在后台运行时,您将无法调出 UI 供用户查看,并且您将无法在内置的 iOS 消息中心中提供消息或徽章。实施起来也将是很多工作。

一种常见的方法是使用 Apple 推送通知,并将有效负载作为标识符,您的应用可以使用该标识符从您的 API 中检索实际(更大的)有效负载。使用 Apple 推送通知有很多好处,例如与操作系统紧密集成。

至于您的实际问题:一种解决方案是从 Java 代码中轮询数据库。但这实际上取决于实际数据是从哪里生成的。它是你可以挂钩的系统吗?在这种情况下,当某些事情发生变化时让系统调用您会更有效,然后您的 Java 代码可以生成通知。

于 2013-09-08T15:03:31.347 回答