IOS

IOS

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

IM即时通讯admin 发表了文章 • 8 个评论 • 778 次浏览 • 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万优质程序员一起成长——程序员客栈招聘

持续更新....

教你轻松构建一个可以泡妞的 app

IM即时通讯大神庵 发表了文章 • 0 个评论 • 89 次浏览 • 2021-03-18 11:45 • 来自相关话题

此篇文章是比较初级的,主要是指导性内容,不涉及技术。适合非移动端开发人员,公司拍板的老总,有创业梦想的人士。如果你想做个能泡妞的 app 但是不知如何着手,这边文章对你应该很有帮助。1.找一个第三方 IM 通讯平台,集成他家的 SDK(省时省力省心省钱)。我教... ...查看全部

此篇文章是比较初级的,主要是指导性内容,不涉及技术。适合非移动端开发人员,公司拍板的老总,有创业梦想的人士。如果你想做个能泡妞的 app 但是不知如何着手,这边文章对你应该很有帮助。

微信截图_20210318112752.png

1.找一个第三方 IM 通讯平台,集成他家的 SDK(省时省力省心省钱)。我教你找的方法,百度搜索:“即时通讯” 这四个字就行,会出现一堆搜索结果。也有很多品牌做广告。建议还是看前几个品牌吧,起码广告能力和 SEO 引擎优化能力不错

2.。搜索出来的结果基本都是这云那云的,可以点击进去了解一下价格,手机下载他家的产品,体验一下 demo,看看聊天界面怎么样,消息到达快还是慢。根据自己的喜好和理解,选择一家即可

3.接下来需要从他家官网找到文档,比如 iOS 平台的文档。应该会有 pod 集成或者手动集成的方式。第一步就是集成 SDK 到工程中

4.然后注册他家的账号,添加应用,获取 appkey 、用户 token 一类的信息(各个平台可能有差异,需以具体为准)。这些信息是用来连接他家服务器的。连接成功后,自己构造个按钮作为聊天入口,点击事件设置成发送消息给某人,比如登陆的是 A 用户,发消息给 B 用户。另一台设备也得跑,登陆 B 用户,给 A 用户发消息。同时都需要一个会话列表,在接收消息的时候展示出来会话。

5.可以聊天的 app 就这样搞定了。剩下的好友列表一类的用户信息就需要从自己服务器请求了。慢慢打磨吧

目前市面上 IM 即时通讯 SDK 比较成熟的还是有几家的,竞争也相对比较激烈。体验了几家,感觉从技术支持服务角度来讲,融云还是可以的。前阵子公司项目对接了融云,建了交流群,有问题往里抛就行,会有对应平台的技术解疑答惑。个人认为处理速度还是很及时的,可能是创业公司原因,服务这块没的说。


融云集成错误码汇总

IM即时通讯大神庵 发表了文章 • 0 个评论 • 139 次浏览 • 2021-03-18 11:45 • 来自相关话题

最近集成了融云 IM SDK,过程中遇到了错误码,这时需要去 SDK 头文件找到对应的错误码查看原因。下列给大家整理了一下,希望可以帮到大家,如果还有疑问,可以联系融云的技术:30007 : 导航 HTTP 请求失败。建议:更换网络环境,如无法解决,联系服务端... ...查看全部
最近集成了融云 IM SDK,过程中遇到了错误码,这时需要去 SDK 头文件找到对应的错误码查看原因。下列给大家整理了一下,希望可以帮到大家,如果还有疑问,可以联系融云的技术:
微信截图_20210318112905.png

30007 : 导航 HTTP 请求失败。建议:更换网络环境,如无法解决,联系服务端排查(尤其是私有云)' :

31002 : AppKey 错误。请检查您使用的 AppKey 是否正确

30010 : 创建 Socket 连接失败。建议:一般是网络不好,需更换网络试一下。

31004 : Token 无效。建议:一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致;二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token 建立连接

31005 : AppKey 与 Token 不匹配。建议:请检查您使用的 AppKey 与 Token 是否正确,是否匹配。一般有以下三种原因。一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致;二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token。三是 App 校验未通过,是因为您在开发者后台设置了 App 校验建立连接。

31007 : BundleID 不正确。建议:请检查您 App 的 BundleID 是否正确

31008 : AppKey 被封禁或已删除。建议:请检查您使用的 AppKey 是否被封禁或已删除。

31009 : 用户被封禁。建议:检查您使用的 Token 是否正确,以及对应的 UserId 是否被封禁

31010 : 用户被踢下线。建议:当前用户在其他设备上登录,此设备被踢下线'

31023 : 用户在其它设备上登录。建议:重连过程中当前用户在其它设备上登录

33001 : SDK 没有初始化。建议:在使用 SDK 任何功能之前,必须先 init

33003 : 开发者接口调用时传入的参数错误。建议:请检查接口调用时传入的参数类型和值

34001 : Connection 已经存在。建议:调用过connect之后,只有在 token 错误或者被踢下线或者用户 logout 的情况下才需要再次调用 connect。其它情况下 SDK会自动重连,不需要应用多次调用 connect 来保持连接

34005 : 连接环境不正确。建议:融云公有云 SDK 无法连接到私有云环境。请确认需要连接的环境,使用正确 SDK 版本

34006 : 连接超时。建议:当调用 connectWithToken:timeLimit:dbOpened:success:error: 接口,timeLimit 为有效值时,SDK 在 timeLimit 时间内还没连接成功返回此错误

30011 : Socket 断开。建议:Socket 连接被断开,主要有两种情况,一是用户主动调用 disconnect 之后,Socket 被服务器断开;二是中间路由原因等导致 Socket 断开

