【征稿活动】Geek Online 社区第一期投稿激励计划已启动! 置顶

技术活动梅川酷子 发表了文章 • 3 个评论 • 689 次浏览 • 2020-08-27 19:40 • 来自相关话题

为了回馈社区用户长期以来的支持,营造良好的社区技术氛围,鼓励更多开发者交流技术心得、分享技术实操方法及经验,创作更多优秀内容。特面向所有社区注册用户,举办第一期 Geek Online 社区投稿激励计划活动。活动时间征稿时间:长期有效评审时间:9、10&nbs... ...查看全部

为了回馈社区用户长期以来的支持,营造良好的社区技术氛围,鼓励更多开发者交流技术心得、分享技术实操方法及经验,创作更多优秀内容。特面向所有社区注册用户,举办第一期 Geek Online 社区投稿激励计划活动。

活动时间

征稿时间:长期有效

评审时间:9、10 月每月最后一周进行

面向对象

Geek Online 社区所有注册用户

内容要求

对技术的介绍、产品的分析等技术类内容均可,也可以是个人实际操作的方法或经验总结,可供参考方向:

1、融云产品相关,选题包括:集成 IM 或 RTC 的使用体验、操作攻略、案例分享等。

2、结合市面上热度较高的事件/现象,从技术视角挖掘开发逻辑、产品解读等。

参赛规则

1、投稿需符合上述内容要求,图文并茂,排版美观,无错别字,代码规范。

2、在 Geek Online 社区发布文章参与,标题格式为【GeekOnline 投稿 | XXXXXXXXXX

3、稿件字数在 500 字以上

5、投稿数量不限,但所有稿件内容必须为 2020 年 8 月 27 日后作者本人新发内容

6、投稿人社区账号头像、昵称、个人介绍需资料完善

7、稿件投递后 个工作日内完成初审,并通过社区消息、邮箱通知。

评分细则

1、每月底将对当月参赛稿件进行评比,满分 10 。其中,

影响力 3 分,由社区内热度(阅读数)、互动量(点赞、评论数)加权计算;

专业性 7 分,由 Geek Online 技术专家及编辑组成的评审团,从文章实用性、创新性及代码规范度等方面综合评定给分。

2、我们鼓励投稿内容与融云产品相结合,对于此类稿件将给予社区置顶等曝光机会,增加文章影响力。

奖励

1、所有稿件通过初评,即可获得 Geek Online 加油包 1 份(内容发布 7 个工作日内发出)

2月度评选后,根据得分,给予优秀稿件 200-1000 元京东购物卡奖励,并在社区公示

3、优秀稿件,经编辑审核后,将安排在不限于公众号、社群及网媒中推广。

4、获奖作者,有机会加入社区特邀专栏作者计划,获得更高现金激励,并受邀参与融云各类开发者活动(线下/线上)

声明

1、在法律允许范围内,活动最终解释权归 Geek Online 社区所有。

2、参加活动的文章作者拥有著作权,Geek Online 社区、融云全媒体平台拥有使用权。

3、对于作者发布非原创内容或有争议内容所引起的一切后果,均由作者承担。欢迎社区用户举报,一经查实,作废处理。

【社区精华|持续更新】收录本社区精华内容,手把手教学IM/RTC开发! 置顶

IM即时通讯admin 发表了文章 • 8 个评论 • 492 次浏览 • 2020-12-07 14:41 • 来自相关话题

本文收录了GeekOnline社区精华内容,希望帮助社区开发者学习IM+RTC知识,解答疑惑。赠人玫瑰,手有余香,如您有不错的内容需要收录,欢迎在在评论区投稿回复。Android篇融云即时通讯SDK集成 — 通知检查融云 IM SDK 集成 —- 刷新会话界面... ...查看全部

本文收录了GeekOnline社区精华内容,希望帮助社区开发者学习IM+RTC知识,解答疑惑。赠人玫瑰,手有余香,如您有不错的内容需要收录,欢迎在在评论区投稿回复。

微信截图_20201207144054.png

Android篇

融云即时通讯SDK集成 — 通知检查

融云 IM SDK 集成 —- 刷新会话界面和会话列表界面

Android 端如何添加自定义表情

解决融云 SDK 4.0 版本配置 https 导航报 SSLHandshakeException

融云清空历史消息 Android 端

唠一唠融云的消息扩展功能

融云 IMkit 拦截或监听所有发送消息

融云如何把图片消息的图片上传到自己的文件服务器

唠一唠融云 VIVO push 无法跳转的解决方案

融云即时通讯SDK集成 — 定制UI(一) ——会话界面小改动

融云即时通讯SDK集成 — 定制UI(二) ——添加自定义表情库

