IM

IM

【社区精华|持续更新】收录本社区精华内容,手把手教学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在后台被杀死,ConversationFragment的destroy方法中的mConversationType.equals()会报空指针

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

记录一次接入华为推送问题

IM即时通讯深圳市众学汇科技有限公司 发表了文章 • 1 个评论 • 32 次浏览 • 2021-04-28 15:03 • 来自相关话题

接入的时候所有配置都正确的,但是启动项目就是不行报错,报错的信息也简单Execution failed for task ':app:mergeDebugManifest'. > com.android.manifmerger.Manif... ...查看全部

接入的时候所有配置都正确的,但是启动项目就是不行报错,报错的信息也简单

Execution failed for task ':app:mergeDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: D:\HuaLu\app\build\intermediates\merged_manifests\debug\AndroidManifest.xml

初看以为是清单文件合并除了问题,但是最终还是排除了。实在没办法打印详细日志查看错误,

是华为的插件agconnect找不到,但是检查配置是没有问题的,编译也不会报错。后面又去华为官方论坛咨询

最后发现是Android studio4.1的Gradle4.1插件版本和融云文档上的

com.huawei.agconnect:agcp:1.3.1.300 有冲突,

解决办法是com.huawei.agconnect:agcp:1.4.1.300 修改为这个版本即可




成为主播的必备神器

WebRTC徐凤年 发表了文章 • 0 个评论 • 37 次浏览 • 2021-04-15 15:15 • 来自相关话题

前言本人是一个游戏爱好者,经常会在斗鱼或者虎牙看游戏主播的精彩操作,特别是近几年直播的火速崛起,各个平台都打着人人都可以成为主播的口号来获取直播流量,所以我就在想直播门槛这么低的吗!这个疑问直到我看到 融云的低延迟直播 SDK 才打消了。那... ...查看全部

前言

本人是一个游戏爱好者,经常会在斗鱼或者虎牙看游戏主播的精彩操作,特别是近几年直播的火速崛起,各个平台都打着人人都可以成为主播的口号来获取直播流量,所以我就在想直播门槛这么低的吗!这个疑问直到我看到 融云的低延迟直播 SDK 才打消了。

微信截图_20210415150703.png

那么这个低延迟直播 SDK 是什么呢?

工欲善其事,必先利其器!那么这个低延迟直播就是成为主播之路的神器。下面是介绍:

低延迟直播 SDK 可以满足 1 个或多个主播与百万观众实时互动,避免延迟带来的距离感,增加用户活跃,支持主播推流,观众拉流,连麦互动等功能,为方便开发者集成降低集成难度,直播场景和会议场景都用 RongRTCLib SDK ,可在 SDK 调用时用参数加以区分集成场景

也就是说通过集成 低延迟直播 SDK 我们可以自己实现一个主播平台,集成的方式也非常简单,快速集成分三个步骤:

1、首先您需要了解集成的前置条件https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/premise/web.html

2、完成前置条件后,开始实现主播端发布音视频流的操作:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/anchor/web.html

3、有了主播后,咋们也不能忘记观众端,观众端就比较简单了,只需要订阅主播端发布成功的音视频资源就可以了:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/audience/web.html

完成上面三个步骤后,您就已经初步集成完 低延迟直播 SDK 了,主播和观众就可以互通了,是不是很简单!如果您觉得集成比较麻烦,OK !还有一个 Web 在线集成体验的示例,体验完后还可以直接拿到 demo ,跳转地址:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/demo/web.html

如果您还想进阶更高级一点的,需要好好研究一下文档当中的其他功能,比如:

发布文件资源:Web 可以通过拿到本地音频、视频文件资源,进行发布。代码示例:

// 通过 video 标签播放本地音视频资源。
let videoNode = document.querySelector('#target');
let mediaStream = videoNode.captureStream();
let user = {
  id: '请填写用户 ID',
  stream: {    
    tag: 'custom',
    type: StreamType.AUDIO_AND_VIDEO,
    mediaStream: mediaStream
  }
};
stream.publish(user).then(() => {
  console.log('发布成功');
}, error => {
  console.log(error);
});