30008 : 导航 HTTP 返回数据格式错误。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30004 : 导航 HTTP 发送失败,是否设置 ATS。建议:如果是偶尔出现此错误,SDK 会做好自动重连,开发者无须处理。如果一直是这个错误,应该是您没有设置好ATS。ATS 默认只使用 HTTPS 协议,当HTTP 协议被禁止时 SDK 会一直 30004 错误。您可以参考 iOS 开发文档中的 ATS 设置说明。链接如下:https://support.rongcloud.cn/ks/OTQ1

30012 : PING 失败。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30013 : PING 超时。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30014 : 信令发送失败。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31000 : 连接 ACK 超时。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31001 : 信令版本错误。建议:问融云的技术人员吧

31003 : 服务器当前不可用。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31006 : 连接重定向。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

32061' : 连接被拒绝。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

20604 : 发送消息频率过高,1 秒钟最多只允许发送 5 条消息。建议:多个消息发送的时候中间加个延时

20607 : 请求超出了调用频率限制,请稍后再试。建议:不要多余频繁的调用接口

21406 : 当前用户不在该讨论组中

22406 : 当前用户不在该群组中。建议:到融云开发者后台 API 调用模块对应服务中进行查询

22408 : 当前用户在群组中已被禁言。建议:让开发者服务端人员确认一下是否在群组中

23406 : 当前用户不在该聊天室中。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23408 : 当前用户在该聊天室中已被禁言。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23409 : 当前用户已被踢出并禁止加入聊天室。被禁止的时间取决于服务端调用踢出接口时传入的时间。

23410 : 聊天室不存在。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23411 : 聊天室成员超限,默认聊天室没有人数限制,开发者可以提交工单对某个 Appkey 进行聊天室人数限制,设置后加入聊天室时如果人数超限,会提示这个错误码

23412 : 聊天室接口参数无效。请确认参数是否为空或者有效

23414 : 聊天室云存储业务未开通。建议:到融云开发者后台进行开通

23423 : 超过聊天室的最大状态设置数,1 个聊天室默认最多设置 100 个

23424 : 聊天室中非法覆盖状态值,状态已存在,没有权限覆盖。建议:这个值只有创建者才能修改。如果必须修改,则需要调用 RCIMClient 中forceSetChatRoomEntry:key:value:sendNotification:autoDelete:notificationExtra:success:error:接口。具体请到 RCIMClient 中查看 API

23425 : 超过聊天室中状态设置频率,1 个聊天室 1 秒钟最多设置和删除状态 100 次。建议:降低设置和删除频率

23426 : 聊天室状态存储功能没有开通,请联系商务开通

23427 : 聊天室状态值不存在

26002 : 操作跟服务端同步时出现问题,有可能是操作过于频繁所致。如果出现该错误,请延时 0.5s 再试

34004 : 聊天室状态未同步完成,刚加入聊天室时调用获取 KV 接口,极限情况下会存在本地数据和服务器未同步完成的情况,建议延时一段时间再获取

30001 : 当前连接不可用(连接已经被释放),只能表明当前连接是断开的,具体原因还需要通过其他错误码分析

30002 : 当前连接不可用,只能表明当前连接是断开的,具体原因还需要通过其他错误码分析。建议:可能是网络不可用,请切换网络试一下

30003 : 客户端发送消息请求,融云服务端响应超时。建议:服务器可能有问题

33002 : 数据库错误,造成错误的原因:1. 需要保证连接融云成功并且数据库打开后再调用业务接口,比如发消息。2. userId 中包含特殊字符。

33003 : 开发者接口调用时传入的参数错误。建议:请检查接口调用时传入的参数类型和值

33007 : 历史消息云存储业务未开通。可以在融云开发者后台中开启该服务

30016 : 消息大小超限,消息体(序列化成 json 格式之后的内容)最大 128k bytes。建议:缩小消息体的大小,避免超过 128 k

25101 : 撤回消息参数无效。请确认撤回消息参数是否正确的填写

26001 : push 设置参数无效。请确认是否正确的填写了 push 参数

20605 : 操作被禁止。 此错误码已被弃用

20606 : 操作不支持。仅私有云有效,服务端禁用了该操作。

21501 : 发送的消息中包含敏感词 (发送方发送失败,接收方不会收到消息)