融云即时通讯SDK集成 — 定制UI(三) ——兼容Android Q

融云如何把图片消息的图片上传到自己的文件服务器

融云即时通讯SDK集成 — 华为推送的点击跳转处理

带你实现女朋友欲罢不能的 App

Flutter 集成融云 sdk

配置融云SDK的自签证书

自定义消息 包含 list 数组

关于融云聊天室KV 值的正确使用

融云 IM SDK 转 AndroidX

融云即时通讯SDK集成 — 国内厂商推送集成踩坑篇(Android平台)

在融云 IMkit 会话界面基础上添加消息已读未读

融云聊天室属性 kv

融云 ConversationListFragment 会话列表添加头部布局

融云即时通讯SDK集成 — FCM推送集成指南(Android平台)

融云集成之避坑指南-Android推送篇

融云IMKit 动态删除或添加plugin 的实现


iOS篇

iOS 基于实时音视频 SDK 实现屏幕共享功能——1

iOS 基于实时音视频 SDK 实现屏幕共享功能——2

iOS 基于实时音视频 SDK 实现屏幕共享功能——3

iOS 基于实时音视频 SDK 实现屏幕共享功能——4

如何隐藏融云输入框语音按钮

给融云的输入框上方加个功能按钮,怎么整?

融云 IM SDK 如何插入消息

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

为融云聊天页面的输入框添加 Placeholder

30 分钟集成融云 IM 即时通讯

简单介绍融云 imkit 包含功能

融云的聊天页面在 iOS14 出现崩溃的解决办法

融云聊天页面长按消息后“翻译”功能的实现方法

使用融云 IM 点击最近聊天记录时跳转到 @ 自己的消息

如何设置融云用户信息

自定义融云会话列表 cell 选中背景

融云 IMKit 音频录制参数

融云会话页面刷新不及时问题

融云 Flutter IM SDK 解析

关于融云 SDK 在使用 p8 证书的坎坷~

融云 SDK 如何实现群组操作

如何利用融云 IMLib 来实现一个阅后即焚功能

干货分享——使用融云通讯能力库 IMLib 实现单群聊的阅读回执


Web篇

作为小白接融云 IM SDK 新路体验~

微信小程序集成融云 SDK (即时通讯) 集成必备条件

Web 端使用融云 SDK 集成实现滑动加载历史消息

融云IM SDK web 端集成 — 表情采坑篇

融云 Web SDK 如何实现表情的收发 ?

集成融云小程序 SDK 遇到的问题

使用融云 Web SDK 撤回消息

融云 RTC SDK 集成实现直播,趟坑之旅~~~

融云 Web SDK 删除历史消息

集成融云小程序 SDK 遇到的问题

Web 端集成融云 SDK 如何发送正确图片消息给移动端展示?

使用融云 IM SDK 实现 H5 直播聊天

WebRTC 实现实时音视频技术研究

融云发送语音消息

融云 CallLib 集成遇到的问题

结合融云 WebSDK 了解 WebSocket 基本原理

集成融云 Web 音视频通话踩坑之旅

SDK 兼容 JSON

融云 IM SDK 发送语音消息

集成融云 IM 问题总结

融云 Web SDK 如何实现只有一个设备登入

融云 Web 播放声音 — Flash 篇 (播放 AMR、WAV)

融云 IM 那些事儿

融云 AMR(Aduio) 播放 AMR 格式 Base64 码音频


社区福利

【领取见面礼】限量 100份 GeekOnline加油包!等你来拿

【有奖调研】Geek Online 2020 编程挑战赛参赛调研

【征稿活动】Geek Online 社区第一期投稿激励计划已启动!


GeekOnline编程挑战赛

Geek Online 2020 编程挑战赛官网

重磅!Geek Online 2020 编程挑战赛来了!

Geek Online 2020 编程挑战赛 GitHub 仓库

2 个月激烈角逐,15 支队伍突围决赛路演!Geek Online 2020 编程挑战赛完美收官!

一张图回顾 Geek Online 2020 编程挑战赛精彩瞬间!

“这些项目不是什么赚大钱的项目,但是它们足够有趣。”丨关于 Geek Online 2020 编程挑战赛,选手们如是说

融云 CTO 杨攀: Geek Online 2020 编程挑战赛 让开发者站上 C 位

【参赛攻略】你想了解的Geek Online 2020 编程挑战赛常见问题这里都有!

【融云集成常见问题整理】Geek Online 2020 编程挑战赛选手提问整理


求职招聘

【招聘】寻一枚熟悉融云IM的开发工程师,坐标合肥,待遇从优

和50万优质程序员一起成长——程序员客栈招聘