发布屏幕共享资源:Web 可以通过 stream.get 方法获取屏幕媒体流。 仅支持 Chrome 获取屏幕共享资源。代码示例:

var config = {
  height:480,
  width:640,
  frameRate:15,
  screen: true,
  desktopStreamId: 'desktopStreamId',
}

stream.get(config).then(function ({ mediaStream }) {
  let user = {
    id: '请填写用户 ID',
    stream: {    
      tag: 'screen',
      type: StreamType.AUDIO_AND_VIDEO,
      mediaStream: mediaStream
    }
  }
  stream.publish(user).then(() => {
    console.log('发布成功');
  }, error => {
    console.log(error);
  });
}, error => {
  console.error(error);
});

等等······还有好多扩展功能等您来发现!授人以鱼,不如授人以渔,哈哈哈,我们不仅能自己成为主播,还能创造主播,还等什么呢,赶紧试一下吧


H5 如何实现直播

WebRTC徐凤年 发表了文章 • 0 个评论 • 45 次浏览 • 2021-04-15 15:15 • 来自相关话题

目前直播大火,在看直播后突然想自己做个直播软件。想了想想自己做下,开始在网上各种找资源。直播嘛,那必然有主播端和观众端。经过一系列的考察后后来找到了融云,使用了他们的 SDK,一共用了无 UI IM 和低延时直播两个 SDK。IM 用了连接和发送消息,选择的是... ...查看全部

微信截图_20210415150543.png

目前直播大火,在看直播后突然想自己做个直播软件。想了想想自己做下,开始在网上各种找资源。直播嘛,那必然有主播端和观众端。经过一系列的考察后后来找到了融云,使用了他们的 SDK,一共用了无 UI IM 和低延时直播两个 SDK。

IM 用了连接和发送消息,选择的是融云的聊天室场景。

低延时直播分了主播端和观众端。使用 H5 作为观众端进行观看,使用 web 端作为主播端进行了直播。

功能点介绍

主播端

按照文档的思路,主播端用的 web 界面,使用的 chrome 浏览器。 涉及到的功能点:

  1. 主播分享视频

  2. 查看观众发的消息

  3. 回复消息

观众端

观众端用的 H5 实现,涉及到的功能点:

  1. 观看主播分享的视频

  2. 发消息

  3. 点赞

额,就是为了体验功能做的简单了些,没有弄那些礼物什么的有些麻烦。

实现思路

主播端

  1. 需要先初始化连接 IM,RTC 两个融云的 SDK,此处参考的快速集成 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/premise/web.html

  2. 加入到房间中 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/anchorManage/room/web.html#newroom

  3. 发布视频资源供观众查看 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/anchorManage/resource/web.html#publish

  4. 配置直播 CDN 推流地址 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/manager/pushcdn/web.html

  5. 完成

此处仅给了我认为关键的几个接口,如果大家感兴趣可以自己细看下文档。有些高级的接口这边没有测试,不过看介绍可以设置直播视频的样式。感兴趣的小伙伴按照文档自行研究下吧。

观众端

观众端就很简单了,H5 的观众端仅需要订阅 CDN 推流的地址就可以看到主播的视频流,很方便。

总结

整体做下来大概零零散散用了两三天,UI 也没怎么最求在网上找了个大致的样式做了下。不过整体还好最起码基本的功能实现了。也算是自己做的第一个直播的小 Demo,还是很欣喜的。喜欢的大家可以体验下。


融云im撤回消息

IM即时通讯赵炳东 发表了文章 • 0 个评论 • 42 次浏览 • 2021-04-15 15:15 • 来自相关话题

由于疫情原因,公司基于融云做了个在线的聊天室,之前增加了一些聊天室的基础功能,最近呢由于需求补充,需要把消息撤回加上。 官方文档说明地址: https://docs.rongcloud.cn/v4/views/im/noui/guide/chatro... ...查看全部