21502 : 消息中敏感词已经被替换 (接收方可以收到被替换之后的消息

34002 : 小视频时间长度超出限制,默认小视频时长上限为 2 分钟。建议:视频不要超过 2 分钟

34003 : GIF 消息文件大小超出限制, 默认 GIF 文件大小上限是 2 MB

34007 : 查询的公共服务信息不存在, 请确认查询的公共服务的类型和公共服务 id 是否匹配

34008 : 消息不能被扩展, 消息在发送时,RCMessage 对象的属性 canIncludeExpansion 置为 YES 才能进行扩展。建议:把RCMessage 对象的属性 canIncludeExpansion 置为 YES

34009 : 消息扩展失败, 一般是网络原因导致的,请确保网络状态良好,并且融云 SDK 连接正常

34010 : 消息扩展大小超出限制, 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 64 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300

34011' : 媒体消息媒体文件 http 上传失败


融云升级到到5.0报错

IM即时通讯大神庵 发表了文章 • 0 个评论 • 103 次浏览 • 2021-03-18 11:45 • 来自相关话题

使用 pod ,从4.x版本升级到 5.x,写法和报错如下写法: [RCIM sharedRCIM].enableBurnMessage = YES; 报错:Property 'enableBurnMessage' not found on o... ...查看全部

使用 pod ,从4.x版本升级到 5.x,写法和报错如下

  1. 写法: [RCIM sharedRCIM].enableBurnMessage = YES; 报错:Property 'enableBurnMessage' not found on object of type 'RCIM *' 解决:把代码改成 RCKitConfigCenter.message.enableDestructMessage = YES; 因为 SDK 把接口从 RCIM 类移到了 RCKitMessageConf 中

  2. 解决完上述属性报错后,出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lopencore-amrnb
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"opencore-amrnb"

  3. 解决完上述报错后,又出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lopencore-amrwb
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"opencore-amrwb"

  4. 解决完上述报错后,又出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lvo-amrwbenc
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"vo-amrwbenc"

希望大家可以活学活用,在报错的时候全局搜一下对应的关键词,看是不是引用的问题导致


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

IM即时通讯fanta2 发表了文章 • 0 个评论 • 76 次浏览 • 2021-03-18 11:37 • 来自相关话题

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

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

总结文档中的几个重点:

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

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

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

  • 仅支持单聊、群聊。

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

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

使用步骤:

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

  2. 如果使用的是IMKit提供的UI发送消息,或者使用RCConversationViewController中的sendMessage和sendMediaMessage方法发送消息,都会触发下面回调:

/*!
 准备发送消息的回调

 @param messageContent 消息内容

 @return 修改后的消息内容

 @discussion 此回调在消息准备向外发送时会回调,您可以在此回调中对消息内容进行过滤和修改等操作。
 如果此回调的返回值不为nil,SDK会对外发送返回的消息内容。
 */
- (RCMessageContent *)willSendMessage:(RCMessageContent *)messageContent;

在回调中判断如果是需要扩展的消息,就根据messageContent,自己构造一个RCMessage对象,并设置好canIncludeExpansion和expansionDic。

RCMessage *message = [[RCMessage alloc] initWithType:self.conversationType targetId:self.targetId direction:MessageDirection_SEND messageId:0 content:messageContent];
message.canIncludeExpansion = YES;
message.expansionDic = dict;

再调用RCIM中对应的send方法将消息发送出去,并且在准备发送消息的回调中return nil。

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

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

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


【iOS开发】融云会话页面去掉电话号码、邮箱、链接的样式和点击事件

IM即时通讯fanta2 发表了文章 • 0 个评论 • 72 次浏览 • 2021-03-18 11:37 • 来自相关话题

添加 RCAttributedDataSource 协议,设置attributeDataSource。重置attributeDictionary。重写点击回调。// 去掉手机号、邮箱、超链接 高亮+点击事件 - (void)wil... ...查看全部
  1. 添加 RCAttributedDataSource 协议,设置attributeDataSource。

  2. 重置attributeDictionary。

  3. 重写点击回调。

// 去掉手机号、邮箱、超链接 高亮+点击事件
- (void)willDisplayMessageCell:(RCMessageBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    if ([cell isKindOfClass:[RCTextMessageCell class]]) {
        RCTextMessageCell *txtCell = (RCTextMessageCell*)cell;
        txtCell.textLabel.attributeDictionary = nil;
        txtCell.textLabel.attributeDataSource = self;
    }
}

- (NSDictionary *)attributeDictionaryForTextType:(NSTextCheckingTypes)textType {
    return nil;
}

/*!
 点击Cell中电话号码的回调

 @param phoneNumber 点击的电话号码
 @param model       消息Cell的数据模型
 */
-(void)didTapPhoneNumberInMessageCell:(NSString *)phoneNumber model:(RCMessageModel *)model {

}
/*!
 点击Cell中URL的回调

 @param url   点击的URL
 @param model 消息Cell的数据模型
*/
- (void)didTapUrlInMessageCell:(NSString *)url model:(RCMessageModel *)model {



使用融云会话列表卸载之后再安装依旧有会话数据的问题

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 74 次浏览 • 2021-03-18 11:37 • 来自相关话题

此文章主要记录和分享在使用融云 SDK 时出现的一个问题和涉及到的一个离线消息补偿的概念。现象当前设备与多人进行聊天卸载 APP重新安装 APP 并登陆此用户当前用户的会话列表又会刷新出来原因首先说明的一点是,融云的 SDK 是不会在服务端存储会话列表数据的,... ...查看全部

此文章主要记录和分享在使用融云 SDK 时出现的一个问题和涉及到的一个离线消息补偿的概念。

微信截图_20210318113247.png

现象

  1. 当前设备与多人进行聊天

  2. 卸载 APP

  3. 重新安装 APP 并登陆此用户

  4. 当前用户的会话列表又会刷新出来

原因

首先说明的一点是,融云的 SDK 是不会在服务端存储会话列表数据的,只会在本地进行存储,所以按道理来讲,我卸载的 APP 之后,所有本地存储的数据都会清空。

那么新出现的会话列表是哪里来的呢?

经过与融云技术人员的沟通,了解到虽然融云的会话列表只在本地进行存储。但是还有一个功能,划重点!!!

离线消息补偿 这个功能在开发者平台会在你开启 多设备消息同步 的时候被强行开启。

官网解释:

是指用户在更换设备或卸载重新安装应用后,针对消息的一种补偿机制,使用户可以在新的设备上查看最近 2 天内,在其他终端上发送和接收过的消息,补偿功能需要在 IM 商用版中开启“多设备消息同步”功能后才支持。

客服给的回复是这个日期可以调节!

所以当卸载重装之后出现的会话列表并不是存储的会话列表,而是有一部分消息被补偿回来,然后强行又生成了会话列表。

记录一下,分享给大家,避免大家遇到同样问题。


只需 2 步,定位集成融云时的崩溃与错误 - iOS 篇

IM即时通讯大神庵 发表了文章 • 0 个评论 • 59 次浏览 • 2021-03-18 11:37 • 来自相关话题

在集成融云 iOS SDK 时候,多多少少都会遇到一些问题,可能是崩溃,也可能是功能接口错误回调,对于刚接触 SDK 的开发者,难免束手无策,下面分享一个快速定位问题的方法,只需 2 步哟~#####方法的中心思想就是“快速拿到 log,通过分析 log 定位... ...查看全部

在集成融云 iOS SDK 时候,多多少少都会遇到一些问题,可能是崩溃,也可能是功能接口错误回调,对于刚接触 SDK 的开发者,难免束手无策,下面分享一个快速定位问题的方法,只需 2 步哟~

#####方法的中心思想就是“快速拿到 log,通过分析 log 定位问题“

#####步骤 1:

添加下面代码,将 log 写入沙盒

- (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

          //重定向 log 到本地问题

          //在 info.plist 中打开 Application supports iTunes file sharing

      if (![[[UIDevice currentDevice] model] isEqualToString:@"iPhone Simulator"]) {

          [self redirectNSlogToDocumentFolder];

      }

    //设置Log级别,开发阶段打印详细log

    [RCIMClient sharedRCIMClient].logLevel = RC_Log_Level_Info;

}


- (void)redirectNSlogToDocumentFolder {

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

  NSString *documentDirectory = [paths objectAtIndex:0];

  NSDate *currentDate = [NSDate date];

  NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];

  [dateformatter setDateFormat:@"MMddHHmmss"];

  NSString *formattedDate = [dateformatter stringFromDate:currentDate];

  NSString *fileName = [NSString stringWithFormat:@"rc%@.log", formattedDate];

  NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];

  freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);

  freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);

}

