1、YWAPI App初始化类
协议:IYWPushService,设置推送接收block
根据block中的字典获得app的启动状态和会话属性,从而做不同的操作
fetchIMKitForOpenIM 首次获取YWIMKit对象,并全局持有,如果获得该对象,则不用获取下面的对象了,该对象是openIM的UI接口,并自动持有一个YWIMCore对象
fetchNewIMCore 首次获得一个YWIMCore对象,并全局持有
2、YWIMKit 即时通讯UI层封装,遵循,是IM内部封装的UI操作,自定义要求不高可以直接使用
小规模自定义:IYWUIService内部定义的一系列属性及block回调,用于自定义局部自定义控件
openxxxxx 打开某个界面并进入(界面使用默认的)
makexxxxx 获得某个界面(一般用来做自定义界面)
dissmiss 关于IMUI界面,不会断开登录完全自定义:如果想要完全自定义控件,则UI层的代码都需要自己重新写,数据获取和通讯的连接使用
IMCore
属性
YWIMKit中的UI界面控制器,操作小规模自定义UI
1.YWConversationListViewController 会话列表界面
以下操作都是经过block来设置的,在用到的时候
(1)删除,点击某个会话的回调 可以设置
(2)无数据是的view可以自定义viewForNoData
(3)列表页左滑显示item,可以自定义,根据会话对象YWConversation
(4)自定义cell行高,根据会话对象YWConversation
(5)自定义cell,根据会话对象YWConversation
(6)自定义头像点击block(比如点击头像要进入个人空间,则需要定义这个)
从上面的展示可以看出,自定义cell的实现只要设置如上图代码的两个回调即可
分析上下效果图,可以知道自定义cell还需要实现哪些功能和接口
(1)群聊和单聊conversation需要判断,并获得数据展示不同的效果,群聊需要获得群名
(2)表情的处理,还需要实现表情的富文本处理
相对来说,默认的cell功能比较全,界面清新,且使用简单,所以使用默认的cell即可,也可以对某种类型的conversation做自定义。
2.YWConversationViewController 单聊界面或群聊界面,即聊天界面
功能:各类自定义,发送消息(多种消息,在聊天页面不完全自定义,即不用自己的tableview和输入框的情况下,发送消息基本用不上,IM UI 已经封装到YWConversationViewController去了)
(1)自定义插件
普通的YWConversationViewController ,不带插件,需要自己添加,默认的插件有4个,也可以自己添加,自定义插件需要实现YWInputViewPluginProtocol协议,并实现协议方法,比如点击事件的回调、插件的名称、图标等等。用法可以参考上面的默认插件
在自定义聊天界面的情况下,不想自定义插件,只需要这些默认插件,则可以调用
addDefaultInputViewPluginsToMessagesListController方法来添加默认插件
插件名 | 作用 |
---|---|
YWInputViewPluginTakePhoto | 拍照并发送图片 |
YWInputViewPluginPhotoPicker | 从相册选择并发送图片 |
YWInputViewPluginLocationPicker | 选择地理位置并发送 |
YWInputViewPluginEmoticonPicker | 表情 |
(2) 自定义表情
YW_TGZ_Emoitons.emo 文件是可以解压缩查看
可以自定义插件tab点击处理,发送按钮的处理,添加表情插件到指定位置等
(3)其他自定义
插件名 | 作用 |
---|---|
customTopView | 顶部自定义图片,bounds可以自己设置,位置默认居中,但意义不明~因为会挡住聊天界面 |
backgroundImage | 聊天页面背景图片,可以做成用户自定义 |
messageCustomMenuItemsBlock | 自定义消息长按功能,返回数组(元素是YWMoreActionItem) |
viewForNoData | 没数据的时候,显示的视图,bounds默认是整个页面 |
disableTitleOnlineDisplay | 是否支持在线显示 |
disableTextShowInFullScreen | 是否支持文字双击放大 |
3.可以自定义设置头像的填充模式和圆角半径
4.自定义IM服务器显示用户profile的来源fetchProfileForPersonBlock(一般用我方服务器根据personID查询用户信息,然后把头像,昵称等发送到IM服务器,发送成功后会在本地缓存一定时间,这个时间也可以自定义profileCacheExpireTime),当用户修改了昵称和头像后需要删除本地缓存,并自动调用fetchProfileForPersonBlock
5.自定义用户行为回调
(1)点击网址的回调 YWOpenURLBlock
(2)点击预览大图的回调 YWUIPreviewImageMessageBlockV3
(3)点击打开地理位置的回调 YWUIPreviewLocationBlock
(4)点击用户头像的回调 YWOpenProfileBlock,一般用来进入个人空间啥的
6.显示通知设置
YWIMKit内部处理通知的样式在YWShowNotificationBlock里设置,可以用SVProgressHud设置
7.全局颜色和气泡自定义
对于默认YMUIKit的的颜色操作,在CustomizedUIResources.bundle下的OpenIM-Theme.plist中,可以修改自己想要的颜色,上图的cell,昵称是红色的,就是由下图中Tableview-CellTitle这个字段对应的value#ff0000决定的。
CustomizedUIResources.bundle下还有一个wxo_bubble_customize.plist以及许多图片资源,这些就是用来设置气泡外观的,找到对应的名称,修改图片即可完成自定义
两个边缘结构体的说明
cap_insets:图片拉伸参数,对于形状较复杂的图片,我们的UI设计师给图的时候要加尺寸,如下图设计
edge_insets:内容适应背景的边缘间距
3、 YWIMCore OpenIM核心数据层对象
- YWIMCore是数据层的封装
- YWIMCore对象代表了使用OpenIM账号的上下文信息,可以从该对象中获得IM的各种服务。例如,您调用YWIMCore对象的登录服务登录成功后,可以调用- YWIMCore对象的会话服务获取会话并发送消息。
YWIMCore包含多个服务属性,每个服务属性遵循一个服务协议,每个服务协议中定义个各自能够完成的功能
下面罗列一些较为常用的服务,其他服务使用不多
每个Service都有对应的Def,会定义一些宏,常量,枚举,block等
协议 包括 | 内容 |
---|---|
IYWLoginService 登录与长连接服务 |
(1)获取当前登录用户的信息,id,显示名称等 (2)设置登录能力,用户名,密码等。输入不正确,则无法登录 (3)预登陆 (4)登录,登出 |
IYWConversationService 会话 |
(1)异步查看所有会话(包括群聊和单聊) (2)异步删除会话 (3)给某个会话添加收到消息的通知 (4)为自己的消息添加生命周期代理,可以在消息发送前,改变消息内容或者取消发送 (5)获得某个会话的所有消息,单个消息(消息model是IYWMessage) |
IYWTribeService 群组 |
(1)返回所有已加入群 (2)获得指定群的信息 (3)创建群 YWTribeDescriptionParam 创建参数 (4)加入群 (5)退出群 (6)解散群 (7)邀请人加入 (8)踢出某人 (9)设置成员为管理员或普通成员 (10)修改群成员昵称 (11)上述操作的一系列回调,和移除回调操作 (12)获取成员列表 |
IYWContactService 联系人 |
(1)黑名单 (2)好友的全部功能(增,删,改,接收他人添加请求的回调处理) (3)分组操作 |
IYWSettingService 设置 |
(1)设置是否推送 (2)设置是否接收消息(对单聊对象或群) (3)开关@消息功能 |
4、IYWMessage
YWConversation 根据会话id先获得一个会话对象YWConversation
用该对象的 asyncSendMessageBody:progress:completion 异步发送消息IYWMessage对象
当你接收到消息时,总是可以从messageBody中获取到对应的数据。
当你需要发送消息时,总是需要先构造对应的messageBody,将数据放入body中。
messageBody的类型有
YWMessageBodyText
YWMessageBodyImage
YWMessageBodyCustomize,还有语音,地理位置消息等