由于疫情原因,公司基于融云做了个在线的聊天室,之前增加了一些聊天室的基础功能,最近呢由于需求补充,需要把消息撤回加上。 官方文档说明地址: https://docs.rongcloud.cn/v4/views/im/noui/guide/chatroom/msgmanage/msgrecall/web.html

撤回消息代码如下:

recall() {
         const conversation = this.im.Conversation.get({
            targetId: this.targetUser.id,
            type: this.targetUser.conversationType
          });
          conversation.recall({
            messageUId: this.currentMsg.messageUId,
            sentTime: this.currentMsg.sentTime
          }).then((message) => {
            this.$message.success('撤回成功');
            const msg =  Object.assign({extra: {nickname: this.currentUser.nickname}}, message);
            this.handleMessage(msg, false);
          });
    },

在此要注意,撤回成功之后是不会触发会话的监听的,需要自己在成功的回调里面处理撤回的消息。撤回消息处理代码如下:

if (message.messageType === 'RC:RcCmd') {
            const msg = Object.assign({tip: `${isSelef ? '您':  nickname}撤回了一条消息`}, message);
            if (messageIds.includes(message.content.messageUId)) {
                const index = messageIds.indexOf(message.content.messageUId);
                this.messageList.splice(index, 1, msg);
            } else {
                this.messageList.push(message);
            }
        } else {
            this.messageList.push(message);
        }

当对方在消息监听中收到上述的消息时,也可以调用上述的方法进行撤回消息处理。

撤回消息现在是没有时间限制的,如果要加上时间限制,可以根据消息的sentTime处理。

至此,消息撤回已成功集成。集成中发现了一个问题,撤回的消息在会话列表中还存在,已经给融云提交工单,看后续能不能处理。

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

融云开发文档地址:https://docs.rongcloud.cn/v4/


快速了解 Electron:基于 Web 跨平台桌面实现 - 即时通讯

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 46 次浏览 • 2021-04-15 15:15 • 来自相关话题

Electron 知识普及目前市面上的通讯软件多数都是支持多种平台的,Android 端、iOS 端、PC 端、Web 端、小程序端等。由于传统的 PC 端开发成本很高。所以今天给大家推荐使用 Electron 来实现 PC 端。Electron 是通过将 C... ...查看全部

Electron 知识普及

目前市面上的通讯软件多数都是支持多种平台的,Android 端、iOS 端、PC 端、Web 端、小程序端等。由于传统的 PC 端开发成本很高。所以今天给大家推荐使用 Electron 来实现 PC 端。

Electron 是通过将 Chromium 和 Node.js 合并到同一个运行时环境中,可以用 HTML、CSS 和 JavaScript 构建跨平台桌面应用程序。

Electron 可以将开发好的程序打包成 Mac、Windows 和 Linux 系统。

Electron 官网 https://www.electronjs.org/

Electron 开发 PC 端的理由

  1. 使用 Web 技术进行开发,开发成本低,可扩展性强;

  2. 跨平台,一套代码可打包为 Windows、Linux、Mac 三套软件;

  3. 可直接在现有 Web 应用上进行扩展;

  4. 提供浏览器不具备的能力;

实现即时通讯

传统 web 端通信多数都是由 websock 或者是长轮询实现的。目前市面上也有很多做即时通讯的三方,例如:融云,网易云等等。我选择的是融云。

融云提供了一个桌面端解决方案,是使用 Electron 实现。不过个人觉得那个版本有些低,但还是试用了下。

下载 Demo 启动起来,Demo 里面给的很简单不过基本的功能还是有的,把 Demo 中的地址换成了我自己的地址还是比较方便的。

此处省略了些实现过程,Electron 使用的是融云提供的 Demo, web 站点是之前集成的融云的 web 端 SDK。 如果大家想要了解可以先看下文档,由于项目中有很多其他模块内容就不再次展示了。

