阿里百川即时通讯 梳理

作者: 任性不认命ToT | 来源:发表于2016-08-17 16:49 被阅读6760次

    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.png 自定义配置cell.png 自定义的cell
    默认的cell

    从上面的展示可以看出,自定义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决定的。


    自定义颜色.png

    CustomizedUIResources.bundle下还有一个wxo_bubble_customize.plist以及许多图片资源,这些就是用来设置气泡外观的,找到对应的名称,修改图片即可完成自定义

    自定义气泡聊天框

    两个边缘结构体的说明
    cap_insets:图片拉伸参数,对于形状较复杂的图片,我们的UI设计师给图的时候要加尺寸,如下图设计
    edge_insets:内容适应背景的边缘间距

    cap_insets
    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,还有语音,地理位置消息等


    相关文章

      网友评论

      • 382b3a82991d:想问下,你有木有遇到这种情况:解散社群的时候,没解散成功结果第三方返回值是成功,用户点击此社群的时候提示“第三方社群添加失败”
      • LambZhou:'NSInvalidArgumentException', reason: '+[NSInvocation _invocationWithMethodSignature:frame:]: method signature argument cannot be nil'这个报错知道是什么原因吗?
      • 不要动:你们的账号是那里注册的,我用了,我在阿里百川那里注册了,可是用来登陆即时通讯,登陆失败。
      • Schorem:请问博主能收到推送吗? 按照文档检查了两遍了, 还是没找到收不到推送的原因
        Schorem:@金煜祥_261b 我的原因是推送证书搞错了
        f98a9a2165c1:你找到原因了吗,我也是收不到推送
      • 98c2ec8027ab:博主能交流下么
      • flowerflower:方便加下扣扣吗?
        flowerflower:@123432 ?
        98c2ec8027ab:你好,你最近在研究阿里百川么?能交流下么 QQ439826207
        98c2ec8027ab:@flowerflower 你好,你用到阿里百川即时通讯?能交流下么
      • flowerflower:可以加你扣扣,交流一下吗,最近公司用到这个。

      本文标题:阿里百川即时通讯 梳理

      本文链接:https://www.haomeiwen.com/subject/mdjusttx.html