持续更新....

【融云集成常见问题整理】Geek Online 2020 编程挑战赛选手提问整理 置顶

GeekOnline编程挑战赛梅川酷子 发表了文章 • 0 个评论 • 430 次浏览 • 2020-12-02 18:40 • 来自相关话题

内容整理自Geek Online 2020 编程挑战赛群答疑内容,关于大赛请点击Geek Online 2020 编程挑战赛了解详情。如果您有IM/RTC开发,融云开发文档建议等技术问题欢迎留言讨论。问题 1: 下载SDK如何选择?各大版本有什么区别?问题 1... ...查看全部

内容整理自Geek Online 2020 编程挑战赛群答疑内容,关于大赛请点击Geek Online 2020 编程挑战赛了解详情。如果您有IM/RTC开发,融云开发文档建议等技术问题欢迎留言讨论。

问题 1: 下载SDK如何选择?各大版本有什么区别?

问题 1 答案:使用最新版本 4.0 SDK ,新版 SDK 包含很多新功能并且会将历史版本遗留 Bug 进行修复,所以极力推荐使用新版 SDK 4.0+ 集成开发,下载地址:https://www.rongcloud.cn/downloads

问题 2 :开发环境和生产环境有什么区别?

问题 2 答案:  开发环境功能免费使用,但用户数有 100 个限制,生产环境无用户数限制,但需要付费,咱们的参赛同学使用开发环境集成就好

问题 3 :参赛过程中开发产生的费用怎么办?(注:本条仅限于参赛期间选手的参赛作品)

问题 3 答案:开发环境功能均可免费体验,遇到特殊情况可在战队群里向融云同学处理

问题 4 :小程序开发有什么注意事项?

问题 4 答案:

 (1)需要在开发者后台小程序中开通,开通 30 分钟后生效

 (2)小程序发布上线需要优先设置合法域名:https://docs.rongcloud.cn/v4/views/rtc/call/noui/quick/mini.html

 (3)小程序特殊分类需要证书,例如社交小程序需要 ICP 证书,所以大家选择小程序分类时要提前注意是否需要证书

问题 5: 融云支持哪些平台?

问题 5 答案:支持 iOS、Android、Web、Flutter、uniapp、Electron,如果有 IoT 需求可以私信融云同学

问题 6:  如果遇到集成文档问题,怎么办?(也可以在本篇文章留言回复)

问题 6 答案:可直接在战队群里反馈至融云同学,欢迎大家对文档的改进提出宝贵建议,感谢

问题7:ios没上线 push怎么做?

问题7答案:在融云开发者后台 -> 应用 -> 开发环境可以设置

微信图片_20201202183130.png


问题8:融云的RTC集成必须要集成IM?

问题8答案:RTC SDK 依赖于 IM SDK,一定要连接 IM 后再进行 RTC 相关的集成

问题9:融云新版SDK4.0版本和2.0版本对比有哪些升级?具体有哪些优化和提升?

问题9答案:4.0 SDK 是融云基于近几年的经验积累和沉淀进行的重构版,包含对架构、连接、重连、弱网等使用场景做了特殊优化,除核心能力优化外 4.0 SDK 还在持续发布新功能,例如:聊天室 KV 存储、会话置顶免打扰等

问题10:我想问一下,rongrtc的storage改动如何监听似乎rongclient设置接受到消息的onreceived回调不会触发。而改动storage 时是有设置第三个消息参数的,Sdk的debug会打印storage_set的,可以拦截不?

问题10答案:如果设置了第三个参数,会触发接收方的 RongRTC 实例的 Message received 监听

问题11:融云有没有小程序版的IM集成SDK?

问题11答案:有的,开发者后台开通小程序后可以直接下载小程序 IM SDK,开通位置:https://developer.rongcloud.cn/miniprogram/index/

问题12:弱弱的问一句,融云可否实现微信群机器人?现在微商盛行,想用融云做个自动问答的机器人客服 」

问题12答案:可以的,融云支持将消息路由的能力,消息路由到自己服务器后可以对接三方图文识别厂商

问题13:融云有内嵌到app的H5版本客服机器人吗?

问题14:不单独提供客服的,但 IM SDK 支持 H5 的

感谢各位选手的参与,Geek Online 2020 编程挑战赛 完美收官,关于大赛:

 Geek Online 2020 编程挑战赛官网

2 个月激烈角逐,15 支队伍突围决赛路演!Geek Online 2020 编程挑战赛完美收官!

“这些项目不是什么赚大钱的项目,但是它们足够有趣。”丨关于 Geek Online 2020 编程挑战赛,选手们如是说

一张回顾 Geek Online 2020 编程挑战赛精彩瞬间!