#####步骤 2:

加入第 1 步代码后运行项目,复现问题后,从”沙盒/Documents“路径下导出 rc 开头的 log 文件,使用文本编辑工具打开该文件。

  • 如果是崩溃,在 log 中能找到对应的崩溃信息,例如:

    * 找不到方法 unrecognized selector sent to instance 
    * 数组越界 [__NSArrayM objectAtIndex:]: index4beyond bounds [0..1] 等等。
  • 如果是 SDK 功能接口错误,可以在 log 中搜索到错误码,融云的错误码基本都是五位数字,以 ”3“开头,例如:

    * 31004:“Token 无效”,是使用的 token 和 appkey 不匹配。
    * 33001:“SDK 没有初始化”,是需要先初始化 SDK 才能调用其他接口。
    * 33003:“开发者接口调用时传入的参数错误”,是调用接口时候传入的参数有误,有空对象的可能性比较大。

    更多错误码链接:https://docs.rongcloud.cn/v4/views/im/ui/code/ios.html

总结,通过上面简单的 2 个步骤,就可以定位大部分问题,只是错误码解释如果不够明确的话,就还得提工单问,但是也能节省一部分交流成本,毕竟如果创建工单就把 log 贴身,得到针对性回复去解决问题的效率也会高很多。希望今天的分享可以帮助到大家。


融云 SDK 新用户入群加载历史消息

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 72 次浏览 • 2021-03-18 11:37 • 来自相关话题

记录融云 SDK 的一个小功能,分享一下背景项目中有用到融云 SDK 中的群组功能,产品说需要新人入群的时候看到历史消息。本来以为直接能获取到,但是实际并不可以。后来通过和客户沟通才发现在融云的开发者后台有一个免费的基础功能新用户获取加入群组前历史消息默认用户... ...查看全部

记录融云 SDK 的一个小功能,分享一下

背景

项目中有用到融云 SDK 中的群组功能,产品说需要新人入群的时候看到历史消息。

本来以为直接能获取到,但是实际并不可以。

后来通过和客户沟通才发现在融云的开发者后台有一个免费的基础功能

新用户获取加入群组前历史消息

默认用户加入群组后只能查看加入后群组中的消息,开启后可查看加入群组前的历史消息,此功能需要开通单群聊消息云存储功能后,才能使用。

记录一下,避免遗忘,大家如果有类似功能可以参考。

开通地址


融云 IMKit 开源了

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 75 次浏览 • 2021-03-18 11:37 • 来自相关话题

最近升级项目中的 SDK,都需要升级一遍。 项目中用到了融云 SDK,而且用的是带 UI 界面的。去官网一看,居然开源了!!惊不惊喜意不意外?看来开源才是主流,我觉得只有将开发者最需要的地方开放出来,才能吸引到更多的客户,顺便还能给大家学习一下~以前改个 UI... ...查看全部

最近升级项目中的 SDK,都需要升级一遍。 项目中用到了融云 SDK,而且用的是带 UI 界面的。去官网一看,居然开源了!!

惊不惊喜意不意外?

看来开源才是主流,我觉得只有将开发者最需要的地方开放出来,才能吸引到更多的客户,顺便还能给大家学习一下~

以前改个 UI 费半天劲,定制性不是特别高大家也不太喜欢用是不~

痛苦的是以后非常肯定得和产品说做不了的时候少了...... 哈哈哈~

然后去体验一波升级一下。

源码地址

官网有详细的源码集成文档

https://docs.rongcloud.cn/v4/5X/views/im/ui/guide/quick/include/ios.html

不过,需要升级的兄弟们,注意代码结构有变动,记得多测试。


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

IM即时通讯admin 发表了文章 • 8 个评论 • 778 次浏览 • 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万优质程序员一起成长——程序员客栈招聘

持续更新....

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

IM即时通讯admin 发表了文章 • 8 个评论 • 778 次浏览 • 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万优质程序员一起成长——程序员客栈招聘

持续更新....

