客户端集成要点 @ 腾讯云通信

腾讯云通信 客户端集成提供了 Android SDK、iOS SDK、Windows SDK、Web SDK,本文以 Web SDK 为例,简要说一下集成要点;

DEMO运行指引
  • 有 demo,没做过的事儿都会变简单;
  • 下载 IM Web SDK 包(目前 1.6 版),解压放到 Web Server 下;
    IM_Web_SDK1.6\通用WebDemo_V1.6\WebDemo_v1.6\
├─css
├─fonts
├─img
├─js
│  ├─common
│  ├─friend
│  ├─group
│  ├─lib
│  │  ├─audiojs
│  │  ├─base64
│  │  ├─bootstrap
│  │  ├─jquery
│  │  └─md5
│  ├─login
│  ├─logout
│  ├─msg
│  └─profile
└─sdk
index.html
var accountMode=0; // 账号模式,0-表示独立模式;
var sdkAppID = 1400001533; // 开发者改成自己的业务 id;
var accountType = 792; //开发者改成自己的业务帐号类型
运行demo(独立模式):index.html
ImSDK 基本概念
  • SESSION 会话
    GROUP 群会话(群聊),C2C 会话(单聊);在 wph 业务里,我们都使用群会话;
  • GROUP_TIP_TYPE 群提示消息类型
    GROUP_TIP_TYPE.JOIN-进群,...;
  • MSG_ELEMENT_TYPE 消息元素类型
    文本消息,表情消息,图片消息,...;
消息收发
  • 监听新消息;
    当监听到一条新消息时,若为当前会话,则查阅发言人是否有在参与列表中;若不在其中,则调用 app sdk 参与列表接口,获取发言人昵称和头像;然后展示这条新消息;
    若新消息非当前会话,则累加新消息数,供相关页面使用;
  • 一条消息中可能包含多种消息元素;
群组管理
  • 游客:id=1;
  • 客服:id=3;
  • 创建群
    申请加群 返回 错误码 10010(群组不存在)时进行创建;
  • 获取群成员列表
  • 在一个群组留言时,当该群组不在 我的群组列表 中时,首先进行 申请加群
    如果是私聊群组,由于只有客户工程商双方,且由工程商发起,则由工程商直接创建群从业务上看也是没多大逻辑问题的,在创建群时指定成员列表即可;
  • 获取群历史消息
    最近 50 条;自我入群那一刻开始的所有历史消息;
    服务端集成的 拉取群漫游消息 对消息排序有阐述;
  • 由 AppServer 提供新接口,负责中转拉取群漫游消息,以满足可以查看自群开通以来的所有历史消息,而非自入群那一刻开始的所有历史消息;
错误码 示例
  • 10010(群组不存在);
  • 10007(操作权限不足,no permission);
    加群操作未完成时,发送群消息会出现此错误;
修改昵称
  • 修改昵称时,是否要同步到 ImServer?
    如果能够使用 app sdk 接口获取发言人的昵称和头像,则根本就没有必要同步到 ImServer;
  • 当 AppServer 昵称和 ImServer 昵称不一致时,以 AppServer 为准,前端调用 im web sdk 接口进行修复;
托管模式的登录机制
  • TLS登录(托管模式)
  • SDK 函数调用顺序
  • 对照看一下上面的两节内容,就明白了;
    当 im sdk 发现未登录(无 tmpsig),则指示用户使用 tls 提供的用户名/密码进行 tls 登录,登录成功后在回调 url 中会回传临时票据 tmpsig;im sdk 根据 tmpsig 获取正式的 userSig(fetchUserSig),成功后会回调 tlsGetUserSig(res) 函数(app client 自己实现)从结果中取出 identifier 和 UserSig 即可;后面的事情和独立模式的就一样了;
web im 1.6 目录全貌
│  index.html
│  
├─css
│      bootstrap-table.css
│      bootstrap.css
│      jquery-ui.css
│      webim_demo.css
│      
├─fonts
│      glyphicons-halflings-regular.eot
│      glyphicons-halflings-regular.svg
│      glyphicons-halflings-regular.ttf
│      glyphicons-halflings-regular.woff
│      
├─img
│      2016.gif
│      2017.jpg
│      icon.png
│      icon_1.png
│      layer_arrow.png
│      ui-bg_diagonals-thick_18_b81900_40x40.png
│      ui-bg_diagonals-thick_20_666666_40x40.png
│      ui-bg_flat_10_000000_40x100.png
│      ui-bg_glass_100_f6f6f6_1x400.png
│      ui-bg_glass_100_fdf5ce_1x400.png
│      ui-bg_glass_65_ffffff_1x400.png
│      ui-bg_glass_65_ffffff_1x400_1.png
│      ui-bg_gloss-wave_35_f6a828_500x100.png
│      ui-bg_highlight-soft_100_eeeeee_1x100.png
│      ui-bg_highlight-soft_75_ffe45c_1x100.png
│      ui-icons_222222_256x240.png
│      ui-icons_228ef1_256x240.png
│      ui-icons_454545_256x240.png
│      ui-icons_ef8c08_256x240.png
│      ui-icons_ffd27a_256x240.png
│      ui-icons_ffffff_256x240.png
│      wlf_bg.png
│      wlf_title_bg.jpg
│      wlf_title_btn.jpg
│      
├─js
│  │  base.js
│  │  switch_chat_obj.js
│  │  
│  ├─common
│  │      show_one_msg.js
│  │      
│  ├─friend
│  │      friend_black_list_manager.js
│  │      friend_manager.js
│  │      friend_pendency_manager.js
│  │      
│  ├─group
│  │      group_manager.js
│  │      group_member_manager.js
│  │      group_pendency_manager.js
│  │      
│  ├─lib
│  │  ├─audiojs
│  │  │      audio.min.js
│  │  │      audio.min_my.js
│  │  │      audiojs.swf
│  │  │      player-graphics.gif
│  │  │      
│  │  ├─base64
│  │  │      base64.js
│  │  │      base64.min.js
│  │  │      
│  │  ├─bootstrap
│  │  │      bootstrap-collapse.js
│  │  │      bootstrap-table.js
│  │  │      bootstrap.js
│  │  │      
│  │  ├─jquery
│  │  │      jquery-ui.js
│  │  │      jquery.js
│  │  │      
│  │  └─md5
│  │          spark-md5.js
│  │          
│  ├─login
│  │      login.js
│  │      
│  ├─logout
│  │      logout.js
│  │      
│  ├─msg
│  │      get_history_msg.js
│  │      receive_friend_system_msg.js
│  │      receive_group_system_msg.js
│  │      receive_new_msg.js
│  │      receive_profile_system_msg.js
│  │      send_common_msg.js
│  │      send_custom_group_notify_msg.js
│  │      send_custom_msg.js
│  │      switch_play_sound_msg.js
│  │      upload_and_send_pic_msg.js
│  │      
│  └─profile
│          profile_manager.js
│          
└─sdk
        json2.js
        webim.js
        webim.min.js
        webim_no_emotion.js
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,758评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,061评论 25 707
  • 腾讯具有高并发、高可靠的即时通信能力;利用 腾讯云通信 提供的 SDK 可以将即时通信功能快速集成到自己的 APP...
    michael_jia阅读 3,112评论 2 4
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,342评论 0 1
  • 不同于亚索久远的回忆,祖安平原上正上演着一场厮杀。 “该死!突围!锐雯你先走,我断后”,眼见洛克萨斯援军抵达,奎因...
    化浊阅读 411评论 0 1