关于IM/RTC开发,融云开发文档建议等技术问题欢迎留言讨论

2 个月激烈角逐,15 支队伍突围决赛路演!Geek Online 2020 编程挑战赛完美收官! 置顶

GeekOnline编程挑战赛梅川酷子 发表了文章 • 1 个评论 • 451 次浏览 • 2020-10-27 09:59 • 来自相关话题

2020 春季的一场疫情,让远程办公和在线教育在全球范围内成为一种常态。疫情终将过去,但疫情为人们带来的新的工作及生活方式却将持续地影响着我们。后疫情时代,远程实时互动技术的重要性被提到了新的高度,下一代互联网通信云将如何作用于人们的工作和生活?融云作为全球领... ...查看全部

2020 春季的一场疫情,让远程办公和在线教育在全球范围内成为一种常态。

疫情终将过去,但疫情为人们带来的新的工作及生活方式却将持续地影响着我们。后疫情时代,远程实时互动技术的重要性被提到了新的高度,下一代互联网通信云将如何作用于人们的工作和生活?

融云作为全球领先的互联网通信云厂商,一直致力于 RTC 技术的创新和发展,并于近期举办了 Geek Online 2020 编程挑战赛,希望借此机会与全球开发者一道,共同寻找 RTC 技术的更多落地场景,开辟更多使用途径。

10 月 17 日,为期两个月的编程挑战赛迎来了最为紧张的决赛阶段, 15 支队伍进行了线上的路演答辩。

决赛路演,大屏直播互动

本届 Geek Online 2020 编程挑战赛以《后疫情时代,通信云技术的创新及实践》为主题,鼓励开发者挖掘关于实时音视频和即时通讯技术的更多创意。通过近 2 个月的激烈角逐,在近百份参赛作品中,15 支队伍突出重围,闯入总决赛,他们通过线上展示的方式和大家分享,角逐最后的冠军。

本次决赛的评委共有四位,分别是融云联合创始人兼 CTO 杨攀、思否联合创始人兼 CTO 祁宁、泰岳梧桐资本合伙人杨扬以及通过线上直播参与路演的评委云启资本董事总经理陈昱。

1.png
       
     

 

路演答辩借助了融云 RTC 技术搭建了一个实时互动直播平台,选手轮流进入融云实时音视频 - SealRTC 平台进行画面共享,四位导师也可以在平台内实时与选手视频交流互动。

 


       2.png
     

 

路演直播画面

部分参赛选手作品展示 & 评委点评


       3.jpg
     

 

冠军团队 - 缘拼

该团队成员擅长 uniapp 以及微信小程序开发,作品基于融云 RTC 技术。这是一款基于兴趣、基于地理位置的同城社交类小程序,可以语音、视频构建同城兴趣小组,并将线上兴趣转换为线下社交行为。相当于将豆瓣兴趣小组音视频化。



        4.jpg       

 

亚军团队 - 红鲤鱼与绿鲤鱼与驴

该作品由两位选手共同完成,分别是熟悉前端、WebRTC 方向的“红鲤鱼”和熟悉后端、大数据方向的“绿鲤鱼”。这是一款帮忙新手程序员迅速熟悉融云 SDK 的小游戏,通过识别二维码拼图的游戏,让了解融云的过程有趣味性。该作品层次丰富,第一层需要用户集成融云 SDK、掌握融云的基本概念,第二层需要用户做一定程度的视频后处理,第三层需要用户做一些图像识别。



     5.jpg       

 

季军团队 - youweyoung

获得第三名的团队包含了一位拥有前后端多年开发经验的选手。作品基于 Android 操作系统使用 RTC 混合开发,最终做出了音视频通话应用 —— IYI网络剧场,将角色扮演类的剧本杀游戏以视频形式展现,每个场景有不同的主题人物并且可以替换,人物则是以皮影、动画等形式展现,适用于远程视频讲故事或玩剧本杀,有一定新颖性。



       6.jpg       

 

科技创新奖团队 - 萍水相逢的生活

这支队伍只有一位选手,他是一个心怀想法的程序员,做的产品是一个基于事务的陌生人聊天系统,事务场景可以是租房加中介的联系方式、街头偶遇添加好友、发布大字报等,这款产品的设计思路旨在为大家生活提供便利的软件。



       7.jpg       

 

 

商业价值奖团队 - MAXFLOAT

