本周希望能够接触一些即时通信的知识。 所谓心急吃不了热豆腐,所以还是先将官网的文档结合自己将可能需要的的功能进行梳理梳理。
极光推送,对于我来说最大的优点就是: 免费,或者说个人开发者具有免费学习实践的机会,据说还有好几个比较出名的服务商。很久前看的视频了所以记得不是很清楚。有些是免费的,有些是收费的。 另一个特点如果只是需要使用IM的功能,那么审核也是比较的容易。
开发的关键客户端对象:JMessageClient理解
它封装了所有与IM相关的细节,如服务端的位置,初始化一些组件,与硬件相关的依赖选择,以及初始化一些service,广播接收者等。 其实更像充当了我们与IM的一个中介者。 所有的操作都是对这个全局对象进行操作。 但是它又能保证灵活性,它的灵活性是通过回调函数的方式来实现的。
基于此,我们所有的操作均是通过这个客户端进行。 我们在使用各项功能,自然需要身份认证,也就是注册登陆等等。 从极光服务商的角度,它实际上需要几个信息: Appkey,标志哪一个应用; 用户名与密码以及其它的一些附加信息;AppSecret用于验证该应用的身份。 服务商对所有用户提供服务,但是它的方式是间接的。 这与前两天的springSecurity的练习可以得到一些类比启发。
从用户角度,可以看作直接与一个服务端的交互,所有的操作均是透明的。但是,实际上我们登陆了第三方应用,并不代表我们可以进行时时通信了,而是需要调用该抽象客户端进行登陆,以及其它的一些业务逻辑,我们才能算是真正的可以时时通信了! 并且在这个抽象的客户端,它维护了一套自己的用户身份信息。 但是这些信息可能与本应用的并不完全相同。但是我们可以在自己的相应的业务逻辑处进行切入,要做的操作时只需将相关的信息在进行操作一下到这个抽象客户端而已。
会话管理:
我们之所以要使用IM,是为了满足通信的需求。 在官方文档上对应的就是会话管理。 通过会话管理,我们可以发起单聊,发起群聊等。 它有这样的一些规则:
针对会话的一些相关的操作:(以对象的方式进行,对象的来源为,抽象的客户端类静态方法,通过参数定位唯一的一个会话,如:单聊通过username 和 appkey,群聊通过: groupId)
----------- 被动性质:
一些常用的事件实体类:
MessageEvent; MyInfoUpdatedEvent; MessageRetractEvent;
OffinelineMessageEvent; NotificationClickEvent; MessageReceiptStatusChangeEvent;
ConversasionRefreshEvent; LoginStateChangeEvent; CommandNotifacationEvent;
-----------------------------------------------------------------------------------------------------------------------------------------
GroupApprovalEvent; GroupApprovalNotificationEvent; ChatRoomMessageEvent;
GroupApprovalRefuseEvent; GroupMemNicknameChangedListener;
-----------主动性质:
群组相关主要API:
消息与对话的关系:
暂且就看和理解这么多吧,更多的信息在实践的过程中直接去看官方文档了。 地址在:这里