文档地址 https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html

由于我们场景就是单群聊,所以用到的核心接口如下。

  1. 初始化连接https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#init

  2. 设置监听https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#listener

  3. 连接融云https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#connect

  4. 发消息https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#send

当时测试时直接用的快速集成中的代码段进行了下修改。还是很方便的。如果需要大家可以自行查看。

结果上图

24954647-5f7d3bbb34d7d453.png

融云升级到到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"

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


融云集成错误码汇总

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 上传失败


教你轻松构建一个可以泡妞的 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/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万优质程序员一起成长——程序员客栈招聘

持续更新....

WICC 2019:融云首次解密全球通信网底层基础架构

科技创新融云那些事 发表了文章 • 0 个评论 • 317 次浏览 • 2020-06-16 18:34 • 来自相关话题

日前,2019 全球互联网通信云大会(WICC)在上海圆满落幕。作为大会主办方的融云,面对场内外数万开发者,首次对其自建的全球通信网(SD-CAN)的架构进行解密,分享了架构设计背后的故事和演进历程。在连续多年稳居国内即时通讯领域市场占有率第一之时,融云已然将... ...查看全部

日前,2019 全球互联网通信云大会(WICC)在上海圆满落幕。作为大会主办方的融云,面对场内外数万开发者,首次对其自建的全球通信网(SD-CAN)的架构进行解密,分享了架构设计背后的故事和演进历程。

在连续多年稳居国内即时通讯领域市场占有率第一之时,融云已然将目光放在了更广阔的全球市场之上。自 2016 年起,融云跟随中国出海企业进行海外布局,为他们提供安全、可靠的全球通信云服务能力。时至今日,在全球化布局上,融云拥有 3 个数据中心,3000 多个动态加速节点,并自研最优链路调度算法,可以有效解决跨国、跨运营商、大规模用户访问导致的响应慢、丢包高、服务不稳定等诸多痛点。


融云首席架构师李淼演讲
突破代码所无法解决的难题,跨过技术调研与选型瓶颈

融云首席架构师李淼认为:“代码可以解决的问题都不是问题,代码解决不了的问题才是最难的问题”。在李淼眼中,什么是代码解决不了的难题?那就是搭建全球互联的通信云底层基础架构。

早期,融云通过提供 SDK,让开发者更易集成融云的通信云能力到自己的 App 应用中,这是融云将通信云技术普惠给广大开发者的初衷。融云凭借安全、可靠的互联网通信云技术能力,服务的中国企业越来越多,并且随着中国出海企业逐渐布局到了海外市场,为了进一步助力中国企业出海,融云自建全球通信网络的想法应运而生。

融云讲了一个真实案例,曾经有落地韩国的旅游 App 客户向融云反映,自己的用户在韩国、泰国等地常常因连接不畅,导致体验不佳。后来融云在韩国、泰国部署了加速节点,对当地的链路进行加速,解决了这个问题,但由于终端客户分布的随机性很大,当用户漫游到除韩国、泰国以外的海外地区,甚至到北欧等地时,仍然面临连接问题。

解决客户的问题就是融云研发团队的使命,融云全球通信网的构建已经变得刻不容缓。可以说,是客户的海外布局需求让融云打开了建设全球通信网络的大门。

融云全球通信加速网络演变历程

融云对全球通信网络的平台能力定义是:用户能够就近接入、覆盖区域广泛、通信质量稳定、支持动态路径切换。2016 年,融云全球通信加速网络 v1 版本正式上线运行,基本满足了出海客户对于全球通信的需求,并显示出性能优越、资源消耗低、结构简单、运维方便等优势。同时,融云持续在寻找对应区域的服务商上,加大技术和人力的成本投入,进行资源配置的优化和整合。通过对两年的运营数据比对:在没有加速网络的情况下,融云对海外用户整体的连通率大概只有 78% 左右,通过加速网络,融云在全球的用户整体连通率可以达到 99.5% 以上,全球互联互通的成效初显。