MAXFLOAT 是一支有实力,有梦想,有创意,敢拼搏,即想即做的队伍。他们认为当前城市化生活环境下人与人的交流越来越少,宠物逐渐替代朋友成为更好的伙伴,养宠物的越来越多,但随之而来的是更多的问题,比如宠物的遗失、被抛弃造成了流浪宠物越来越多,而宠物的健康,有时也不能及时得到重视。因此他们做了一款以宠物招领、寄养、寻回、宠物医生等为主,以宠物信息普及、宠物疾病普及为辅的 APP 帮助广大宠物爱好者。





包含获奖团队在内的 15 组团队,作品各具特色,即为评委以及线上观众们展示了自身的产品创意,也展示了 RTC 技术在实际应用中的能力与延展性,很多选手的作品获得了评委们的高度评价。我们对获奖团队进行了单独的采访,内容会于后续发出,敬请期待。

在选手们精彩的分享以及答辩之后,四位评委嘉宾分别给出了对于参加本次比赛的感受。





“融云始于 IM,又不止于 IM。通过融云提供的技术以及服务能力,开发者们可以更加关注线上的优化与迭代,期待更多开发者利用融云SDK,开发更创新、强大的产品。” —— 陈昱





“本次的决赛中我有很多印象深刻的作品,有的非常符合开发者的口味,有的对于使用场景有着很深入的思考。因为疫情,通信云技术的需求正在变得越来越大、越来越丰富,有很多场景需要我们去开拓,很值得开发者们关注并付出行动。” —— 祁宁





“选手们有很多创意创新点都很好,将很多现实中生活化的场景融入到比赛中,也有一些具有极客特质的项目,这些都是融云自身生态开发能力非常好的体现。对于融云来说,开发者是宝贵的资源,而通信云的生态也需要非常广泛的群体参与,共同完善。” —— 杨扬





“很高兴的看到,决赛中有很多作品提到了人们的心理问题,除开产品技术本身,还致力于解决人文层面的诉求。基于 IM 的核心能力,选手们提供了很多在线的沟通场景,比如剧本杀、狼人杀等等,基于这些实时互动的模式,通信能力已经变成了现代应用的一种基础设施,能为产业、产品和应用场景提供帮助,这让我们既感到压力,也感受到了更强大的动力。” —— 杨攀

结语

通过选手们的展示,我们可以了解到通信云技术的发展和提升不仅仅可以作用于工作和学习,关于实时音视频和即时通讯技术的应用,还有更多创新的场景等待我们用全新的思维来发掘。

Geek Online 2020 编程挑战赛虽然是第一次举办,但已经收获了参赛选手以及观看决赛路演直播观众们的一致好评,部分选手在路演结束后已经联系主办方咨询第二届比赛的安排,想要提前报名。

融云作为专注于通信的 PaaS 云服务平台,想要通过底层的基础模块支持,帮助企业与开发者构建「云通信」的能力。举办此次编程挑战赛的目的,也是希望让开发者们碰撞出技术的思维火花,加速潮流技术的应用创新,也为开发者们搭建了一个沟通、交流、合作的平台,希望能够掀起一股通信技术应用的探索与实践热潮。

点击进入大赛官网,查看更多比赛信息


       4aQyJP5TdHkx0NXM__thumbnail.png       


IOS 直播时进入后台 重新进入前台图像卡住

IM即时通讯admin 回复了问题 • 2 人关注 • 1 个回复 • 16 次浏览 • 2 天前 • 来自相关话题

一把双刃剑 -- 融云即时通讯sdk中的自定义消息使用心得&指南 (下)

IM即时通讯王叫兽 发表了文章 • 0 个评论 • 15 次浏览 • 3 天前 • 来自相关话题

背景:最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选了融云家的SDK(老板说了算hhhh).他家的官网和文档地址:... ...查看全部

微信截图_20210224192919.png

背景:

最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选了融云家的SDK(老板说了算hhhh).

他家的官网和文档地址: 官网:https://www.rongcloud.cn/ 文档:https://docs.rongcloud.cn/v4

这个任务当然还是落在我的头上. 我是使用的他们家的带UI的sdk,(他们家有带UI和不带UI的两种sdk, 不带UI的sdk就是只有即时通讯能力, 所有的UI都需要开发者自定实现, 带UI的sdk封装了一些基本的界面,例如会话列表, 和别人聊天的会话界面).

心得 (下)

自定义小视频消息

接上篇对自定义消息的开发心得哈.

因为融云家自带的小视频消息是需要收费的, 需要在服务端开通小视频服务后, 同时在端上做一下配置, 才可以使用小视频消息. 我一看这还得了, 想方设法收我钱呢不是. 不过他家只是对小视频类型的消息在服务端做了限制, 而不是完全不让在消息中携带视频链接. 自定义消息是随便自定义的, 那么我自定义一个小视频消息不就好啦.

大概实现思路如下:

