关于安卓QQ等即时通讯是怎么知道用户A是怎么发给用户B的

我打算写一个即时通讯app,qq是点对点即时通讯的,但是接收方不在线的话,服务器就要代理通讯了,但是怎么判断用户A是发给用户B,而不是发给用户C?

5个回答

和写信一样,消息放在信封上,信封上有寄件人收件人。

这里的信封就是qq协议中的报文头。收件人寄件人就是用户名。当然qq协议是加密的,而且也不公开。

我知道你在问什么,通过推送可以实现聊天功能,推送可以指定一个id发送消息或者tag。

至于推送是怎么查找手机发送信息。 其实手机有推送服务组件。 可以是百度的,可以是谷歌的,根据应用使用的推送sdk来定。
推送sdk会在应用首次启动时向 推送服务器提交唯一id值。并且组件会在后台与服务器进行 协议通讯。 如果推送服务器在某个id的数据表中存去了待发送命令。则组件就会通过查表知道有待发送信息,并在手机里进行通知处理。

至于qq等大型公司当然会有自己开发的推送协议。

学习下百度推送, 能解决你的问题,用百度推送demo中的onmessage接收消息通知宿主activity
,一切都用隐试传递方式既message方式。在onmessage 做判断是否登陆,是否是在使用,是否是晚上,来决定notfcaton还是直接传递数据到actvty。

网上已有demo,可以搜一下

每个用户都有一个唯一的ID,比如QQ号等,所以服务器可以保存这个接收方信息

很简单啊,根据QQ号,服务器可以判断是谁发给谁的

zuishikonghuan
zuishikonghuan 回复u010089114: 比方说,a发给不在线的b,然后服务器就把这条消息记到b那里,并注明是a发送的,然后b上线了,向服务器发送请求,服务器就把记录返回给b,b就知道谁给他离线发消息了
大约 5 年之前 回复
u010089114
u010089114 我的问题不是这个意思
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问