但是,v1 版本的全球通信网络同时也面临着多中心重复建设、链路选择不智能、功能相对单一等问题。因此,2018 年融云决定放弃 v1 版本中的架构设计,重新搭建通信云全球互联的底层基础架构,进行 v2 版本迭代。

由于融云全球通信加速网络 v2 版本采用自研的边缘节点,承载了更多的业务数据的处理能力,显示出四大优势:第一,支持多中心接入。在设计时增加了新的路由节点,在整个网络里,可通过边缘节点向路由节点汇聚数据流量,数据可向任意一个数据中心导入;第二,多协议支持。自研的边缘节点,使 v2 版本不仅能支持 HTTP、HTTPS,还能支持 WebSocket、WebSocketS 以及实时音视频 RTC 的信令等更多协议;第三,管控方便。v2 版本可以精确地控制每个客户的流量转向和流量调度;第四,灵活调度。相比于 v1 版本只能通过下发配置的方式进行调度,在 v2 版本可通过管控节点的方式对流量周转进行控制。

优化之路境无止境

5G 正式商用后,融云 SD-CAN 全球通信网络除了承载人与人之间的通信,还将更多地承载人与物、物与物的通信。针对互联网通信请求高并发、小数据包的传输特点,为全球客户提供优质的网络加速服务,这是融云未来所要面临的挑战。

面对挑战,融云希望全球通信网络在边缘计算和去中心化的实时数据交换方面有所突破。首先,在边缘计算方面,由于融云目前很多协议、逻辑、控制都是通过类似模块的方式写成,如果要更新这些,需要重新部署服务来解决。尽管现在可以做到使用户无感、无损地更新迭代,但要降低运营成本,融云要在边缘节点上增加类似 FaaS(Function as a Service)的能力,并通过一些动态语言在边缘结点上实现脚本化的运维操作,通过管控节点下发这些计算能力。

其次,在去中心化的实时数据交换方面。虽然 RTC 本身就是去中心化的实时交换,但是现在的交换数据一般都是音视频,融云后续会建立双端 TCP 连接,通过去中心化的网络,实现两个用户之间的文件传递和数据交互。

结语

融云历经三年的潜心研发,最终构建起安全、可靠的全球互联网通信云网络。在全球通信网络的架构演进之路上,融云始终如一,抱定为客户带来至佳体验的宗旨,在专业化的道路上不懈探索。随着 5G 通信和物联网技术的全面覆盖,融云势必将通过 SD-CAN 全球通信网络为出海开发者和企业提供更为强劲的服务能力。

app在后台被杀死,ConversationFragment的destroy方法中的mConversationType.equals()会报空指针

回复

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

【社区精华|持续更新】收录本社区精华内容,手把手教学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即时通讯深圳市众学汇科技有限公司 发表了文章 • 1 个评论 • 32 次浏览 • 2021-04-28 15:03 • 来自相关话题

接入的时候所有配置都正确的,但是启动项目就是不行报错,报错的信息也简单Execution failed for task ':app:mergeDebugManifest'. > com.android.manifmerger.Manif... ...查看全部

接入的时候所有配置都正确的,但是启动项目就是不行报错,报错的信息也简单

Execution failed for task ':app:mergeDebugManifest'.
> com.android.manifmerger.ManifestMerger2$MergeFailureException: java.io.FileNotFoundException: D:\HuaLu\app\build\intermediates\merged_manifests\debug\AndroidManifest.xml

初看以为是清单文件合并除了问题,但是最终还是排除了。实在没办法打印详细日志查看错误,

是华为的插件agconnect找不到,但是检查配置是没有问题的,编译也不会报错。后面又去华为官方论坛咨询

最后发现是Android studio4.1的Gradle4.1插件版本和融云文档上的

com.huawei.agconnect:agcp:1.3.1.300 有冲突,