教你轻松构建一个可以泡妞的 app

IM即时通讯大神庵 发表了文章 • 0 个评论 • 89 次浏览 • 2021-03-18 11:45 • 来自相关话题

此篇文章是比较初级的,主要是指导性内容,不涉及技术。适合非移动端开发人员,公司拍板的老总,有创业梦想的人士。如果你想做个能泡妞的 app 但是不知如何着手,这边文章对你应该很有帮助。1.找一个第三方 IM 通讯平台,集成他家的 SDK(省时省力省心省钱)。我教... ...查看全部

此篇文章是比较初级的,主要是指导性内容,不涉及技术。适合非移动端开发人员,公司拍板的老总,有创业梦想的人士。如果你想做个能泡妞的 app 但是不知如何着手,这边文章对你应该很有帮助。

微信截图_20210318112752.png

1.找一个第三方 IM 通讯平台,集成他家的 SDK(省时省力省心省钱)。我教你找的方法,百度搜索:“即时通讯” 这四个字就行,会出现一堆搜索结果。也有很多品牌做广告。建议还是看前几个品牌吧,起码广告能力和 SEO 引擎优化能力不错

2.。搜索出来的结果基本都是这云那云的,可以点击进去了解一下价格,手机下载他家的产品,体验一下 demo,看看聊天界面怎么样,消息到达快还是慢。根据自己的喜好和理解,选择一家即可

3.接下来需要从他家官网找到文档,比如 iOS 平台的文档。应该会有 pod 集成或者手动集成的方式。第一步就是集成 SDK 到工程中

4.然后注册他家的账号,添加应用,获取 appkey 、用户 token 一类的信息(各个平台可能有差异,需以具体为准)。这些信息是用来连接他家服务器的。连接成功后,自己构造个按钮作为聊天入口,点击事件设置成发送消息给某人,比如登陆的是 A 用户,发消息给 B 用户。另一台设备也得跑,登陆 B 用户,给 A 用户发消息。同时都需要一个会话列表,在接收消息的时候展示出来会话。

5.可以聊天的 app 就这样搞定了。剩下的好友列表一类的用户信息就需要从自己服务器请求了。慢慢打磨吧

目前市面上 IM 即时通讯 SDK 比较成熟的还是有几家的,竞争也相对比较激烈。体验了几家,感觉从技术支持服务角度来讲,融云还是可以的。前阵子公司项目对接了融云,建了交流群,有问题往里抛就行,会有对应平台的技术解疑答惑。个人认为处理速度还是很及时的,可能是创业公司原因,服务这块没的说。


融云集成错误码汇总

IM即时通讯大神庵 发表了文章 • 0 个评论 • 139 次浏览 • 2021-03-18 11:45 • 来自相关话题

最近集成了融云 IM SDK,过程中遇到了错误码,这时需要去 SDK 头文件找到对应的错误码查看原因。下列给大家整理了一下,希望可以帮到大家,如果还有疑问,可以联系融云的技术:30007 : 导航 HTTP 请求失败。建议:更换网络环境,如无法解决,联系服务端... ...查看全部
最近集成了融云 IM SDK,过程中遇到了错误码,这时需要去 SDK 头文件找到对应的错误码查看原因。下列给大家整理了一下,希望可以帮到大家,如果还有疑问,可以联系融云的技术:
微信截图_20210318112905.png

30007 : 导航 HTTP 请求失败。建议:更换网络环境,如无法解决,联系服务端排查(尤其是私有云)' :

31002 : AppKey 错误。请检查您使用的 AppKey 是否正确

30010 : 创建 Socket 连接失败。建议:一般是网络不好,需更换网络试一下。

31004 : Token 无效。建议:一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致;二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token 建立连接

31005 : AppKey 与 Token 不匹配。建议:请检查您使用的 AppKey 与 Token 是否正确,是否匹配。一般有以下三种原因。一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致;二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token 并再次用新的 token。三是 App 校验未通过,是因为您在开发者后台设置了 App 校验建立连接。

31007 : BundleID 不正确。建议:请检查您 App 的 BundleID 是否正确

31008 : AppKey 被封禁或已删除。建议:请检查您使用的 AppKey 是否被封禁或已删除。

31009 : 用户被封禁。建议:检查您使用的 Token 是否正确,以及对应的 UserId 是否被封禁

31010 : 用户被踢下线。建议:当前用户在其他设备上登录,此设备被踢下线'

31023 : 用户在其它设备上登录。建议:重连过程中当前用户在其它设备上登录

33001 : SDK 没有初始化。建议:在使用 SDK 任何功能之前,必须先 init

33003 : 开发者接口调用时传入的参数错误。建议:请检查接口调用时传入的参数类型和值

34001 : Connection 已经存在。建议:调用过connect之后,只有在 token 错误或者被踢下线或者用户 logout 的情况下才需要再次调用 connect。其它情况下 SDK会自动重连,不需要应用多次调用 connect 来保持连接

34005 : 连接环境不正确。建议:融云公有云 SDK 无法连接到私有云环境。请确认需要连接的环境,使用正确 SDK 版本

34006 : 连接超时。建议:当调用 connectWithToken:timeLimit:dbOpened:success:error: 接口,timeLimit 为有效值时,SDK 在 timeLimit 时间内还没连接成功返回此错误

30011 : Socket 断开。建议:Socket 连接被断开,主要有两种情况,一是用户主动调用 disconnect 之后,Socket 被服务器断开;二是中间路由原因等导致 Socket 断开

