推送:分为远程推送和本地推送
远程推送:顾名思义就是从苹果服务器推送过来的消息,这种推送需要目标设备的 deveiceToken 和 UDID, 其中前者是由程序的服务器提供给苹果服务器,后者是苹果服务器自己活得的,根据这两者可以讲消息唯一的推送给指定的目标.
本地推送:就是不经过苹果官方服务器进行的推送,最常用的就是极光推送,它的使用原理就的通过 socket 加心跳包的方式来实现, socket 可以理解为确定某台设备使用的,它是 IP 地址+协议+端口号.心跳包的作用就是通过不断的发送消息到客户端,判断用户是否在线,如果不在线则要用远程推送,如果在线则用本地推送.
即时通讯:常用的方式有 XMPP, 环信和融云
XMPP: 即可扩展通讯协议,官方提供的即时通讯协议.由于是即时通讯,所以使用的是自己的服务器来进行通讯的,这就需要常见本地服务器(openfire 服务器).它的通讯架构为 C/S 架构,通讯原理是通过 socket 来实现的,它在传输过程中传输的是 XML 数据流.因此 XMPP 通讯需要两个条件:openFire 服务器和 XMPP 框架
XMPP 使用原理:它是一种 C/S 架构模式,因此使用的原理是客户端通过
TCP/IP 连接到服务器,通过 socket 建立链接,然后在通道上传输 XML 数据流.
环信:环信是对官方的即时通讯协议进行的封装,因此使用的原理是一样的.环信的优点就是不用用户在自己创建服务器
环信的使用步骤:注册为开发者à获取 appkeyà 下载 SDKà 按照文档做事情
使用区别:
XMPP: 发送附件比较麻烦.这是由于 XMPP 没有提供发送附件的功能,要发送附件的话要自己实现,实现方法为:先将文件上传到文件服务器,然后获取文件路径,最后将文件路径发送给好友.
注:解析 XMPP 返回的数据的时候用的是 kissXML框架 而不是常用的哪几种框架.
环信:内部集成了服务器使用很方便,实现了数据缓存,实现了音视频等的发送功能.