我们需要在我们的应用程序中使用消息传递功能(就像在Facebook IOS应用程序中那样,告诉您新闻提要和聊天系统中有新故事)。请记住,Apple的推送通知似乎不会成为一种选择,因为有效负载很大并且交易频率可能很大,我们一直在寻求实现这一目标的方法。由于直接从IOS设备轮询我们的数据库也不是一个好主意,我们决定用Java实现TCP服务器。由于我们真的是没有经验的程序员(实际上是大学生),我有问题要问:
我们的Java程序如何知道我们的数据库中是否有任何更新?我们是否必须从Java代码内部轮询数据库?因为当这些更新发生时套接字代码已经在运行(显然是一个无限循环),我们如何从程序外部了解新的事情? TCP套接字最好是Java还是PHP?
我现在的想法是在客户端连接到套接字时使用Java轮询数据库。当有更新时,Java将其写入套接字。
这是正确的方法吗?或者你们有更好的主意?
由于我们的新手站,请具体说明。
非常感谢!
答案 0 :(得分:0)
您建议的解决方案仅在应用实际运行时才有效。 (也许,如果用户让它在后台运行,可能会瘫痪 - 请参阅Apple在iOS文档中的多任务处理以获取详细信息)。在后台运行时,您将无法显示用户可以看到的UI,并且您将无法在内置的iOS消息中心中提供消息或徽章。实施也需要做很多工作。
一种常见的方法是使用Apple推送通知,并让有效负载成为标识符,您的应用可以使用该标识符从API检索实际(较大)的有效负载。使用Apple推送通知有很多好处,例如紧密集成在操作系统中。
至于你的实际问题:一个解决方案是从Java代码中轮询数据库。但它实际上取决于实际数据的生成位置。你可以加入一些系统吗?在这种情况下,当某些内容发生变化时,让系统调用会更有效,然后您的Java代码就可以生成通知。