解决办法是com.huawei.agconnect:agcp:1.4.1.300 修改为这个版本即可




成为主播的必备神器

WebRTC徐凤年 发表了文章 • 0 个评论 • 37 次浏览 • 2021-04-15 15:15 • 来自相关话题

前言本人是一个游戏爱好者,经常会在斗鱼或者虎牙看游戏主播的精彩操作,特别是近几年直播的火速崛起,各个平台都打着人人都可以成为主播的口号来获取直播流量,所以我就在想直播门槛这么低的吗!这个疑问直到我看到 融云的低延迟直播 SDK 才打消了。那... ...查看全部

前言

本人是一个游戏爱好者,经常会在斗鱼或者虎牙看游戏主播的精彩操作,特别是近几年直播的火速崛起,各个平台都打着人人都可以成为主播的口号来获取直播流量,所以我就在想直播门槛这么低的吗!这个疑问直到我看到 融云的低延迟直播 SDK 才打消了。

微信截图_20210415150703.png

那么这个低延迟直播 SDK 是什么呢?

工欲善其事,必先利其器!那么这个低延迟直播就是成为主播之路的神器。下面是介绍:

低延迟直播 SDK 可以满足 1 个或多个主播与百万观众实时互动,避免延迟带来的距离感,增加用户活跃,支持主播推流,观众拉流,连麦互动等功能,为方便开发者集成降低集成难度,直播场景和会议场景都用 RongRTCLib SDK ,可在 SDK 调用时用参数加以区分集成场景

也就是说通过集成 低延迟直播 SDK 我们可以自己实现一个主播平台,集成的方式也非常简单,快速集成分三个步骤:

1、首先您需要了解集成的前置条件https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/premise/web.html

2、完成前置条件后,开始实现主播端发布音视频流的操作:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/anchor/web.html

3、有了主播后,咋们也不能忘记观众端,观众端就比较简单了,只需要订阅主播端发布成功的音视频资源就可以了:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/audience/web.html

完成上面三个步骤后,您就已经初步集成完 低延迟直播 SDK 了,主播和观众就可以互通了,是不是很简单!如果您觉得集成比较麻烦,OK !还有一个 Web 在线集成体验的示例,体验完后还可以直接拿到 demo ,跳转地址:https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/demo/web.html

如果您还想进阶更高级一点的,需要好好研究一下文档当中的其他功能,比如:

发布文件资源:Web 可以通过拿到本地音频、视频文件资源,进行发布。代码示例:

// 通过 video 标签播放本地音视频资源。
let videoNode = document.querySelector('#target');
let mediaStream = videoNode.captureStream();
let user = {
  id: '请填写用户 ID',
  stream: {    
    tag: 'custom',
    type: StreamType.AUDIO_AND_VIDEO,
    mediaStream: mediaStream
  }
};
stream.publish(user).then(() => {
  console.log('发布成功');
}, error => {
  console.log(error);
});

发布屏幕共享资源:Web 可以通过 stream.get 方法获取屏幕媒体流。 仅支持 Chrome 获取屏幕共享资源。代码示例:

var config = {
  height:480,
  width:640,
  frameRate:15,
  screen: true,
  desktopStreamId: 'desktopStreamId',
}

stream.get(config).then(function ({ mediaStream }) {
  let user = {
    id: '请填写用户 ID',
    stream: {    
      tag: 'screen',
      type: StreamType.AUDIO_AND_VIDEO,
      mediaStream: mediaStream
    }
  }
  stream.publish(user).then(() => {
    console.log('发布成功');
  }, error => {
    console.log(error);
  });
}, error => {
  console.error(error);
});

等等······还有好多扩展功能等您来发现!授人以鱼,不如授人以渔,哈哈哈,我们不仅能自己成为主播,还能创造主播,还等什么呢,赶紧试一下吧


H5 如何实现直播

WebRTC徐凤年 发表了文章 • 0 个评论 • 45 次浏览 • 2021-04-15 15:15 • 来自相关话题