自定义小视频消息继承MediaMessageContent,其中mLocalPath是小视频文件本地的存放路径,mMediaUrl是小视频文件上传到文件服务器后的http/https地址。

小视频的拍摄,播放我们RongCloud SDK没有接口,开发者自己实现。

当拍摄完成,发送小视频消息时使用方法

sendMediaMessage(final Message message, final String pushContent, final String pushData, final IRongCallback.ISendMediaMessageCallback callback)或者

sendMediaMessage(final Message message, final String pushContent, final String pushData, final IRongCallback.ISendMediaMessageCallbackWithUploader callback)

这两个方法的不同是后者开发者负责小视频文件的上传到指定的服务器,前者使用我们RongCloud默认的文件服务器

以上是大致步骤,小视频开发过程中可能遇到的问题,说明如下:

1.关于缩略图的处理,我们SDK没有直接上传一张图片返回一个url地址的接口,开发者可以把缩略图上传到自己的服务器,这样缩略图跟mMediaUrl类似,小视频消息展示显示缩略图时加载一张网络图片即可。

另一种缩略图处理方式类似我们SDK发送图片消息时的缩略图处理,把缩略图做base64编码,放到自定义消息体中直接传输,这种方式涉及到消息发送时把缩略图转化为base64数据和接收到消息时还原为缩略图,在我们SDK内部使用的是MessageHandler。

关于MessageHandler,我们RongCloud的每个消息都有一个MessageHandler,此前我们文档从没有介绍过这个

MessageHandler,对用户透明的,用户的自定义消息没有指定它是因为有个默认的DefaultMessageHandler。

自定义消息时可以指定自己的MessageHandler,例如图片消息的定义如下

ImageMessage.png

MessageHandler在消息发送和接收时在IPC进程中会被自动调用,它有两个方法,encodeMessage

和decodeMessage,在消息接收后调用decodeMessage时开发者可以把base64对应的数据转化为缩略图url,这样在展示缩略图时直接使用url即可。

/**
 * 解码 {@link MessageContent} 到 {@link Message} 中。
 *
 * @param message 用于存放 MessageContent 的消息实体。
 * @param content 将要被解码的 MessageContent。
 */
public abstract void decodeMessage(Message message, T content);

/**
 * 对 {@link Message} 编码。
 *
 * @param message 将要被编码的 Message 实体。
 */
public abstract void encodeMessage(Message message);

此文档包含了两个附件分别为自定义小视频消息和对应的小视频消息MessageHandler,供开发者参考

2.开发中可能还会遇到小视频文件上传时进度更新的问题,如果开发者自定义的小视频消息不继承自MediaMessageContent而是MessageContent,需要自己在UI上维护上传进度


一把双刃剑 -- 融云即时通讯sdk中的自定义消息使用心得&指南 (上)

IM即时通讯王叫兽 发表了文章 • 0 个评论 • 15 次浏览 • 3 天前 • 来自相关话题

背景:最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选了融云家的SDK(老板说了算hhhh).他家的官网和文档地址:... ...查看全部

微信截图_20210224192427.png

背景:

最近公司新上的app要加上即时通讯的功能, 自己快速实现一个当然是不可能的了(项目deadline也顶不住哇).就从各家成熟的SDK厂商选来选去的, 各有各的好也各有各的不足.最后点兵点将,选了融云家的SDK(老板说了算hhhh).

他家的官网和文档地址: 官网:https://www.rongcloud.cn/ 文档:https://docs.rongcloud.cn/v4

这个任务当然还是落在我的头上. 我是使用的他们家的带UI的sdk,(他们家有带UI和不带UI的两种sdk, 不带UI的sdk就是只有即时通讯能力, 所有的UI都需要开发者自定实现, 带UI的sdk封装了一些基本的界面,例如会话列表, 和别人聊天的会话界面).

需求:

融云的体系中默认的消息类型只有9种.


功能     |     描述


文字消息       |     用来发送文字类消息,其中可以包括表情、超链接(会自动识别),客户端收到消息后计入未读消息数、进行存储。

语音消息     |     发送高质量的短语音消息,录制的语音文件存储到融云服务端,语音文件格式为 AAC,时长上限为 60 秒,客户端收到消息后计入未读消息数、进行存储。

图片消息     |     用来发送图片类消息,客户端收到消息后计入未读消息数、进行存储。图片缩略图格式为 JPG,大小建议不超过 100k。

GIF 图片消息     |     用来发送 GIF 动态图片消息,客户端收到消息后计入未读消息数、进行存储。

图文消息     |     用来发送图文消息,包含一个标题,一段文字内容和一张图片,客户端收到消息后计入未读消息数、进行存储。