30008 : 导航 HTTP 返回数据格式错误。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30004 : 导航 HTTP 发送失败,是否设置 ATS。建议:如果是偶尔出现此错误,SDK 会做好自动重连,开发者无须处理。如果一直是这个错误,应该是您没有设置好ATS。ATS 默认只使用 HTTPS 协议,当HTTP 协议被禁止时 SDK 会一直 30004 错误。您可以参考 iOS 开发文档中的 ATS 设置说明。链接如下:https://support.rongcloud.cn/ks/OTQ1

30012 : PING 失败。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30013 : PING 超时。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

30014 : 信令发送失败。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31000 : 连接 ACK 超时。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31001 : 信令版本错误。建议:问融云的技术人员吧

31003 : 服务器当前不可用。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

31006 : 连接重定向。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

32061' : 连接被拒绝。建议:建立连接的临时错误码,SDK 会做好自动重连,开发者无须处理。

20604 : 发送消息频率过高,1 秒钟最多只允许发送 5 条消息。建议:多个消息发送的时候中间加个延时

20607 : 请求超出了调用频率限制,请稍后再试。建议:不要多余频繁的调用接口

21406 : 当前用户不在该讨论组中

22406 : 当前用户不在该群组中。建议:到融云开发者后台 API 调用模块对应服务中进行查询

22408 : 当前用户在群组中已被禁言。建议:让开发者服务端人员确认一下是否在群组中

23406 : 当前用户不在该聊天室中。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23408 : 当前用户在该聊天室中已被禁言。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23409 : 当前用户已被踢出并禁止加入聊天室。被禁止的时间取决于服务端调用踢出接口时传入的时间。

23410 : 聊天室不存在。建议:到融云开发者后台 API 调用模块对应服务中进行查询核实

23411 : 聊天室成员超限,默认聊天室没有人数限制,开发者可以提交工单对某个 Appkey 进行聊天室人数限制,设置后加入聊天室时如果人数超限,会提示这个错误码

23412 : 聊天室接口参数无效。请确认参数是否为空或者有效

23414 : 聊天室云存储业务未开通。建议:到融云开发者后台进行开通

23423 : 超过聊天室的最大状态设置数,1 个聊天室默认最多设置 100 个

23424 : 聊天室中非法覆盖状态值,状态已存在,没有权限覆盖。建议:这个值只有创建者才能修改。如果必须修改,则需要调用 RCIMClient 中forceSetChatRoomEntry:key:value:sendNotification:autoDelete:notificationExtra:success:error:接口。具体请到 RCIMClient 中查看 API

23425 : 超过聊天室中状态设置频率,1 个聊天室 1 秒钟最多设置和删除状态 100 次。建议:降低设置和删除频率

23426 : 聊天室状态存储功能没有开通,请联系商务开通

23427 : 聊天室状态值不存在

26002 : 操作跟服务端同步时出现问题,有可能是操作过于频繁所致。如果出现该错误,请延时 0.5s 再试

34004 : 聊天室状态未同步完成,刚加入聊天室时调用获取 KV 接口,极限情况下会存在本地数据和服务器未同步完成的情况,建议延时一段时间再获取

30001 : 当前连接不可用(连接已经被释放),只能表明当前连接是断开的,具体原因还需要通过其他错误码分析

30002 : 当前连接不可用,只能表明当前连接是断开的,具体原因还需要通过其他错误码分析。建议:可能是网络不可用,请切换网络试一下

30003 : 客户端发送消息请求,融云服务端响应超时。建议:服务器可能有问题

33002 : 数据库错误,造成错误的原因:1. 需要保证连接融云成功并且数据库打开后再调用业务接口,比如发消息。2. userId 中包含特殊字符。

33003 : 开发者接口调用时传入的参数错误。建议:请检查接口调用时传入的参数类型和值

33007 : 历史消息云存储业务未开通。可以在融云开发者后台中开启该服务

30016 : 消息大小超限,消息体(序列化成 json 格式之后的内容)最大 128k bytes。建议:缩小消息体的大小,避免超过 128 k

25101 : 撤回消息参数无效。请确认撤回消息参数是否正确的填写

26001 : push 设置参数无效。请确认是否正确的填写了 push 参数

20605 : 操作被禁止。 此错误码已被弃用

20606 : 操作不支持。仅私有云有效,服务端禁用了该操作。

21501 : 发送的消息中包含敏感词 (发送方发送失败,接收方不会收到消息)