目前直播大火,在看直播后突然想自己做个直播软件。想了想想自己做下,开始在网上各种找资源。直播嘛,那必然有主播端和观众端。经过一系列的考察后后来找到了融云,使用了他们的 SDK,一共用了无 UI IM 和低延时直播两个 SDK。IM 用了连接和发送消息,选择的是... ...查看全部

微信截图_20210415150543.png

目前直播大火,在看直播后突然想自己做个直播软件。想了想想自己做下,开始在网上各种找资源。直播嘛,那必然有主播端和观众端。经过一系列的考察后后来找到了融云,使用了他们的 SDK,一共用了无 UI IM 和低延时直播两个 SDK。

IM 用了连接和发送消息,选择的是融云的聊天室场景。

低延时直播分了主播端和观众端。使用 H5 作为观众端进行观看,使用 web 端作为主播端进行了直播。

功能点介绍

主播端

按照文档的思路,主播端用的 web 界面,使用的 chrome 浏览器。 涉及到的功能点:

  1. 主播分享视频

  2. 查看观众发的消息

  3. 回复消息

观众端

观众端用的 H5 实现,涉及到的功能点:

  1. 观看主播分享的视频

  2. 发消息

  3. 点赞

额,就是为了体验功能做的简单了些,没有弄那些礼物什么的有些麻烦。

实现思路

主播端

  1. 需要先初始化连接 IM,RTC 两个融云的 SDK,此处参考的快速集成 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/quick/premise/web.html

  2. 加入到房间中 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/anchorManage/room/web.html#newroom

  3. 发布视频资源供观众查看 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/anchorManage/resource/web.html#publish

  4. 配置直播 CDN 推流地址 https://docs.rongcloud.cn/v4/views/rtc/livevideo/guide/manager/pushcdn/web.html

  5. 完成

此处仅给了我认为关键的几个接口,如果大家感兴趣可以自己细看下文档。有些高级的接口这边没有测试,不过看介绍可以设置直播视频的样式。感兴趣的小伙伴按照文档自行研究下吧。

观众端

观众端就很简单了,H5 的观众端仅需要订阅 CDN 推流的地址就可以看到主播的视频流,很方便。

总结

整体做下来大概零零散散用了两三天,UI 也没怎么最求在网上找了个大致的样式做了下。不过整体还好最起码基本的功能实现了。也算是自己做的第一个直播的小 Demo,还是很欣喜的。喜欢的大家可以体验下。


融云im撤回消息

IM即时通讯赵炳东 发表了文章 • 0 个评论 • 42 次浏览 • 2021-04-15 15:15 • 来自相关话题

由于疫情原因,公司基于融云做了个在线的聊天室,之前增加了一些聊天室的基础功能,最近呢由于需求补充,需要把消息撤回加上。 官方文档说明地址: https://docs.rongcloud.cn/v4/views/im/noui/guide/chatro... ...查看全部

由于疫情原因,公司基于融云做了个在线的聊天室,之前增加了一些聊天室的基础功能,最近呢由于需求补充,需要把消息撤回加上。 官方文档说明地址: https://docs.rongcloud.cn/v4/views/im/noui/guide/chatroom/msgmanage/msgrecall/web.html

撤回消息代码如下:

recall() {
         const conversation = this.im.Conversation.get({
            targetId: this.targetUser.id,
            type: this.targetUser.conversationType
          });
          conversation.recall({
            messageUId: this.currentMsg.messageUId,
            sentTime: this.currentMsg.sentTime
          }).then((message) => {
            this.$message.success('撤回成功');
            const msg =  Object.assign({extra: {nickname: this.currentUser.nickname}}, message);
            this.handleMessage(msg, false);
          });
    },

在此要注意,撤回成功之后是不会触发会话的监听的,需要自己在成功的回调里面处理撤回的消息。撤回消息处理代码如下:

if (message.messageType === 'RC:RcCmd') {
            const msg = Object.assign({tip: `${isSelef ? '您':  nickname}撤回了一条消息`}, message);
            if (messageIds.includes(message.content.messageUId)) {
                const index = messageIds.indexOf(message.content.messageUId);
                this.messageList.splice(index, 1, msg);
            } else {
                this.messageList.push(message);
            }
        } else {
            this.messageList.push(message);
        }

当对方在消息监听中收到上述的消息时,也可以调用上述的方法进行撤回消息处理。

撤回消息现在是没有时间限制的,如果要加上时间限制,可以根据消息的sentTime处理。

至此,消息撤回已成功集成。集成中发现了一个问题,撤回的消息在会话列表中还存在,已经给融云提交工单,看后续能不能处理。

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

融云开发文档地址:https://docs.rongcloud.cn/v4/


快速了解 Electron:基于 Web 跨平台桌面实现 - 即时通讯

IM即时通讯徐凤年 发表了文章 • 0 个评论 • 46 次浏览 • 2021-04-15 15:15 • 来自相关话题

Electron 知识普及目前市面上的通讯软件多数都是支持多种平台的,Android 端、iOS 端、PC 端、Web 端、小程序端等。由于传统的 PC 端开发成本很高。所以今天给大家推荐使用 Electron 来实现 PC 端。Electron 是通过将 C... ...查看全部

Electron 知识普及

目前市面上的通讯软件多数都是支持多种平台的,Android 端、iOS 端、PC 端、Web 端、小程序端等。由于传统的 PC 端开发成本很高。所以今天给大家推荐使用 Electron 来实现 PC 端。

Electron 是通过将 Chromium 和 Node.js 合并到同一个运行时环境中,可以用 HTML、CSS 和 JavaScript 构建跨平台桌面应用程序。

Electron 可以将开发好的程序打包成 Mac、Windows 和 Linux 系统。

Electron 官网 https://www.electronjs.org/

Electron 开发 PC 端的理由

  1. 使用 Web 技术进行开发,开发成本低,可扩展性强;

  2. 跨平台,一套代码可打包为 Windows、Linux、Mac 三套软件;

  3. 可直接在现有 Web 应用上进行扩展;

  4. 提供浏览器不具备的能力;

实现即时通讯

传统 web 端通信多数都是由 websock 或者是长轮询实现的。目前市面上也有很多做即时通讯的三方,例如:融云,网易云等等。我选择的是融云。

融云提供了一个桌面端解决方案,是使用 Electron 实现。不过个人觉得那个版本有些低,但还是试用了下。

下载 Demo 启动起来,Demo 里面给的很简单不过基本的功能还是有的,把 Demo 中的地址换成了我自己的地址还是比较方便的。

此处省略了些实现过程,Electron 使用的是融云提供的 Demo, web 站点是之前集成的融云的 web 端 SDK。 如果大家想要了解可以先看下文档,由于项目中有很多其他模块内容就不再次展示了。

文档地址 https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html

由于我们场景就是单群聊,所以用到的核心接口如下。

  1. 初始化连接https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#init

  2. 设置监听https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#listener

  3. 连接融云https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#connect

  4. 发消息https://docs.rongcloud.cn/v4/views/im/noui/guide/quick/include/web.html#send

当时测试时直接用的快速集成中的代码段进行了下修改。还是很方便的。如果需要大家可以自行查看。

结果上图

24954647-5f7d3bbb34d7d453.png

融云升级到到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"

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


融云集成错误码汇总

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 上传失败


教你轻松构建一个可以泡妞的 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 比较成熟的还是有几家的,竞争也相对比较激烈。体验了几家,感觉从技术支持服务角度来讲,融云还是可以的。前阵子公司项目对接了融云,建了交流群,有问题往里抛就行,会有对应平台的技术解疑答惑。个人认为处理速度还是很及时的,可能是创业公司原因,服务这块没的说。


【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。设置回调可参考官方文档。


即时通讯(Instant Messaging)交流