文件消息     |     用来发送文件类消息,客户端收到消息后计入未读消息数、进行存储。

位置消息     |     用来发送地理位置消息,客户端收到消息后计入未读消息数、进行存储。

小视频消息     |     用来发送小视频消息,支持录制发送及选择本地视频文件发送两种方式,录制时长不超过 10 秒,本地选择视频文件方式时长不超过 2 分钟,小视频消息小视频文件格式为 .mp4,客户端收到消息后计入未读消息数、进行存储。

合并转发消息     |     IMKit SDK 中支持将多条消息合并为一条消息进行发送,合并后的消息以 HTML 文件的方式存储到融云服务端,客户端收到消息后计入未读消息数、进行存储。

这9种消息其实已经满足大部分的即时聊天场景了, 无论是打字聊天最普通的文本消息, 还是长按录制发送的语音消息, 以及图片消息, 分享位置的消息. 基本上微信有的场景, 都覆盖到了.

但是因为各家的产品各不相同, 有人需要一个比微信功能更简洁的聊天工具, 有人则需要一个像QQ那般功能强大的聊天工具. 总是有千奇百怪不同的需求的. 像我们的app就是这样, 总有场景是这里无法满足的. 好比QQ是可以把图片和文本消息放入同一个消息气泡中的(类似于富文本消息), 那么这样的情况下, 默认的几类消息就不够用了.

不过融云还是把这块做的很到位的, 暴露了类和接口让用户去对消息做自定义, 基本上可以做到, 想把消息定义成什么样就定义成什么样子.

心得(上)

这里就举一些我在开发我们公司app时, 用到的自定义消息, 以及使用心得和指南.

只发给当前在线用户的限时奖励通知

只给当前在线用户发送消息, 我们有一种游戏奖励是只发放给特殊时段在线的用户的, 只有当前在线的用户才能接收到这种消息来领取奖励, 其他在该时段未在线的用户, 不能接收到, 且再次登录后也不能接收到保留的离线消息. 这个需求就是做了一个自定义消息来实现的. 把自定义消息类的 MessageTag 中 flag 值设置为 MessageTag.STATUS。此消息类型即为状态消息,状态消息不存储不计数,并且当接收方不在线时,此消息会直接丢弃,用户再上线也不会收到该消息。

有需要的同学可以看他们家关于自定义消息的文档:https://docs.rongcloud.cn/im/imkit/android/conversation/custom_message/

发送自定义消息后撤回消息,撤回消息会失败

这里积累了一个经验, 也算是帮大家踩踩他们家的坑了, 那就是: 使用以下废弃方法发送自定义时会出现此错误:

在发送自定义消息后,撤回消息时没有反应,退出会话界面再次进入后可以正常撤回消息。 在 log 中显示 recallMessage errorCode = 25101。