21502 : 消息中敏感词已经被替换 (接收方可以收到被替换之后的消息

34002 : 小视频时间长度超出限制,默认小视频时长上限为 2 分钟。建议:视频不要超过 2 分钟

34003 : GIF 消息文件大小超出限制, 默认 GIF 文件大小上限是 2 MB

34007 : 查询的公共服务信息不存在, 请确认查询的公共服务的类型和公共服务 id 是否匹配

34008 : 消息不能被扩展, 消息在发送时,RCMessage 对象的属性 canIncludeExpansion 置为 YES 才能进行扩展。建议:把RCMessage 对象的属性 canIncludeExpansion 置为 YES

34009 : 消息扩展失败, 一般是网络原因导致的,请确保网络状态良好,并且融云 SDK 连接正常

34010 : 消息扩展大小超出限制, 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 64 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300

34011' : 媒体消息媒体文件 http 上传失败


融云升级到到5.0报错

IM即时通讯大神庵 发表了文章 • 0 个评论 • 103 次浏览 • 2021-03-18 11:45 • 来自相关话题

使用 pod ,从4.x版本升级到 5.x,写法和报错如下写法: [RCIM sharedRCIM].enableBurnMessage = YES; 报错:Property 'enableBurnMessage' not found on o... ...查看全部

使用 pod ,从4.x版本升级到 5.x,写法和报错如下

  1. 写法: [RCIM sharedRCIM].enableBurnMessage = YES; 报错:Property 'enableBurnMessage' not found on object of type 'RCIM *' 解决:把代码改成 RCKitConfigCenter.message.enableDestructMessage = YES; 因为 SDK 把接口从 RCIM 类移到了 RCKitMessageConf 中

  2. 解决完上述属性报错后,出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lopencore-amrnb
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"opencore-amrnb"

  3. 解决完上述报错后,又出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lopencore-amrwb
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"opencore-amrwb"

  4. 解决完上述报错后,又出现了以下报错: 报错:Apple Mach-O Linker Error

     ld: library not found for -lvo-amrwbenc
     clang: error: linker command failed with exit code 1 (use -v to see invocation)

    解决:TARGETS - Build Settings - Other Linker Flags 里去掉 -l"vo-amrwbenc"

希望大家可以活学活用,在报错的时候全局搜一下对应的关键词,看是不是引用的问题导致


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

IM即时通讯fanta2 发表了文章 • 0 个评论 • 76 次浏览 • 2021-03-18 11:37 • 来自相关话题

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

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

总结文档中的几个重点:

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

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

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

  • 仅支持单聊、群聊。

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

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

使用步骤:

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

  2. 如果使用的是IMKit提供的UI发送消息,或者使用RCConversationViewController中的sendMessage和sendMediaMessage方法发送消息,都会触发下面回调:

/*!
 准备发送消息的回调

 @param messageContent 消息内容

 @return 修改后的消息内容

 @discussion 此回调在消息准备向外发送时会回调,您可以在此回调中对消息内容进行过滤和修改等操作。
 如果此回调的返回值不为nil,SDK会对外发送返回的消息内容。
 */
- (RCMessageContent *)willSendMessage:(RCMessageContent *)messageContent;

在回调中判断如果是需要扩展的消息,就根据messageContent,自己构造一个RCMessage对象,并设置好canIncludeExpansion和expansionDic。

RCMessage *message = [[RCMessage alloc] initWithType:self.conversationType targetId:self.targetId direction:MessageDirection_SEND messageId:0 content:messageContent];
message.canIncludeExpansion = YES;
message.expansionDic = dict;

再调用RCIM中对应的send方法将消息发送出去,并且在准备发送消息的回调中return nil。

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

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

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


【iOS开发】融云会话页面去掉电话号码、邮箱、链接的样式和点击事件

IM即时通讯fanta2 发表了文章 • 0 个评论 • 72 次浏览 • 2021-03-18 11:37 • 来自相关话题

添加 RCAttributedDataSource 协议,设置attributeDataSource。重置attributeDictionary。重写点击回调。// 去掉手机号、邮箱、超链接 高亮+点击事件 - (void)wil... ...查看全部
  1. 添加 RCAttributedDataSource 协议,设置attributeDataSource。

  2. 重置attributeDictionary。

  3. 重写点击回调。

// 去掉手机号、邮箱、超链接 高亮+点击事件
- (void)willDisplayMessageCell:(RCMessageBaseCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    if ([cell isKindOfClass:[RCTextMessageCell class]]) {
        RCTextMessageCell *txtCell = (RCTextMessageCell*)cell;
        txtCell.textLabel.attributeDictionary = nil;
        txtCell.textLabel.attributeDataSource = self;
    }
}

- (NSDictionary *)attributeDictionaryForTextType:(NSTextCheckingTypes)textType {
    return nil;
}

/*!
 点击Cell中电话号码的回调

 @param phoneNumber 点击的电话号码
 @param model       消息Cell的数据模型
 */
-(void)didTapPhoneNumberInMessageCell:(NSString *)phoneNumber model:(RCMessageModel *)model {

}
/*!
 点击Cell中URL的回调

 @param url   点击的URL
 @param model 消息Cell的数据模型
*/
- (void)didTapUrlInMessageCell:(NSString *)url model:(RCMessageModel *)model {



使用融云会话列表卸载之后再安装依旧有会话数据的问题

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 74 次浏览 • 2021-03-18 11:37 • 来自相关话题

此文章主要记录和分享在使用融云 SDK 时出现的一个问题和涉及到的一个离线消息补偿的概念。现象当前设备与多人进行聊天卸载 APP重新安装 APP 并登陆此用户当前用户的会话列表又会刷新出来原因首先说明的一点是,融云的 SDK 是不会在服务端存储会话列表数据的,... ...查看全部

此文章主要记录和分享在使用融云 SDK 时出现的一个问题和涉及到的一个离线消息补偿的概念。

微信截图_20210318113247.png

现象

  1. 当前设备与多人进行聊天

  2. 卸载 APP

  3. 重新安装 APP 并登陆此用户

  4. 当前用户的会话列表又会刷新出来

原因

首先说明的一点是,融云的 SDK 是不会在服务端存储会话列表数据的,只会在本地进行存储,所以按道理来讲,我卸载的 APP 之后,所有本地存储的数据都会清空。

那么新出现的会话列表是哪里来的呢?

经过与融云技术人员的沟通,了解到虽然融云的会话列表只在本地进行存储。但是还有一个功能,划重点!!!

离线消息补偿 这个功能在开发者平台会在你开启 多设备消息同步 的时候被强行开启。

官网解释:

是指用户在更换设备或卸载重新安装应用后,针对消息的一种补偿机制,使用户可以在新的设备上查看最近 2 天内,在其他终端上发送和接收过的消息,补偿功能需要在 IM 商用版中开启“多设备消息同步”功能后才支持。

客服给的回复是这个日期可以调节!

所以当卸载重装之后出现的会话列表并不是存储的会话列表,而是有一部分消息被补偿回来,然后强行又生成了会话列表。

记录一下,分享给大家,避免大家遇到同样问题。


只需 2 步,定位集成融云时的崩溃与错误 - iOS 篇

IM即时通讯大神庵 发表了文章 • 0 个评论 • 59 次浏览 • 2021-03-18 11:37 • 来自相关话题

在集成融云 iOS SDK 时候,多多少少都会遇到一些问题,可能是崩溃,也可能是功能接口错误回调,对于刚接触 SDK 的开发者,难免束手无策,下面分享一个快速定位问题的方法,只需 2 步哟~#####方法的中心思想就是“快速拿到 log,通过分析 log 定位... ...查看全部

在集成融云 iOS SDK 时候,多多少少都会遇到一些问题,可能是崩溃,也可能是功能接口错误回调,对于刚接触 SDK 的开发者,难免束手无策,下面分享一个快速定位问题的方法,只需 2 步哟~

#####方法的中心思想就是“快速拿到 log,通过分析 log 定位问题“

#####步骤 1:

添加下面代码,将 log 写入沙盒

- (BOOL)application:(UIApplication *)application

    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

          //重定向 log 到本地问题

          //在 info.plist 中打开 Application supports iTunes file sharing

      if (![[[UIDevice currentDevice] model] isEqualToString:@"iPhone Simulator"]) {

          [self redirectNSlogToDocumentFolder];

      }

    //设置Log级别,开发阶段打印详细log

    [RCIMClient sharedRCIMClient].logLevel = RC_Log_Level_Info;

}


- (void)redirectNSlogToDocumentFolder {

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

  NSString *documentDirectory = [paths objectAtIndex:0];

  NSDate *currentDate = [NSDate date];

  NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init];

  [dateformatter setDateFormat:@"MMddHHmmss"];

  NSString *formattedDate = [dateformatter stringFromDate:currentDate];

  NSString *fileName = [NSString stringWithFormat:@"rc%@.log", formattedDate];

  NSString *logFilePath = [documentDirectory stringByAppendingPathComponent:fileName];

  freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);

  freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);

}

