(以下问题适用于移动平台(iPhone,Android,Blackberry))
我们正在将聊天功能集成到现有应用程序中。我设计了一个带有.Net Web服务和Sql Database的系统来跟踪聊天消息。到目前为止,当聊天窗口打开时,一切正常。
当他/她当前没有查看聊天屏幕时,我需要一种方法来通知用户新消息(意味着应用程序不在前台或者他们在应用程序的另一部分(而不是聊天屏幕) )。
显然,推送通知在这里很完美,但我不确定何时应该发送推送。
客户端如何发送消息,知道其他人是否正在查看聊天屏幕?我是否应该按每条消息发送推送信息并让接收设备决定是否需要弹出窗口或在nofication栏中显示某些内容?
每次发送邮件似乎都有点过分。这通常是怎么做的?
任何想法都会受到高度赞赏。
感谢。
答案 0 :(得分:4)
首先,请记住,您的服务器将充当不同聊天客户端之间传递的所有邮件的代理。以下是这可行的方法:
A
为用户B
B
。B
。现在为什么你需要推送每一条聊天消息?因为获得通知的唯一其他方式是轮询您的服务器以获取新消息。由于资源有限(电池,网络等),持续轮询(无论您确定的速率)在移动领域非常糟糕
在推送通知方案中,应用程序需要处理用户在收到新邮件时是否通知的逻辑。这意味着,当用户B
收到来自用户A
的新消息时,由您决定是否要通知B
(即将您的应用带到前台)或不。在任何一种情况下,您都希望使用推送通知而不是轮询。
在类似的说明中,用户B
不一定必须知道用户A
的应用程序(您的应用程序)处于后台,这就是您需要处理该逻辑的原因(在你的app)。
答案 1 :(得分:0)
如果应用程序不在前台,则通常会将推送通知应用于应用程序。这是一种唤醒应用程序以从服务器处理新事务的方法。基本上,如果客户端在后台运行并且准备从服务器获取新消息,则将执行推送通知。只要未提取新消息,如果其他消息到达服务器,则应向应用程序发送推送通知。
如果应用程序仍在运行,即使用户正在查看应用程序的其他屏幕,也不需要推送通知。然而,一个线程处理与服务器的连接是很重要的,该服务器“耐心地”等待来自服务器的事务。
一个问题,您使用什么协议进行消息传递?..是OMA IMPS协议吗?