Iphone - 发生事件时从服务器通知客户端

时间:2012-11-02 06:27:42

标签: ios xmpp

我陷入困境

情况:我有一种情况,我会回答一些问题并根据已回答的问题获得积分。如果我的分数变成10,我会使用QRCode获得一些礼物。 (有一个为用户生成的qr代码,当从具有扫描仪应用程序或任何其他扫描仪的其他设备扫描qrcode时,它会提供指向该在线商店的链接。此链接可以从任何浏览器。)通过扫描QRCode从一些在线商店访问礼物,QRCode给出具有一些唯一ID的在线商店的链接,当访问/获取礼物时,服务器被通知礼物被访问/取自该在线礼品店,并且QRCode状态在服务器数据库上更新为无效。现在,一旦服务器收到正在访问/获取礼物的通知,服务器应立即通知我的iphone应用程序已收到礼物,以便我可以立即显示另一个祝贺图像或其他内容。

可能的解决方案:我想到了一种可能的解决方案,其中我每隔60秒检查服务器上的qrcode访问状态变化并相应地显示图像。我不知道这种方式有多么有效/正确。

问题但在我避开上述解决方案之前,我想知道,如果没有我的应用尝试从服务器调用或获取更新,是否可以从服务器发出此通知?我的意思是,只有在服务器以msg或某些xml或其他形式发送通知后,我的应用才会进入图片。

任何帮助都将深表感谢。

4 个答案:

答案 0 :(得分:1)

您可以尝试检查Push Notifications。但是在服务器端无法确定是否在客户端收到通知(如果您不自己实现,但您可能不会涵盖所有可能的情况,例如当您的应用未启动且通知发出时)。

答案 1 :(得分:1)

您可以使用CFReadStream打开与服务器的连接,将流添加到runloop并设置回调函数。只要服务器将数据写入打开的连接,您的回调就会触发,然后您可以从流中读取以获取服务器发送的数据

此处有更多信息:https://developer.apple.com/library/mac/#documentation/Networking/Conceptual/CFNetwork/CFStreamTasks/CFStreamTasks.html

答案 2 :(得分:1)

您可以尝试使用最常用于聊天/邮件的XMPP协议,其中服务器中的更改会通知客户端。

答案 3 :(得分:0)