#####步骤 2:

加入第 1 步代码后运行项目,复现问题后,从”沙盒/Documents“路径下导出 rc 开头的 log 文件,使用文本编辑工具打开该文件。

  • 如果是崩溃,在 log 中能找到对应的崩溃信息,例如:

    * 找不到方法 unrecognized selector sent to instance 
    * 数组越界 [__NSArrayM objectAtIndex:]: index4beyond bounds [0..1] 等等。
  • 如果是 SDK 功能接口错误,可以在 log 中搜索到错误码,融云的错误码基本都是五位数字,以 ”3“开头,例如:

    * 31004:“Token 无效”,是使用的 token 和 appkey 不匹配。
    * 33001:“SDK 没有初始化”,是需要先初始化 SDK 才能调用其他接口。
    * 33003:“开发者接口调用时传入的参数错误”,是调用接口时候传入的参数有误,有空对象的可能性比较大。

    更多错误码链接:https://docs.rongcloud.cn/v4/views/im/ui/code/ios.html

总结,通过上面简单的 2 个步骤,就可以定位大部分问题,只是错误码解释如果不够明确的话,就还得提工单问,但是也能节省一部分交流成本,毕竟如果创建工单就把 log 贴身,得到针对性回复去解决问题的效率也会高很多。希望今天的分享可以帮助到大家。


融云 SDK 新用户入群加载历史消息

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 72 次浏览 • 2021-03-18 11:37 • 来自相关话题

记录融云 SDK 的一个小功能,分享一下背景项目中有用到融云 SDK 中的群组功能,产品说需要新人入群的时候看到历史消息。本来以为直接能获取到,但是实际并不可以。后来通过和客户沟通才发现在融云的开发者后台有一个免费的基础功能新用户获取加入群组前历史消息默认用户... ...查看全部

记录融云 SDK 的一个小功能,分享一下

背景

项目中有用到融云 SDK 中的群组功能,产品说需要新人入群的时候看到历史消息。

本来以为直接能获取到,但是实际并不可以。

后来通过和客户沟通才发现在融云的开发者后台有一个免费的基础功能

新用户获取加入群组前历史消息

默认用户加入群组后只能查看加入后群组中的消息,开启后可查看加入群组前的历史消息,此功能需要开通单群聊消息云存储功能后,才能使用。

记录一下,避免遗忘,大家如果有类似功能可以参考。

开通地址


融云 IMKit 开源了

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 75 次浏览 • 2021-03-18 11:37 • 来自相关话题

最近升级项目中的 SDK,都需要升级一遍。 项目中用到了融云 SDK,而且用的是带 UI 界面的。去官网一看,居然开源了!!惊不惊喜意不意外?看来开源才是主流,我觉得只有将开发者最需要的地方开放出来,才能吸引到更多的客户,顺便还能给大家学习一下~以前改个 UI... ...查看全部

最近升级项目中的 SDK,都需要升级一遍。 项目中用到了融云 SDK,而且用的是带 UI 界面的。去官网一看,居然开源了!!

惊不惊喜意不意外?

看来开源才是主流,我觉得只有将开发者最需要的地方开放出来,才能吸引到更多的客户,顺便还能给大家学习一下~

以前改个 UI 费半天劲,定制性不是特别高大家也不太喜欢用是不~

痛苦的是以后非常肯定得和产品说做不了的时候少了...... 哈哈哈~

然后去体验一波升级一下。

源码地址

官网有详细的源码集成文档

https://docs.rongcloud.cn/v4/5X/views/im/ui/guide/quick/include/ios.html

不过,需要升级的兄弟们,注意代码结构有变动,记得多测试。