public Message sendMessage(ConversationType type, String targetId, MessageContent content, String pushContent, String pushData, final SendMessageCallback callback) {

必须要换成这个方法发送才行:

public void sendMessage(Message message, String pushContent, String pushData, final ISendMessageCallback callback)

这个问题也是蛮坑的, 害. 找他们家技术支持费了点劲才排查出来, 希望大家遇到这种问题能快快找到我这篇经验哈.


融云4.x 版本升级到5.0 版本出现的问题

IM即时通讯柠檬^ 发表了文章 • 0 个评论 • 15 次浏览 • 3 天前 • 来自相关话题

1. 4.x 版本与5.x 版本的区别  主要是针对 IMKit(带 UI 界面)进行了重构,并且 5.0 版本以上的 IMKit 进行了开源,可以在 &nbs... ...查看全部

微信截图_20210224192708.png1. 4.x 版本与5.x 版本的区别

  主要是针对 IMKit(带 UI 界面)进行了重构,并且 5.0 版本以上的 IMKit 进行了开源,可以在  https://github.com/rongcloud/imkit-android 进行下来进行集成;

2. 5.x 版本主要的跳转方式

   在之前4.x 版本的SDK 中,界面之间的跳转主要是使用隐式调用的,在5.x 版本则全部改用为显示跳转,并且引入路由的概念,具体可以参考 RouteUtils 这个工具类。

3. 4.x 以及5.x 主要的api 感知变化

  为了方便平滑升级,以及兼容性,所以对外引用 api 并无太大改变,都是通过 RongIM 进行引用。

4. 5.x 自定义消息的变化

主要是针对展示方式变化,取消之前的注解方式,改为复写 MessageItemProviderConfig 的方式,通过代码动态加载来进行展示,设置方式是在自定义的provider 中进行设置config 即可;


【Android开发】如何使用融云的消息扩展

IM即时通讯王叫兽 发表了文章 • 0 个评论 • 14 次浏览 • 3 天前 • 来自相关话题

从 【4.0.3 】版本开始,融云新增了消息扩展功能,文档如下: https://docs.rongcloud.cn/v4/views/im/noui/guide/private/msgmanage/expansion/android.html总结文... ...查看全部

微信截图_20210224192550.png

从 【4.0.3 】版本开始,融云新增了消息扩展功能,文档如下: https://docs.rongcloud.cn/v4/views/im/noui/guide/private/msgmanage/expansion/android.html

总结文档中的几个重点:

  • 4.0.3之前的版本无法使用。

  • 消息扩展是 Message类的属性,也就是说自定义消息也可以使用。

  • 单条消息只能设置300个kv,(某些场景不可用,比如在群里发400个人可领的红包)。

  • 仅支持单聊、群聊。

  • key和value都是字符串类型,并且key不能是中文,否则会报错INVALID_PARAMETER。

  • 用IMKit的UI发送消息时需要拦截一下,设置消息扩展开关。

使用步骤:

  1. 消息的发送端必须给需要消息扩展的消息开开关,没有全局设置,只能单条消息设置。分以下两种情况:

  2. 如果使用的是 IMKit 提供的UI发送消息,在 ConversationFragment中的 onSendToggleClick 方法发送消息,在 sendMessage 前调用下面的方法

    /**
     * 设置消息扩展信息列表
     * 

扩展信息只支持单聊和群组,其它会话类型不能设置扩展信息。


     *
     * @param expansion 消息扩展信息列表
     */
    public void setExpansion(HashMap<String, String> expansion) {
        this.expansion = expansion;
    }

还需要设置 canIncludeExpansion 和 expansionDic 。

  • 如果是自己调用 RongIM 和 RongIMClient 接口发的消息,用 MessageContent 类的对象构造一个 Message 对象,然后设置 canIncludeExpansion 和 expansionDic 再调用RCIM中对应的 send 方法将消息发送出去即可。

  • 更新和删除扩展的操作可以参考官方文档。

  • 想要实时捕获消息扩展的更改和删除,就需要设置回调,在回调中更新UI。设置回调可参考官方文档。

融云官网:https://www.rongcloud.cn/

文档频道:https://docs.rongcloud.cn/v4


融云 Android 端如何清空某一个会话的聊天记录

IM即时通讯王叫兽 发表了文章 • 0 个评论 • 13 次浏览 • 3 天前 • 来自相关话题

融云 Android 端如何清空某一个会话的聊天记录实现须知没有开通 “历史消息云存储”,只能删除本地的数据。在融云控制台开通 “历史消息云存储功能” 后,才可以删除远端消息。实现步骤1.调用 cleanHistoryMessages 方法,cleanRemo... ...查看全部

融云 Android 端如何清空某一个会话的聊天记录

微信截图_20210224192137.png

实现须知

没有开通 “历史消息云存储”,只能删除本地的数据。在融云控制台开通 “历史消息云存储功能” 后,才可以删除远端消息。

实现步骤

1.调用 cleanHistoryMessages 方法,cleanRemote 传 true ,recordTime 传 当前的时间戳。

/**
     * 删除指定时间戳之前的消息,可选择是否同时删除服务器端消息
     * 

此方法从服务器端清除历史消息,但是必须先开通历史消息云存储功能。


     * 

根据会话类型和 TargetId 清除某一会话指定时间戳之前的本地数据库消息(服务端历史消息),
     * 清除成功后只能从本地数据库(服务端)获取到该时间戳之后的历史消息。


     *
     * @param conversationType 会话类型。
     * @param targetId         会话目标ID。
     * @param recordTime       清除消息截止时间戳,【0 ~ 当前时间的 Unix 时间戳】。
     * @param cleanRemote      是否删除服务器端消息
     * @param callback         清除消息的回调。
     */
    public void cleanHistoryMessages(final Conversation.ConversationType conversationType,
                                     final String targetId,
                                     final long recordTime,
                                     final boolean cleanRemote,
                                     final OperationCallback callback)

2.您使用的是 imlib ,还需要自行刷新您的界面。 3.您使用的是 imkit 调用 ConversationFragment 的 getMessageAdapter 方法,获取到会话界面消息展示适配器,移除数据并且刷新数据源。

mListAdapter.removeAll();
mListAdapter.notifyDataSetChanged();

4.卸载重装或者更换设备登陆后,历史消息还可以拉取到,来保证用户更换设备或者卸载重装后还可以有上下文。如果您不希望换端后再收到这些消息,您可以 提供一下 appkey 提交工单,我们帮您把这部分数据的缓存功能关闭。

友情链接