SDK

SDK

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

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

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 即可;


融云 IMKit SDK 5.X 升级说明

IM即时通讯fanta2 发表了文章 • 0 个评论 • 22 次浏览 • 4 天前 • 来自相关话题

Tips如果您应用依赖于 suport 包,可参考 AndroidX 迁移文档将依赖转换为 AndroidX 后,再集成 IMKit SDK 5.X版本。1. 类路径调整IMKit SDK 5.X 版本重构了 SDK 的架构,通过 MVVM 框架实现... ...查看全部

Tips

如果您应用依赖于 suport 包,可参考 AndroidX 迁移文档将依赖转换为 AndroidX 后,再集成 IMKit SDK 5.X版本。

微信截图_20210222180400.png

1. 类路径调整

IMKit SDK 5.X 版本重构了 SDK 的架构,通过 MVVM 框架实现,导致很多类路径发生了更改,下表列出了 5.X 之前版本对外公开类的路径变更:

2.x 、4.x 版本路径
io.rong.imkit.fragment.ConversationListFragment
io.rong.imkit.fragment.ConversationFragment
io.rong.imkit.RongExtension
io.rong.imkit.userInfoCache.RongUserInfoManager
io.rong.imkit.mention.RongMentionManager
io.rong.imkit.manager.IUnReadMessageObserver

5.x 版本路径
io.rong.imkit.conversationlist.ConversationListFragment
io.rong.imkit.conversation.ConversationFragment
io.rong.imkit.conversation.extension
io.rong.imkit.userinfo.RongUserInfoManager
io.rong.imkit.feature.mention.RongMentionManager
io.rong.imkit.manager.UnReadMessageManager.IUnReadM

路径调整 Tips

参照上表,在 AndroidStudio 中 command+shift+R 全局搜索旧的类路径,替换为新路径。 如果深度定制化了 IMKit SDK,部分类路径的调整可能不在上述列表中,升级以后 AndroidStudio 会有红色报错。删除报错类里红色未识别的导入路径,鼠标停留到报错的地方,根据 AndroidStudio 的提示导入新路径即可。如果有多个地方使用了该路径,可以参考第一步里的方法,全局搜索并替换。

2. 集成方式变更

页面跳转时由原先的隐式调用方式更改为显示调用, 因此集成步骤有所简化和更改。您需要先移除旧版本 AndroidManifest.xml 文件中关于 IMKit SDK 的配置,参考官网文档重新集成。

3. 消息展示模板变更

列表页由 ListView 更改为效率更高的 RecycleView,因此自定义消息的展示模板需要对应调整。

将自定义消息的展示模板更改为继承 BaseMessageItemProvider<>, 并实现基类方法。 移除展示模板里原先的注解,原注解属性可在新模板构建类里通过调用基类成员 mConfig 的各个方法进行配置

4. 内部实现变更

资源名称变更。IMKit SDK 5.x 版本重新统一了资源名称的命名,如果您自定义了部分资源文件,可参考官网自定义文档,重新替换对应名称的资源。

移除了 EventBus 。IMKit 5.x 版本不再依赖于 EventBus 进行事件分发,更改为通过观察者模式实现。如果您应用里使用了旧版本 SDK 里的 EventBus, 升级后需要您从应用层自己引入依赖。

移除 RongContext 类。如果您应用里有调用 RongContext 作为上下文使用的地方,请更改为调用您自己的应用上下文。

由于更改为 MVVM 框架,原 fragment 里很多业务相关接口被移除,您可参考官网 5.x 版本文档重新进行页面自定义。



融云 SDK 5.0.0 功能迭代

IM即时通讯融云技术团队 发表了文章 • 0 个评论 • 109 次浏览 • 2021-01-29 16:07 • 来自相关话题

融云 SDK 发布了 5.0 Dev 版本,在持续迭代新功能的同时,此版本对 IMKit SDK 进⾏了重构优化并且对外开源,SDK 初始化速度更快,同时减少了不必要的内存占⽤,针对 Android 库⽂件引⼊了加固技术,提升 App 安全性,详细如下:新增功... ...查看全部

融云 SDK 发布了 5.0 Dev 版本,在持续迭代新功能的同时,此版本对 IMKit SDK 进⾏了重构优化并且对外开源,SDK 初始化速度更快,同时减少了不必要的内存占⽤,针对 Android 库⽂件引⼊了加固技术,提升 App 安全性,详细如下:

新增功能

1.⾃定义多语⾔推送⽂案

功能描述:
根据⽬标⽤户设置的语⾔环境,从推送模板中选择对应语⾔的内容进⾏远程推送。

应用场景:
应⽤中存在多个国家的终端⽤户,在发送系统升级、运营活动类的通知时,需要给不同语⾔环境的⽤户推送不同的运营内容,可使⽤此功能设置多语⾔推送⽂案,增强运营效果,提升⽤户使⽤体验。

使用方式:
通过融云开发者后台,设置⾃定义推送模板,创建模板 ID。
终端⽤户通过 SDK 中 setPushLanguageCode 接⼝上报⽤户的语⾔环境。
SDK 或 Server API 发送消息时,携带后台创建的模板 ID(templateId),如⽬标⽤户未在线时,融云服务端会⾃动根据⽬标⽤户的语⾔环境选择对应的语⾔内容进⾏推送。


1.png

2.静默撤回消息功能

需要撤回⼀条消息,⼜不希望通知对⽅时,可以在撤回消息时设置 isDisableNotification 属性,设置后⽬标⽤户不会收到撤回消息时的通知栏提醒,⽀持通过 SDK 或 Server API 撤回消息时进⾏设置。

功能优化


  • 对 IMKit SDK 进⾏了代码重构并且开源,提升了 UI 品质及⽤户体验,解决了开发者在⽼版 IMKit 中某些 UI ⾃定义需求不能满⾜的问题。
  • 从 5.0 版本开始 Android IMKit SDK 使⽤ AndroidX 库实现,Google ⾃ support v7:28 开始,⼤部分 support 包都迁移到 AndroidX 下,建议开发者们尽早将项⽬转移到 AndroidX 下。
  • iOS IMLib 通讯能⼒库使⽤动态库技术,减少了不必要的内存占⽤,使 SDK 内存占⽤更⼩。
  • 对 SDK 整体性能进⾏优化,SDK 初始化速度更快,耗电更少。
  • Android SDK 引⼊了 Android 库⽂件加固技术,提升 App 安全性。
  • Android SDK 对 Android 11 系统进⾏了兼容适配。
  • 修复了 RTC SDK 的部分 BUG。

详细内容请查看官⽹版本更新描述:
IM 版本更新描述
音视频版本更新描述

SDK 兼容 JSON

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

最近在集成融云 SDK,于是看了下融云的 SDK 源码,发现源码中有一段针对 JSON 的适配,由于针对 IE9 以下不支持 JSON 对象的处理方式,在此分享下1、优点: 除中文外的字符都会转为 Unicode 。2、缺点:JSON.parse() 使用 e... ...查看全部

最近在集成融云 SDK,于是看了下融云的 SDK 源码,发现源码中有一段针对 JSON 的适配,由于针对 IE9 以下不支持 JSON 对象的处理方式,在此分享下

1、优点: 除中文外的字符都会转为 Unicode 。

2、缺点:JSON.parse() 使用 eval 进行转换的,这个方法不是很安全,还看到人介绍用 new Function ,但是没有测试,这里暂时标记下,有空测试下。

if (!window["JSON"]) {
window["JSON"] = (function () {
    function JSON() {
    }
    JSON.parse = function (sJSON) {
        return eval('(' + sJSON + ')');
    };
    JSON.stringify = function (value) {
        return this.str("", { "": value });
    };
    JSON.str = function (key, holder) {
        var i, k, v, length, mind = "", partial, value = holder[key], me = this;
        if (value && typeof value === "object" && typeof value.toJSON === "function") {
            value = value.toJSON(key);
        }
        switch (typeof value) {
            case "string":
                return me.quote(value);
            case "number":
                return isFinite(value) ? String(value) : "null";
            case "boolean":
            case "null":
                return String(value);
            case "object":
                if (!value) {
                    return "null";
                }
                partial = [];
                if (Object.prototype.toString.apply(value) === "[object Array]") {
                    length = value.length;
                    for (i = 0; i < length; i += 1) {
                        partial[i] = me.str(i, value) || "null";
                    }
                    v = partial.length === 0 ? "[]" : "[" + partial.join(",") + "]";
                    return v;
                }
                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = me.str(k, value);
                        if (v) {
                            partial.push(me.quote(k) + ":" + v);
                        }
                    }
                }
                v = partial.length === 0 ? "{}" : "{" + partial.join(",") + "}";
                return v;
        }
    };
    JSON.quote = function (string) {
        var me = this;
        me.rx_escapable.lastIndex = 0;
        return me.rx_escapable.test(string) ? '"' + string.replace(me.rx_escapable, function (a) {
            var c = me.meta[a];
            return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    };
    JSON.rx_escapable = new RegExp('[\\\"\\\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]', "g");
    JSON.meta = {
        "\b": "\\b",
        "    ": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        '"': '\\"',
        "''": "\\''",
        "\\": "\\\\"
    };
    return JSON;
})();
}

看到这段代码,觉得融云 SDK 在兼容性上还是有处理的,又在 IE7 下做了测试,果然可以稳定运行(这年头还有 IE7 ,是不是很神奇)

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

融云文档:https://docs.rongcloud.cn/v4


抗击疫情 融云在行动

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

每天实时更新的新型冠状病毒肺炎疫情数据,牵动着每一个国人的心。随着疫情的不断升级,全国多地也相继启动重大突发公共卫生事件一级响应,一场没有硝烟的病毒防疫战已全面打响。作为一家以技术立命的互联网科技公司,融云也坚信“科技向善”,希望能为这场“战疫”献出一份微薄之... ...查看全部

每天实时更新的新型冠状病毒肺炎疫情数据,牵动着每一个国人的心。随着疫情的不断升级,全国多地也相继启动重大突发公共卫生事件一级响应,一场没有硝烟的病毒防疫战已全面打响。

作为一家以技术立命的互联网科技公司,融云也坚信“科技向善”,希望能为这场“战疫”献出一份微薄之力。融云提供的 PaaS 层服务,可通过集成 SDK 快速实现相关通信能力,我们决定从即日起至疫情结束,向企业、机构免费提供在线医疗场景下的 IM 及实时音视频服务,同时免费开放在线教育以及协同办公场景下的实时音视频服务。

据了解,随着感染者和就诊者的不断增多,很多医院已不负重堪,对于一些轻症患者,专家建议可以在线问诊,通过线上 IM 及实时音视频交流,医生可以直观地了解和检查问诊者的真实情况,为问诊者提供医疗帮助,以减轻线下医院发热门诊的超负荷运转,同时也可以降低线下就医交叉感染的风险,最大程度地为抗击疫情提供助力。


为了防止疫情的进一步传播,全国各地相关部门也已陆续下发了延迟学校开学和企业复工的通知。在这一特殊时期,很多学校、教育机构都在研究如何通过在线教育的方式让学生在家也能学习,很多企业也在制定远程办公的方案。在这两种场景下,实时音视频的技术无疑可以派上用场,融云愿为全国教育机构及企业提供免费的实时音视频服务,帮助企业机构实现在线课程、在线会议等能力,让学生停课不停学,让企业办公正常运转。


融云目前已开通了绿色通道,如有在线医疗、在线教育、协同办公三大场景需求的企业机构请联系我们,7*24 小时咨询热线 13161856839 已开通,待沟通确认符合相关场景需求后,我们会安排专人协助支持,进行免计费操作,辅助产品尽快上线,投入到一线“战疫”当中。

面对疫情,每个个体的力量也许是微小的,但我们相信,只要心在一起,全国上下就能同舟共济,共渡难关。在此,向所有奋战在疫情防控一线的工作人员致敬!融云愿意与你们一起,期盼春天的到来!

互联网寒冬中逆势增长 融云SDK触达用户数破40亿

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

过去一年,无疑是互联网行业最为寒冷的一年,无论是企业还是资方,都放缓了狂奔的脚步。但在许多人看来,这也是蓝海经济爆发的契机。有行业资深人士曾指出,“2018年的艰难其实被放大了,本来有很多人就是在大趋势上升中赚钱,没思考、没核心、没竞争力、没聚焦、没远见,现在... ...查看全部

过去一年,无疑是互联网行业最为寒冷的一年,无论是企业还是资方,都放缓了狂奔的脚步。

但在许多人看来,这也是蓝海经济爆发的契机。有行业资深人士曾指出,“2018年的艰难其实被放大了,本来有很多人就是在大趋势上升中赚钱,没思考、没核心、没竞争力、没聚焦、没远见,现在经济动荡,不死不活,或者死的很惨都太正常了,对那些有聚焦,有核心竞争力,有执行力,有决心的少数人和企业来说,这才是最好的时间点”。

这一观点在融云等互联网垂直细分领域的独角兽企业身上得到了充分的验证。2019年8月20日,融云正式宣布,旗下产品SDK的总触达用户数突破40亿大关。


融云SDK触达用户数突破40亿

在人口、流量和资本红利逐渐退潮的时代中,商业的本质愈发回归成本和效率两个核心,作为一家全球化的互联网通信云服务商,融云始终专注于服务B端客户,依托先进的技术实力和优质服务为开发者和企业提供即时通讯及实时音视频通信云能力,降低产品的研发成本,提升应用上线效率。

截至目前,融云服务已全面覆盖全球233个国家及地区,为超过30万款App提供了即时通讯和实时音视频服务,日均消息量达150亿条,日消息峰值超2218亿条,SDK触达用户量突破40亿,平均在每位中国网民的智能手机中至少有5款App通过融云SDK来实现沟通能力。

技术创新驱动通信云进化

根据艾瑞最新发布的2019年《全球互联网通信云行业研究报告》数据显示,融云在IM即时通讯领域市场占有率第一。在这个所谓的互联网寒冬时代,融云无论是市场占有率还是品牌影响力均取得了“井喷式”的提升。而支撑融云逆势增长的正是其核心竞争力——领先于行业的技术实力。

众所周知,在IM领域消息的到达率是最核心的质量要求,融云是业内唯一承诺消息可靠性100%的厂商。融云基于私有通讯协议,即使在弱网环境下,也可以保障消息的不丢、不重、不乱序。在同时在线人数飙升的场景下,海量消息并发的稳定性也至关重要,融云IM云服务通过分布式的微服务架构可以实现亿级消息的高并发,自动水平扩展,支撑海量消息并发。

据悉,融云在近期还推出了一系列多样化消息的全新玩法,比如高品质语音消息、语音消息变声、语音消息转发、语音进度条、快捷回复等等,满足开发者在不同行业场景下对于消息的灵活应用需求,减少从开发到上线的时间,并可以根据自身的产品衍生出更多实用、有趣的新玩法。

除了在IM领域市场份额第一,融云在实时音视频市场同样拥有多年研发经验,各项技术指标保持市场领先水平,如提供一对一、多对多音视频通话能力,视频支持分辨率1080P高清画质,音频可对抗70%丢包,视频可对抗30%丢包,音视频延时最低可达66ms等等。


SD-CAN 融云全球通信网

此外,融云在全球设立了多个数据中心,并拥有数千个加速节点,覆盖全球所有国家及地区(233个),构建起了一张安全、可靠、低延时、高并发的全球通信网。通过遍布全球的优质接入点,结合融云自研的最优链路调度算法,可将消息快速分发给终端用户,解决因跨国、跨运营商、大规模用户访问而导致的响应慢、丢包高、服务不稳定等问题。

以品牌服务抢位云端市场

技术研发实力固然是通信云市场最为核心的竞争力,但如何更好地让产品来服务客户、助力客户成功也是融云等通信云企业不断思考和探索的方向。

据了解,融云于近日正式推出了磐石、锦囊、方舟、魔方及玲珑五大服务体系,将原有的服务能力与全新的服务模块进行整合,打造了可以全面覆盖客户整个生命周期的五大服务体系,涵盖“系统保障服务”、“技术咨询服务”、“通信安全服务”、“消息管理服务”和“个性定制服务”,从稳定性、可靠性、安全性、个性化、先进性等多维度为客户提供管家式贴身服务。


融云五大服务体系

当大多数云厂商还处于提供产品技术、解决方案的云服务初级阶段时,融云率先提出了服务产品化和服务品牌化的核心理念,将单一的通信能力提升至全生命周期的服务体系,将服务视为业务发展另一重要支撑,使服务成为差异化竞争力之道,重新定义了服务的价值。

曾先后担任巴宝莉CEO、苹果高级副总裁的企业管理专家Angela Ahrendts在接受《华尔街日报》采访时说过:“不要浪费任何一个经济退潮的机会,它能告诉我们什么才是真正重要的东西”。越是寒冬,越拼内功,正是依托于技术优势和服务体系的升级,融云的产品SDK触达用户数在2019年激增至40亿。可以说,对于盲目追逐风口的企业而言,这是一个最差的时代,而对于像融云这样拥有核心竞争力的企业来说,这是一个最好的时代!

IT桔子专访融云CEO 韩迎:从 SDK 迈入通信中台,互联网通信云未来可期

科技创新IT桔子 发表了文章 • 0 个评论 • 43 次浏览 • 2020-06-16 18:18 • 来自相关话题

疫情「黑天鹅」冰冻了全国各行各业,尤其是像房产经纪这样的传统服务业,至今难以全面复工,VR 线上看房、直播看房成为了房产开发商和房产经纪公司的「自救」举措;而带看经纪人需要与观众在线实时互动,画面、声音需要实时低延迟地呈现给观众,这一方案背后离不开实时音视频技... ...查看全部

疫情「黑天鹅」冰冻了全国各行各业,尤其是像房产经纪这样的传统服务业,至今难以全面复工,VR 线上看房、直播看房成为了房产开发商和房产经纪公司的「自救」举措;而带看经纪人需要与观众在线实时互动,画面、声音需要实时低延迟地呈现给观众,这一方案背后离不开实时音视频技术等云服务的支持。

疫情期间,除产业外,一些政府公共管理机构也难以正常运作,比如法院开庭需要当事人出席,如今远程庭审解决方案只需法官、陪审员、原告/被告、辩护律师、亲友等人员在线即可开庭。系统支持多方实时音视频沟通,法官控制话筒权限(发言/禁言);此外,还可以录音录像,作为案件审理过程中的重要信息备份,该方案从流程和功能上都较高地还原了线下开庭情形。

以上是融云提供的 IM(即时通讯)及 RTC(实时音视频)技术服务的应用场景举例。

疫情催生新场景,通信云迎来新机遇
疫情正在加速全社会向线上转型,政府、企业都在积极拥抱数字化,学习、工作、生活全面在线化,政企员工「在家办公」,全国中小学生「在家上网课」,致使在线教育平台流量暴增。此外疫情也催生了新的应用场景,它不是技术人员凭空「拍脑袋」想出来的,而是客户在切实需求下提出的应急需求方案,包括在线庭审、在线评标、云论坛、云路演等,融云 CEO 韩迎坦承,「如果不是疫情,我自己怎么也想不到法院还可以在线庭审」。

另外,值得思考的是疫情将促使更多中小企业出于成本/效率因素,优化成本结构和用工模式,比如更多考虑采用远程办公、灵活用工、OA 系统的方式节省固定成本,因而远程沟通及协作带来的增量需求或将爆发。

不管是远程办公、在线教育、直播,很多涉及到人与人、人与物之间的交流协作场景下,IM 即时通讯及实时音视频是核心诉求之一,云通信成为技术架构上必备的模块。但是对于大部分企事业单位来讲自研成本过高:一方面小微企业无法投入足够的专业人员;另一方面,对于中等规模互联网企业来说,亿级以上高并发的通信处理具有较高的技术门槛,除专业能力外,时间成本也是一笔耗费。

作为专注于通信的 PaaS 云服务平台,融云正是要解决这样的痛点:通过底层的基础模块支持,帮助企业与开发者构建「云通信」的能力。


从云服务行业的市场结构来看:底层 IaaS 的市场是高度集中的,中国 70% 的市场份额被云巨头把持。而 PaaS 市场相对集中,当前中国通信云服务平台企业数量大大小小加起来不过几十家,整体市场规模预估在百亿级以上;据 iResearch 报告显示,在国内第三方即时通讯云服务市场,融云市占率多年维持第一,其作为头部平台有机会继续做大做强。SaaS 市场规模可达到千亿以上,但极度分散,IT 桔子数据显示,纯 SaaS 创业企业数量有 2239 家。

多年技术积累成核心壁垒,搭建通信中台解决方案
「融云本质上是做通信服务的」,韩迎称。

融云起家于 IM 业务,近年来大力发展实时音视频产品。无论通信内容载体如何变化,是文字、图片还是音频、视频——「通信最核心的诉求就是两个字,稳定」,韩迎解释道:「用户对延迟、丢包(接收不到信息)、通话质量差、掉线这类问题是零容忍的。」

然而,想要持续获得「稳定」的效果却不是那么容易。工信部近日表示,疫情期间我国互联网流量较去年底增长 50%,武汉增长率更达到了 60%—70%。那么如何保证亿级用户量、高并发通信的稳定性?这也是融云的技术壁垒所在,它主要源于融云的团队基础和日后深厚的技术积累。

一方面,融云创始团队成员出身中国移动旗下飞信和三星中国研究院 RCS,具备通信基因。

另一方面,技术与业务这 2 个「轮子」相辅相成,韩迎说,「技术的迭代是无止尽的,在公有云上,我们一直以来在全国乃至全球接入更多的节点,保证服务稳定性;有个词叫『业务不死,优化不止』,不管是后端服务端还是前端 SDK 的优化,大量可用的业务质量数据、用户日志可以帮助融云不断优化技术模型,提升用户体验。」

对于技术型服务商融云而言,服务科大讯飞、联想、大型保险公司等大客户所积累的技术经验和行业经验都是一种优势,它意味着机会成本低,以及更高效和稳定地交付;因而,技术积累成为公司不断进击的核心优势,也是融云甩掉其他创业企业,保持竞争优势的重要砝码。

此外,伴随着不同行业和领域内客户数量的增长,融云跟进市场需求,在公司业务高成长的同时优化产品,不断迭代应用场景;包括基于 IM 顺势推出实时音视频 RTC 能力。也是在服务客户的过程中,融云发现了一些共性化的需求,于是提出了「通信中台」的概念。

「通信中台」最大的价值是将融云的产品从「中间件」形态转变为标准化的解决方案,融云 CEO 韩迎直言,「原来融云所做的其实是很浅的 SDK 通信层,不涉及客户的业务,客户提供调用 SDK 来实现在线聊天、在线音频、在线视频的能力;现在融云把应用上的一些重复的共性需求抽象出来,将通信模块和功能模块打包组合成通信中台;这样可以节省客户的时间,融云多做了一点,客户就可以少做一点」。

韩迎将通信中台比作 aPaaS 的概念,相当于在 PaaS 层往上延伸,但又不同于 SaaS。通信中台对企业的好处是大大降低了开发难度,提高了开发效率。例如,在线教育场景中需要运用白板、屏幕共享,融云将这样的通用功能插件都集成在方案中,为企业搭建通信中台,极大地便利了企业和开发者们。

融云自诞生以来就聚焦 2B 业务,为超过 30 万款 APP 提供即时通讯和实时音视频云服务,因此在竞争中更具优势。据悉,融云 SDK 全球触达用户数量突破 45 亿,日消息峰值超 2218 亿条,在技术实力上与互联网巨头是同量级的。

在集成 IM 及 RTC 能力的办公系统应用场景中,融云旗下安信与企业微信、钉钉、飞书这类通用 SaaS 产品不同,可支持私有云部署方式及个性化定制,更好地满足企业客户打通原有业务系统的需求。


2019 年已完成 C 轮融资,争取 2 年内递交科创板申报材料
科创板自 2019 年中开板以来,成为国内科技创新企业青睐的融资通道,也成为一级市场投资机构新增的退出渠道。根据上交所数据,截止 2020 年 4 月 23 日,已申报科创板企业数量达到 252 家,109 家成功注册:其中计算机通信、软件和信息技术企业合计达到 47 家,占比最大;目前来看科创板企业上市日整体表现较好,金山办公 IPO 市值 231 亿元,UCloud IPO 市值 97 亿元。

据了解,融云于去年底完成数亿元 C 轮投资,投资方包括国投创业、东方证券旗下东证资本以及中经合资本。韩迎表示,融云正在准备下一轮融资,并已将科创板上市计划提上日程,争取 2022 年内递交申报材料。

综上所述,融云成立 6 年,盈利模式清晰,并且积累了稳定的 KA 客户,具有同行业内领先的技术优势;同时在政务通信云服务市场拥有一定的资源和市场壁垒;在产品上实行差异化竞争策略;在财务上,通信中台的发布将有效提升客单价,为公司带来更高的营收;这或将成为融云登陆国内资本市场的加分项。

此外,目前全球正遭受疫情影响,远程办公、视频会议成为常态;融云已经在全球设立了多个数据中心,具备服务全球企业的通信云网络和技术能力,尽管当前海外云主要服务「出海」的互联网企业的和中国跨国公司;但伴随着 5G 加快落地应用,以及未来的全球化布局,相信公司有更广阔的想象空间。

融云IM商用版冰点促销 助程序员的十二时辰躺赢

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

最近《长安十二时辰》网剧火爆了荧屏,各行业人的十二时辰被安排得明明白白的。比如,运营的十二时辰是@所有人发红包、@**不要在群里发广告、@**不要在群里发果照、@**不要在群里发小程序;街道办事处大妈的十二时辰是防止居民乱扔垃圾、防止游客乱扔垃圾、防止无人机乱... ...查看全部

最近《长安十二时辰》网剧火爆了荧屏,各行业人的十二时辰被安排得明明白白的。比如,运营的十二时辰是@所有人发红包、@**不要在群里发广告、@**不要在群里发果照、@**不要在群里发小程序;街道办事处大妈的十二时辰是防止居民乱扔垃圾、防止游客乱扔垃圾、防止无人机乱扔垃圾;甲方口中财务的十二时辰是休假了、出差了、失联了……

那么,程序员的十二个时辰是什么样子的?据小编暗访发现,程序员除了熬夜加班敲代码改bug外,最耗费时间的工作竟然是产品选型和价格对比。所有程序员都希望云服务商提供的产品质量稳定、安全可靠,价格最好是降至冰点瞬间戳中老板的high点,不再为价格对比伤神,躺赢获老板手动点赞。

近日,全球互联网通信云头部企业融云为切实满足广大程序员的诉求,开启“炎热夏,冰点价”的年中大促活动,让程序员的十二时辰不再为选型比价格而耗费精力。活动自2019年7月1日至8月31日,为期2个月的促销期,融云拿出IM商用版回馈新老用户。程序员们都知道,只要集成融云IM SDK,便可快速实现单群聊、私信、红包、图片、语音和小视频等通讯能力,缩短开发周期和开发成本,并有效提升用户粘性和活跃度,这一广受赞誉的IM即时通讯产品,可谓是程序员的十二时辰躺赢之必备装备。


图:融云冰点促销 500名额限时抢

融云安全可靠的支持 让程序员使用无忧

作为致力于服务广大开发者的全球互联网通信云公司——融云在安全性、可靠性和稳定性上都有不俗表现。小编暗查了今年的艾瑞《全球互联网通信云行业研究报告》,融云不仅再次入选成为报告中的典型案例,还被艾瑞报告重点分析,凭借为全球开发者及企业提供“IM+实时音视频”的互联网通信云能力,尤其是在IM上的技术优势与“全球互联网通信云”的前瞻布局,占据战略先发位置。

说到IM的技术优势,程序员们大可放心的是,融云是业内唯一承诺消息可靠性100%的厂商,率先承诺在海量用户并发的情况下消息不丢失、不重复、不乱序。目前,融云平台日活已超7000万,SDK触达用户数在全球累计突破38亿,无论是日活量还是用户数均处于全球领先位置。融云消息可靠性100%的承诺可以让开发者们使用无忧,酣眠不觉醒。

在安全性和稳定性上,融云一直为程序员提供可信赖的支持。其一,融云拥有自主知识产权的私有通信协议”EverSync”,基于拥有知识产权的连接加密技术,可以防止黑客中间人方式进行数据窃听,保障数据在传输过程中不可破解。其二,融云在全球设立了多数据中心,拥有3000多个加速点,覆盖全球所有国家及地区(233个),可为客户随时随地保障至少3个就近节点提供接入,有效解决客户跨地域、跨国家的“网络延迟”及“丢包”等通信稳定性问题。


融云诚意促销折扣 优惠只需要心算

此次年中大促,是按日活峰值范围应付的标准月费来折扣计费的,不同客户按照不同的日活峰值档位,只要预存半年以上,就会得到相应的折扣优惠。这种实实在在的打折,程序员们通过最基本的心算就可以得到答案。以日活峰值范围在2000至1万的用户为例,标准月费2000元,标准年费为24000元,2年预存7折优惠后为33600元。七折到九折的优惠,对应预存半年到两年的使用时间,这就是融云带给新老用户最实惠的价格,冰点价格一直爽,助力广大程序员清凉度夏日。

活动时间过半,开发者热情参与,融云IM商用版半年9折名额100个,已全部抢完;还剩余“1年8折名额200个”即将满额,“预存2年7折名额200个”亟需速抢,这波诚意促销简直是手快有手慢无的节奏。本次回馈新老用户的活动当月预存,下月1日即可享受优惠啦。程序员们奔走相告,火速预约和购买,即可畅享全年冰点价!这个火热的夏天,融云值得买!

【融云分析】如何保障 API 设计的稳定性

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

计算机行业有句名言 —— 计算机科学领域的任何问题,都可以通过增加一个间接的中间层来解决。当前的计算机领域,无论广度还是深度,已经没有一个人能完全掌握了。但是,通过各种中间层的组合使用,我们不需要了解其内部细节,也可以像搭积木一样,开发出各种有趣的服务和应用。... ...查看全部

计算机行业有句名言 —— 计算机科学领域的任何问题,都可以通过增加一个间接的中间层来解决。

当前的计算机领域,无论广度还是深度,已经没有一个人能完全掌握了。但是,通过各种中间层的组合使用,我们不需要了解其内部细节,也可以像搭积木一样,开发出各种有趣的服务和应用。
而各个中间层之所以能组合工作,正是因为大家都通过定义好的 API 交互和通信。每个模块在对外提供经过抽象 API 的同时,也需要使用其他模块的 API 作为自身运行的基础。

今天我们来聊聊融云在设计 API 过程保障稳定性的一些实践。

无处不在的 API
API(Application Programming Interface) 又称为应用编程接口。

而接口,本质可以理解为契约,一种约定。
计算机接口的概念起源于硬件。早期各家研发的各种元器件都不通用也没有标准,相互使用非常困难,于是大家约定了功能和规格,就产生了接口,后来蔓延到软件中。

接口蔓延到软件之后,又分为 ABI(Application Binary Interface) 和 API(Application Programming Interface) 。
前者主要约定了二进制的运行和访问的规则,后者则 专注于逻辑模块的交互。本文以下内容仅讨论开发者经常接触的 API。

很多人对 API 的印象只是包含一些函数的 Class 或 头文件。但 API 在我们生活中无处不在,只是我们有时并没有注意到。

比如,当我们在拨打电话时,手机和基站通信的整个系统是非常复杂的。

图片1

好在我们不需要了解内部的细节,仅需要把 11 位的电话号码传给“电话系统”的接口就可以,而隐藏的国家区号(如+86)可以理解为接口的默认参数。
这个高度抽象的 API 背后,隐藏了非常多的细节。借助上面的中间层理论,我们可以系统性地讨论设计一个 API 所需要考虑哪些内容。

图片2

模块对上层暴露的 API 如何被使用?

API 从使用的耦合方式上,可以分为两类:一种是通过协议调用,如调用 HTTP 接口;另一种是语言直接通过声明调用。
如设计 HTTP Restful API 时,并不需要关心使用者的操作系统、使用的编程语言、内存线程管理等,因此会比后者简单一些。

API 从使用者的规模和可控范围上,可以分为 LSUD(Larget Set of Unkown Developers) 和 SSKD(Small Set of Kown Developers) 两种。
前者一般都是公网开放的云服务,任何开发者都可以使用,无法提前预知以何种姿势被使用,版本也不可控制。融云提供的通信云就是这种 API。
后者用户群有限,一般都在同一家公司或团队内。比如前段时间比较火的组件化,即对内提供的模块化 API,使用范围和方式均可控,在更新时一般不用太纠结向后兼容。

API 的第一受众是人,然后才是机器,所以“可理解性”在设计时需要优先考虑。
而良好的 API 文档、简单扼要的 Demo、关键的 log,可以提升 API 使用者的体验。

API 所属模块对下层有什么依赖?

API 所属模块都运行在一定的地址空间中。而其中的环境变量、加载库、内存和线程模型、系统和语言特性都需要考虑。

API 所属模块的内部实现对其他层有什么影响?

一般而言,设计良好的 API 在使用时,并不需要理解其内部实现。但如果能了解其内部架构并辅助关键 log,有助于提升使用 API 的效率。
并且模块的内部实现,有时也会影响到 API 设计的风格。
如一个强依赖 IO 的接口,可能需要使用异步的方式。大量异步的方式,就衍生出了 RxJava 等框架。

向后兼容
因为 API 如此重要,涉及的范围又如此广泛,广大开发者对 API 的向后兼容可以说要求非常高。
毕竟谁也不想在开发过程中,频繁的更新接口和代码,想想《 swift 从入门到精通到再次入门到再再次入门》的惨案就心有余悸。

我们不仅问,为什么很多公司或者项目都无法向后兼容,仅仅是投入不够或不够重视,还是说 100% 的向后兼容实际就是不可能的?

假设设计是理想和经过论证的,正如一个完美的圆圈。
设计是要落实到编码中的,而编码的过程中总是不可避免的引入一些 bug,而带着 bug 的某个版本实现,其实正如一个 Amoeba 变形虫,形态是不固定的。而随着版本不断演进,不可避免会产生一定的差异。

第一个版本实现:

图片3

第二个版本实现:

图片4

所以说 100% 向后兼容本身就是不可能的。

因此,大家平时在谈论 API 稳定性时,其实默认是可以包含一定程度变更的。

但由于 API 涉及的范围太广泛,保障向后兼容都需要极大代价。
比如 Linux 就希望快速迭代,完全不保证 API 的稳定性。针对这个问题,Linux 还特意写了 stable-api-nonsense 文档。
有兴趣的可以点击阅读:stable-api-nonsense.rst

渐进式改进
所以说,保障 API 的稳定性会面临很多挑战,比如:
* 业务形态还不稳定,还在高速发展
* 业务和 API 历史包袱较重
* 多个平台和语言的特性不一致
* 用户群和使用方式不明确

我们回顾一下正常的开发流程,看看是否能通过一些指标和工具,改善 API 的稳定性,主要涉及:需求、设计、编码、Review、测试、发布、反馈等步骤。

※需求

普通的产品开发,在启动的时候,用户需求都比较明确,但对于 LSUD 的云服务而言,无法提前预知用户群都有哪些,以及用户在他的产品中如何使用 API。
这容易造成,没有明确的用户需求,API 就不好进行设计和迭代,没有设计就没有用户,需求更无从谈起。这是一个鸡生蛋、蛋生鸡的问题。

建议可以在 API 发布之前,内部先针对典型的使用场景,设计几个完整的 Demo,验证 API 的设计和使用是否合理。
需要注意的是,Demo 需要有完整应用场景,达到上架地步,如果能内部使用, Eating your own dog food 最好,过于简单的 Demo 无法提前暴露 API 的使用问题。

Demo 的开发人员最好与 API 的设计者有所区分,避免思维固化,更多内容大家可以参照 Rust 语言开发在自举过程中的一些实践。

※设计

在设计 API 的时候,有很多需要注意的点和普通开发不太一样。

普通开发,快速实现功能始终被放在第一位。比如大家会用一些敏捷开发的方式,优先实现功能再快速迭代等。
但 API 设计时,接口无法频繁变更,所以首先需要考虑的是“少”,少即是多。

l 每个 API 做的事情要少

一个接口只做一件事,把这个事情做好就足够了。
需要避免为了讨好某个场景,在一个 API 上进行复杂的组合逻辑,提供一个类似语法糖的接口。否则,场景的业务自身在演进时,很难保证 API 的行为不变。
如果需要支持多种业务,可以考虑将 API 分层,比如融云客户端的 API 会分为下面几层。

图片5

举个例子,融云考虑通用性,基于订阅分发的模型,抽象了 RTCLib,客户端能处理媒体的任意流,非常的灵活,但是对于用户而言开发代价可能高些,要思考和做的工作比较多。
考虑到大量的用户,其实需要的是音视频通话的业务,基于 RTCLib,融云分装了不带 UI 的 CallLib 以及集成了 UI 的 CallKit。
如果一个用户,需求和微信的音视频通话类似,可以集成带 UI 界面的 CallKit,开发效率会非常高;
如果用户对通话音视频通话 UI 的交互有大量需求,可以基于 CallLib 进行开发,对 UI 可以进行各种定制。

l 暴露的信息要少

成熟的 API 设计者都会尽可能的隐藏内部实现细节。
比如字段不应该直接暴露而是通过 Getter/Setter 提供,不需要的类、方法、字段都应该隐藏,都已经成为各个语言的基础要求,在此就不细述了。
但容易被忽略的一点需要提醒大家,应尽量隐藏技术栈的信息。
比如:API http://api.example.com/cgi-bin/get_user.php?user=100,就明显混入了很多无用的信息,并且以后技术切换升级想维持 API 稳定非常麻烦。

l 行为扩散要少

在语言直接调用的 API 中,需要避免基础接口通过继承导致行为扩散。
在普通的编码过程中,抽象类和继承都是面向对象的强大武器。但是对于 API,更建议通过组合使用。
比如一个管理生命周期的类,如果被继承,子类有些行为就有可能被修改而导致出错。这时候建议使用 Interface + 工厂的方法提供实例。
由于 Java 8 之前 interface 没有 default 实现,为了避免增加功能需要频繁修改接口,可以使用 final class。
Objetive-C 则可以使用 __attribute__((objc_subclassing_restricted)) 和 __attribute__((objc_requires_super) 控制子类继承行为。

l 画风切换要少

API 命名要做到多个平台的业务命名统一,与每个平台的风格统一。
这点 HTTP 的接口要简单一些,只需要选定一种风格即可,Restful 或者 GraphQL 或者自己定义。
语言调用的 API 命名,建议首先遵循平台的风格,然后再是参考语言标准,最后才考虑团队的风格。
比如:iOS 平台的 API 开发,需要首先参照 iOS 的命名风格,did 和 will 之类的时态就非常有特色。
命名上细节较多,词汇、时态、单复数、介词、⼤小写、同步异步风格等都需要考量,需要长时间的积累。

l 理解成本要少

一般 API 每个接口都会有相应的注释说明,但是值得注意的是,大部分开发者并不看注释。
大部分开发者对接口的了解,都仅源于 IDE 的补全和提醒。一个接口看着像就直接用,不行再换一个试试,这其实是一种经验式编程的方式。
也就意味着接口命名需要提高可理解性。有一个办法可以验证,将接口的所有注释抹掉,使用者能否非常直接的看懂每个接口的含义。如果很困难,则需要改进。

API 设计还有一处和普通开发不太一致。普通开发设计好架构即可,每个模块的开发可能是同一个人,接口并不需要在设计时确定下来。
但是 API 的设计阶段,需要进行 Review 并直接确定接口的设计,以保证多端在开发时遵循完全一直的规则。

※编码

在 API 的编码过程中,有以下几点需要注意。

在 API 中,预定义好版本号。
这个主要是针对 HTTP API,如:http://api.example.com/v1/users/12345?fields=name,age。 如果目前仅有一个版本,也可以暂时不加,第二版时再区分。

注意 API 版本检查。
当分层提供多种 API 时,每层 API 需要在启动时,先校验一下版本号,避免不匹配的情况。
比如在以下 Java 代码中,大家可能觉得判断版本号相等的代码非常奇怪,应该永远是 true 才对。

图片6

但是抽象类和实现类出现在不同的分层模块中,并且实现类先编译,抽象类版本更新后再编译,就会出现不一致的情况。有很多语言或平台能提供类似的方式来确定版本。

提供规范性的 log 输出。
普通开发的log,主要用于自己定位问题。但是 API 在编码时,最好针对性的添加一些 log,有利于 API 的使用者理解并简单排查问题。
但出于性能考虑,需要定义好 log 的级别并可以调整。

注意废弃与迁移。
当一个以前设计的 API 不再符合要求或者有重大问题时,我们可以对外标记成已废弃,并在注释中建议使用者迁移到另一个接口。
如果是类似的被废弃接口,内部编码时最好能使用新的接口来实现,以降低向后兼容的维护成本。
HTTP 的 API,需要预定义好迁移的错误码,比如在 HTTP 规范中,可以使用 410 Gone 说明已经不再支持某个接口。

※Review

API 的 Review 基于普通开发的 Code Review。
如果基础的 Code Review 都没有做好,肯定无法保障 API 的质量和稳定性。

可以通过一些工具,为 API 的 Review 提供一些参考报告。
比如可以使用 SonarLint 分析代码复杂度,如果接口层的代码复杂度较高,会是一个危险的信号。
还可以借助 Java 反射、Clang 语法分析,获取当前的 API 接口列表,生成接口变更报告,也有利于减少无用接口的暴露。
另外,自动化工具生成的接口文档也是 Review 重要的一环。

※测试

在测试环节,我们可以通过 unit test 来关注 API 的稳定性。
与敏捷开发经常修改 test case 不同,API 的 test case 基本代表了接口的稳定性。所以在修改旧 case 时需要特别明确,是 case 自身的 bug 还是接口行为发生了变更。

※发布

我们可以通过区分 dev 和 stable 版本,为不同阶段的开发者提供更好的体验。

dev 版本包含最新的功能,但是 API 接口有变更风险。stable 版本 API 稳定,但功能不一定是最新的。
如果开发者还在开发过程中,可以选用最新的 dev 版本,基于最新 API 开发。
如果应用已经上线,可以选择升级直接到最新的 stable 版本。

※反馈

由于前面提到的,云服务的 API 比较难确定用户群和用户的使用方式。
可以参考 APM(Application Performance Management) 的方式,记录热点 API 使用情况,为后续的优化提供数据。

总结
上面的改进,让保障 API 的稳定性变得更容易。
下面以融云 IMLib iOS SDK 2.0 版本演进为例,历尽 2015至 2019 四年时间,从 2.2.5 到 2.9.16 共 98 个版本。
API 接口数量翻了一番,考虑到接口更内聚,功能大约增加了 3 倍。

图片7

但是需要用户迁移的接口非常少,即使迁移时开发成本都非常低。

图片8

图片9

融云实时音视频落地各应用场景 以 RTC+IM 双重能力服务开发者

WebRTC融云那些事 发表了文章 • 0 个评论 • 46 次浏览 • 2020-06-16 18:09 • 来自相关话题

疫情之下,在线教育、娱乐社交、电商直播等领域逆势增长,也带动了开发者们对于 IM 和 RTC 能力的需求热潮。然而对开发者来说,分别选择不同 IM 和 RTC 厂商实现通信场景,不仅降低开发效率,还会大幅增加产品上线后的运营和服务成本。为解决部分开发者的实际需... ...查看全部

疫情之下,在线教育、娱乐社交、电商直播等领域逆势增长,也带动了开发者们对于 IM 和 RTC 能力的需求热潮。然而对开发者来说,分别选择不同 IM 和 RTC 厂商实现通信场景,不仅降低开发效率,还会大幅增加产品上线后的运营和服务成本。

为解决部分开发者的实际需要,融云适时升级了实时音视频产品,并推出了“IM 即时通讯+实时音视频+推送”一体化解决方案,就是要“以一套 SDK 解决所有通信场景”,满足多场景下的高品质通信的需求,成为下一代 RTC 的创领者。

在线教育场景的 RTC 应用

在线教育中,由于不同学生群体的需求不同,催生了丰富的在线教学模式,融云实时音视频可以支持互动小班课、一对一辅导、大型互动直播课、双师课堂、音乐教学等全场景在线教学模式。

小班互动课和一对一辅导场景,重点需要保障师生上课质量体验,课堂稳定流畅不卡顿,目前融云实时音视频可以做到全球端到端延时小于 400ms,最低延迟 66ms,满足超低延时需求。同时通过融云实时音视频服务可以灵活地控制音视频流的订阅和发布,让教师端可以任意选择单个或多个学生进行课堂答疑互动;此外课堂白板作为老师上课、讲解要点的重要工具,融云可以提供互动白板及高清屏幕共享,满足师生互动的需求。


融云满足一对一辅导场景的强互动需求
大型直播互动课程和双师课堂中,主要是保证 QPS 下仍有稳定的承载能力和低延时的互动体验。融云首先采用去中心化多点分布式的全球架构,无需对接 CDN,可支持不限量学生同时在线,支持千万级并发态;其次,利用全球加速网络,多端用户实现就近节点接入,直接通过专线级联的方式来减少网络传输造成的延迟,实现师生音视频远程连麦互动的低延时体验。


融云支持无成员上限的互动直播聊天室
在较为特殊的音乐教学场景,尤其需要高清音乐模式,针对器乐的高频音段和弱音音阶进行优化处理,融云在音频方面采用全声道采样、立体声支持,支持最高音频采样率 48KHz,可真实还原对端声音,高度还原音乐细节。此外,融云实时音视频还提供隐身监课功能,课程监督者可隐身进入课程房间,实时了解课堂情况,能够有效帮助平台提升课程品质,提高用户满意度。

泛娱乐社交场景的 RTC 应用

泛娱乐社交中,融云可提供包括音视频连麦、观众直播、麦位管理、互动聊天室在内的一整套解决方案,适用于泛娱乐直播、语音聊天室、相亲交友、音视频通话等多场景。

泛娱乐直播场景中,融云提供的低延迟互动直播是基于RTC技术做的直播推流,它不依赖 CDN 推流,主播观众间延迟在 300ms 左右,主要服务一人直播多人互动的场景,比如直播带货、直播连麦、语聊、游戏社交等,为主播端到观众端延迟无感知的实时互动提供高质量保障。与 RTC 技术不同的,另一种实现音视频能力的 CDN 技术,往往直播延时在 3-5 秒。

在泛娱乐直播中经常会出现多麦位直播场景,即多人直播互动场景,融云可以提供麦位双向音视频通话能力,观众可以清晰收看合流直播;同时还可以通过融云 IM 通道实现上麦、下麦、抢麦、轮麦、抱麦、禁麦等多种麦位管理方式,让房主更好地管理直播间。此外,融云通过自定义聊天室属性,提供 Key、Value 多种存储方式,实时记录客户端与服务器端用户麦位状态,实时更新,确保多麦位直播的流畅无卡顿。


融云语音聊天室解决方案
近期,全球音频社交类 App 开发增多,语音聊天室这类场景被关注。融云为开发者们提供了“多路音视频互动”技术,纯音频可以做到支持 32 路连麦互动,同时提供多种控麦能力的“麦序管理”功能,满足开发者快速构建多人语聊场景的需求。

更多领域中的 RTC 应用

智能硬件领域,在智能手表、智能音箱、VR 眼镜、智能门禁中,融云均可帮助开发者实现端到端的一对一/多方音视频通话;尤其在智能音箱场景中,手机端可以远程监控音箱端,如遇紧急情况,可随时开启服务器端录像功能。

在地产服务中,融云可以帮助客户实现 VR 直播带看,利用 IM 信令通道实现多端 VR 同步看房;利用实时音视频技术,让用户与客户经理实时语音连线,实现客户经理远程 VR 带看并同步讲解。

在线医疗的远程会诊,融云可帮助开发者实现多方会诊、病历上传、病情讨论、后台录制等功能;在线问诊中,融云还可提供互动白板、时长计费、IM沟通与高清多方音视频等。

此外,企业通信的协同办公、视频会议;金融服务的远程面签、视频客服等,凡涉及互联网通信领域,皆是融云 RTC+IM 双重能力所覆盖的范畴。

结语

在实际应用场景中,IM 和 RTC 能力是密不可分的。有 RTC 需求的几乎 100% 都有IM 需求。融云 RTC 调用了 IM 信令通道,在稳定性、可靠性和通信接口协调性上,都能确保性能质量更佳,以 RTC+IM 双重能力为开发者提供更好的服务。在当前更为强调互动性的移动互联网新时代,通过融云“IM+RTC+推送”一体化解决方案,可以帮助开发者更加快速地构建低延迟、高品质的应用通信能力,实现音视频通信的全行业、全场景覆盖。

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

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

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 即可;


融云 IMKit SDK 5.X 升级说明

IM即时通讯fanta2 发表了文章 • 0 个评论 • 22 次浏览 • 4 天前 • 来自相关话题

Tips如果您应用依赖于 suport 包,可参考 AndroidX 迁移文档将依赖转换为 AndroidX 后,再集成 IMKit SDK 5.X版本。1. 类路径调整IMKit SDK 5.X 版本重构了 SDK 的架构,通过 MVVM 框架实现... ...查看全部

Tips

如果您应用依赖于 suport 包,可参考 AndroidX 迁移文档将依赖转换为 AndroidX 后,再集成 IMKit SDK 5.X版本。

微信截图_20210222180400.png

1. 类路径调整

IMKit SDK 5.X 版本重构了 SDK 的架构,通过 MVVM 框架实现,导致很多类路径发生了更改,下表列出了 5.X 之前版本对外公开类的路径变更:

2.x 、4.x 版本路径
io.rong.imkit.fragment.ConversationListFragment
io.rong.imkit.fragment.ConversationFragment
io.rong.imkit.RongExtension
io.rong.imkit.userInfoCache.RongUserInfoManager
io.rong.imkit.mention.RongMentionManager
io.rong.imkit.manager.IUnReadMessageObserver

5.x 版本路径
io.rong.imkit.conversationlist.ConversationListFragment
io.rong.imkit.conversation.ConversationFragment
io.rong.imkit.conversation.extension
io.rong.imkit.userinfo.RongUserInfoManager
io.rong.imkit.feature.mention.RongMentionManager
io.rong.imkit.manager.UnReadMessageManager.IUnReadM

路径调整 Tips

参照上表,在 AndroidStudio 中 command+shift+R 全局搜索旧的类路径,替换为新路径。 如果深度定制化了 IMKit SDK,部分类路径的调整可能不在上述列表中,升级以后 AndroidStudio 会有红色报错。删除报错类里红色未识别的导入路径,鼠标停留到报错的地方,根据 AndroidStudio 的提示导入新路径即可。如果有多个地方使用了该路径,可以参考第一步里的方法,全局搜索并替换。

2. 集成方式变更

页面跳转时由原先的隐式调用方式更改为显示调用, 因此集成步骤有所简化和更改。您需要先移除旧版本 AndroidManifest.xml 文件中关于 IMKit SDK 的配置,参考官网文档重新集成。

3. 消息展示模板变更

列表页由 ListView 更改为效率更高的 RecycleView,因此自定义消息的展示模板需要对应调整。

将自定义消息的展示模板更改为继承 BaseMessageItemProvider<>, 并实现基类方法。 移除展示模板里原先的注解,原注解属性可在新模板构建类里通过调用基类成员 mConfig 的各个方法进行配置

4. 内部实现变更

资源名称变更。IMKit SDK 5.x 版本重新统一了资源名称的命名,如果您自定义了部分资源文件,可参考官网自定义文档,重新替换对应名称的资源。

移除了 EventBus 。IMKit 5.x 版本不再依赖于 EventBus 进行事件分发,更改为通过观察者模式实现。如果您应用里使用了旧版本 SDK 里的 EventBus, 升级后需要您从应用层自己引入依赖。

移除 RongContext 类。如果您应用里有调用 RongContext 作为上下文使用的地方,请更改为调用您自己的应用上下文。

由于更改为 MVVM 框架,原 fragment 里很多业务相关接口被移除,您可参考官网 5.x 版本文档重新进行页面自定义。



融云 SDK 5.0.0 功能迭代

IM即时通讯融云技术团队 发表了文章 • 0 个评论 • 109 次浏览 • 2021-01-29 16:07 • 来自相关话题

融云 SDK 发布了 5.0 Dev 版本,在持续迭代新功能的同时,此版本对 IMKit SDK 进⾏了重构优化并且对外开源,SDK 初始化速度更快,同时减少了不必要的内存占⽤,针对 Android 库⽂件引⼊了加固技术,提升 App 安全性,详细如下:新增功... ...查看全部

融云 SDK 发布了 5.0 Dev 版本,在持续迭代新功能的同时,此版本对 IMKit SDK 进⾏了重构优化并且对外开源,SDK 初始化速度更快,同时减少了不必要的内存占⽤,针对 Android 库⽂件引⼊了加固技术,提升 App 安全性,详细如下:

新增功能

1.⾃定义多语⾔推送⽂案

功能描述:
根据⽬标⽤户设置的语⾔环境,从推送模板中选择对应语⾔的内容进⾏远程推送。

应用场景:
应⽤中存在多个国家的终端⽤户,在发送系统升级、运营活动类的通知时,需要给不同语⾔环境的⽤户推送不同的运营内容,可使⽤此功能设置多语⾔推送⽂案,增强运营效果,提升⽤户使⽤体验。

使用方式:
通过融云开发者后台,设置⾃定义推送模板,创建模板 ID。
终端⽤户通过 SDK 中 setPushLanguageCode 接⼝上报⽤户的语⾔环境。
SDK 或 Server API 发送消息时,携带后台创建的模板 ID(templateId),如⽬标⽤户未在线时,融云服务端会⾃动根据⽬标⽤户的语⾔环境选择对应的语⾔内容进⾏推送。


1.png

2.静默撤回消息功能

需要撤回⼀条消息,⼜不希望通知对⽅时,可以在撤回消息时设置 isDisableNotification 属性,设置后⽬标⽤户不会收到撤回消息时的通知栏提醒,⽀持通过 SDK 或 Server API 撤回消息时进⾏设置。

功能优化


  • 对 IMKit SDK 进⾏了代码重构并且开源,提升了 UI 品质及⽤户体验,解决了开发者在⽼版 IMKit 中某些 UI ⾃定义需求不能满⾜的问题。
  • 从 5.0 版本开始 Android IMKit SDK 使⽤ AndroidX 库实现,Google ⾃ support v7:28 开始,⼤部分 support 包都迁移到 AndroidX 下,建议开发者们尽早将项⽬转移到 AndroidX 下。
  • iOS IMLib 通讯能⼒库使⽤动态库技术,减少了不必要的内存占⽤,使 SDK 内存占⽤更⼩。
  • 对 SDK 整体性能进⾏优化,SDK 初始化速度更快,耗电更少。
  • Android SDK 引⼊了 Android 库⽂件加固技术,提升 App 安全性。
  • Android SDK 对 Android 11 系统进⾏了兼容适配。
  • 修复了 RTC SDK 的部分 BUG。

详细内容请查看官⽹版本更新描述:
IM 版本更新描述
音视频版本更新描述

SDK 兼容 JSON

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

最近在集成融云 SDK,于是看了下融云的 SDK 源码,发现源码中有一段针对 JSON 的适配,由于针对 IE9 以下不支持 JSON 对象的处理方式,在此分享下1、优点: 除中文外的字符都会转为 Unicode 。2、缺点:JSON.parse() 使用 e... ...查看全部

最近在集成融云 SDK,于是看了下融云的 SDK 源码,发现源码中有一段针对 JSON 的适配,由于针对 IE9 以下不支持 JSON 对象的处理方式,在此分享下

1、优点: 除中文外的字符都会转为 Unicode 。

2、缺点:JSON.parse() 使用 eval 进行转换的,这个方法不是很安全,还看到人介绍用 new Function ,但是没有测试,这里暂时标记下,有空测试下。

if (!window["JSON"]) {
window["JSON"] = (function () {
    function JSON() {
    }
    JSON.parse = function (sJSON) {
        return eval('(' + sJSON + ')');
    };
    JSON.stringify = function (value) {
        return this.str("", { "": value });
    };
    JSON.str = function (key, holder) {
        var i, k, v, length, mind = "", partial, value = holder[key], me = this;
        if (value && typeof value === "object" && typeof value.toJSON === "function") {
            value = value.toJSON(key);
        }
        switch (typeof value) {
            case "string":
                return me.quote(value);
            case "number":
                return isFinite(value) ? String(value) : "null";
            case "boolean":
            case "null":
                return String(value);
            case "object":
                if (!value) {
                    return "null";
                }
                partial = [];
                if (Object.prototype.toString.apply(value) === "[object Array]") {
                    length = value.length;
                    for (i = 0; i < length; i += 1) {
                        partial[i] = me.str(i, value) || "null";
                    }
                    v = partial.length === 0 ? "[]" : "[" + partial.join(",") + "]";
                    return v;
                }
                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = me.str(k, value);
                        if (v) {
                            partial.push(me.quote(k) + ":" + v);
                        }
                    }
                }
                v = partial.length === 0 ? "{}" : "{" + partial.join(",") + "}";
                return v;
        }
    };
    JSON.quote = function (string) {
        var me = this;
        me.rx_escapable.lastIndex = 0;
        return me.rx_escapable.test(string) ? '"' + string.replace(me.rx_escapable, function (a) {
            var c = me.meta[a];
            return typeof c === "string" ? c : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    };
    JSON.rx_escapable = new RegExp('[\\\"\\\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]', "g");
    JSON.meta = {
        "\b": "\\b",
        "    ": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        '"': '\\"',
        "''": "\\''",
        "\\": "\\\\"
    };
    return JSON;
})();
}

看到这段代码,觉得融云 SDK 在兼容性上还是有处理的,又在 IE7 下做了测试,果然可以稳定运行(这年头还有 IE7 ,是不是很神奇)

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

融云文档:https://docs.rongcloud.cn/v4


抗击疫情 融云在行动

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

每天实时更新的新型冠状病毒肺炎疫情数据,牵动着每一个国人的心。随着疫情的不断升级,全国多地也相继启动重大突发公共卫生事件一级响应,一场没有硝烟的病毒防疫战已全面打响。作为一家以技术立命的互联网科技公司,融云也坚信“科技向善”,希望能为这场“战疫”献出一份微薄之... ...查看全部

每天实时更新的新型冠状病毒肺炎疫情数据,牵动着每一个国人的心。随着疫情的不断升级,全国多地也相继启动重大突发公共卫生事件一级响应,一场没有硝烟的病毒防疫战已全面打响。

作为一家以技术立命的互联网科技公司,融云也坚信“科技向善”,希望能为这场“战疫”献出一份微薄之力。融云提供的 PaaS 层服务,可通过集成 SDK 快速实现相关通信能力,我们决定从即日起至疫情结束,向企业、机构免费提供在线医疗场景下的 IM 及实时音视频服务,同时免费开放在线教育以及协同办公场景下的实时音视频服务。

据了解,随着感染者和就诊者的不断增多,很多医院已不负重堪,对于一些轻症患者,专家建议可以在线问诊,通过线上 IM 及实时音视频交流,医生可以直观地了解和检查问诊者的真实情况,为问诊者提供医疗帮助,以减轻线下医院发热门诊的超负荷运转,同时也可以降低线下就医交叉感染的风险,最大程度地为抗击疫情提供助力。


为了防止疫情的进一步传播,全国各地相关部门也已陆续下发了延迟学校开学和企业复工的通知。在这一特殊时期,很多学校、教育机构都在研究如何通过在线教育的方式让学生在家也能学习,很多企业也在制定远程办公的方案。在这两种场景下,实时音视频的技术无疑可以派上用场,融云愿为全国教育机构及企业提供免费的实时音视频服务,帮助企业机构实现在线课程、在线会议等能力,让学生停课不停学,让企业办公正常运转。


融云目前已开通了绿色通道,如有在线医疗、在线教育、协同办公三大场景需求的企业机构请联系我们,7*24 小时咨询热线 13161856839 已开通,待沟通确认符合相关场景需求后,我们会安排专人协助支持,进行免计费操作,辅助产品尽快上线,投入到一线“战疫”当中。

面对疫情,每个个体的力量也许是微小的,但我们相信,只要心在一起,全国上下就能同舟共济,共渡难关。在此,向所有奋战在疫情防控一线的工作人员致敬!融云愿意与你们一起,期盼春天的到来!

互联网寒冬中逆势增长 融云SDK触达用户数破40亿

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

过去一年,无疑是互联网行业最为寒冷的一年,无论是企业还是资方,都放缓了狂奔的脚步。但在许多人看来,这也是蓝海经济爆发的契机。有行业资深人士曾指出,“2018年的艰难其实被放大了,本来有很多人就是在大趋势上升中赚钱,没思考、没核心、没竞争力、没聚焦、没远见,现在... ...查看全部

过去一年,无疑是互联网行业最为寒冷的一年,无论是企业还是资方,都放缓了狂奔的脚步。

但在许多人看来,这也是蓝海经济爆发的契机。有行业资深人士曾指出,“2018年的艰难其实被放大了,本来有很多人就是在大趋势上升中赚钱,没思考、没核心、没竞争力、没聚焦、没远见,现在经济动荡,不死不活,或者死的很惨都太正常了,对那些有聚焦,有核心竞争力,有执行力,有决心的少数人和企业来说,这才是最好的时间点”。

这一观点在融云等互联网垂直细分领域的独角兽企业身上得到了充分的验证。2019年8月20日,融云正式宣布,旗下产品SDK的总触达用户数突破40亿大关。


融云SDK触达用户数突破40亿

在人口、流量和资本红利逐渐退潮的时代中,商业的本质愈发回归成本和效率两个核心,作为一家全球化的互联网通信云服务商,融云始终专注于服务B端客户,依托先进的技术实力和优质服务为开发者和企业提供即时通讯及实时音视频通信云能力,降低产品的研发成本,提升应用上线效率。

截至目前,融云服务已全面覆盖全球233个国家及地区,为超过30万款App提供了即时通讯和实时音视频服务,日均消息量达150亿条,日消息峰值超2218亿条,SDK触达用户量突破40亿,平均在每位中国网民的智能手机中至少有5款App通过融云SDK来实现沟通能力。

技术创新驱动通信云进化

根据艾瑞最新发布的2019年《全球互联网通信云行业研究报告》数据显示,融云在IM即时通讯领域市场占有率第一。在这个所谓的互联网寒冬时代,融云无论是市场占有率还是品牌影响力均取得了“井喷式”的提升。而支撑融云逆势增长的正是其核心竞争力——领先于行业的技术实力。

众所周知,在IM领域消息的到达率是最核心的质量要求,融云是业内唯一承诺消息可靠性100%的厂商。融云基于私有通讯协议,即使在弱网环境下,也可以保障消息的不丢、不重、不乱序。在同时在线人数飙升的场景下,海量消息并发的稳定性也至关重要,融云IM云服务通过分布式的微服务架构可以实现亿级消息的高并发,自动水平扩展,支撑海量消息并发。

据悉,融云在近期还推出了一系列多样化消息的全新玩法,比如高品质语音消息、语音消息变声、语音消息转发、语音进度条、快捷回复等等,满足开发者在不同行业场景下对于消息的灵活应用需求,减少从开发到上线的时间,并可以根据自身的产品衍生出更多实用、有趣的新玩法。

除了在IM领域市场份额第一,融云在实时音视频市场同样拥有多年研发经验,各项技术指标保持市场领先水平,如提供一对一、多对多音视频通话能力,视频支持分辨率1080P高清画质,音频可对抗70%丢包,视频可对抗30%丢包,音视频延时最低可达66ms等等。


SD-CAN 融云全球通信网

此外,融云在全球设立了多个数据中心,并拥有数千个加速节点,覆盖全球所有国家及地区(233个),构建起了一张安全、可靠、低延时、高并发的全球通信网。通过遍布全球的优质接入点,结合融云自研的最优链路调度算法,可将消息快速分发给终端用户,解决因跨国、跨运营商、大规模用户访问而导致的响应慢、丢包高、服务不稳定等问题。

以品牌服务抢位云端市场

技术研发实力固然是通信云市场最为核心的竞争力,但如何更好地让产品来服务客户、助力客户成功也是融云等通信云企业不断思考和探索的方向。

据了解,融云于近日正式推出了磐石、锦囊、方舟、魔方及玲珑五大服务体系,将原有的服务能力与全新的服务模块进行整合,打造了可以全面覆盖客户整个生命周期的五大服务体系,涵盖“系统保障服务”、“技术咨询服务”、“通信安全服务”、“消息管理服务”和“个性定制服务”,从稳定性、可靠性、安全性、个性化、先进性等多维度为客户提供管家式贴身服务。


融云五大服务体系

当大多数云厂商还处于提供产品技术、解决方案的云服务初级阶段时,融云率先提出了服务产品化和服务品牌化的核心理念,将单一的通信能力提升至全生命周期的服务体系,将服务视为业务发展另一重要支撑,使服务成为差异化竞争力之道,重新定义了服务的价值。

曾先后担任巴宝莉CEO、苹果高级副总裁的企业管理专家Angela Ahrendts在接受《华尔街日报》采访时说过:“不要浪费任何一个经济退潮的机会,它能告诉我们什么才是真正重要的东西”。越是寒冬,越拼内功,正是依托于技术优势和服务体系的升级,融云的产品SDK触达用户数在2019年激增至40亿。可以说,对于盲目追逐风口的企业而言,这是一个最差的时代,而对于像融云这样拥有核心竞争力的企业来说,这是一个最好的时代!

IT桔子专访融云CEO 韩迎:从 SDK 迈入通信中台,互联网通信云未来可期

科技创新IT桔子 发表了文章 • 0 个评论 • 43 次浏览 • 2020-06-16 18:18 • 来自相关话题

疫情「黑天鹅」冰冻了全国各行各业,尤其是像房产经纪这样的传统服务业,至今难以全面复工,VR 线上看房、直播看房成为了房产开发商和房产经纪公司的「自救」举措;而带看经纪人需要与观众在线实时互动,画面、声音需要实时低延迟地呈现给观众,这一方案背后离不开实时音视频技... ...查看全部

疫情「黑天鹅」冰冻了全国各行各业,尤其是像房产经纪这样的传统服务业,至今难以全面复工,VR 线上看房、直播看房成为了房产开发商和房产经纪公司的「自救」举措;而带看经纪人需要与观众在线实时互动,画面、声音需要实时低延迟地呈现给观众,这一方案背后离不开实时音视频技术等云服务的支持。

疫情期间,除产业外,一些政府公共管理机构也难以正常运作,比如法院开庭需要当事人出席,如今远程庭审解决方案只需法官、陪审员、原告/被告、辩护律师、亲友等人员在线即可开庭。系统支持多方实时音视频沟通,法官控制话筒权限(发言/禁言);此外,还可以录音录像,作为案件审理过程中的重要信息备份,该方案从流程和功能上都较高地还原了线下开庭情形。

以上是融云提供的 IM(即时通讯)及 RTC(实时音视频)技术服务的应用场景举例。

疫情催生新场景,通信云迎来新机遇
疫情正在加速全社会向线上转型,政府、企业都在积极拥抱数字化,学习、工作、生活全面在线化,政企员工「在家办公」,全国中小学生「在家上网课」,致使在线教育平台流量暴增。此外疫情也催生了新的应用场景,它不是技术人员凭空「拍脑袋」想出来的,而是客户在切实需求下提出的应急需求方案,包括在线庭审、在线评标、云论坛、云路演等,融云 CEO 韩迎坦承,「如果不是疫情,我自己怎么也想不到法院还可以在线庭审」。

另外,值得思考的是疫情将促使更多中小企业出于成本/效率因素,优化成本结构和用工模式,比如更多考虑采用远程办公、灵活用工、OA 系统的方式节省固定成本,因而远程沟通及协作带来的增量需求或将爆发。

不管是远程办公、在线教育、直播,很多涉及到人与人、人与物之间的交流协作场景下,IM 即时通讯及实时音视频是核心诉求之一,云通信成为技术架构上必备的模块。但是对于大部分企事业单位来讲自研成本过高:一方面小微企业无法投入足够的专业人员;另一方面,对于中等规模互联网企业来说,亿级以上高并发的通信处理具有较高的技术门槛,除专业能力外,时间成本也是一笔耗费。

作为专注于通信的 PaaS 云服务平台,融云正是要解决这样的痛点:通过底层的基础模块支持,帮助企业与开发者构建「云通信」的能力。


从云服务行业的市场结构来看:底层 IaaS 的市场是高度集中的,中国 70% 的市场份额被云巨头把持。而 PaaS 市场相对集中,当前中国通信云服务平台企业数量大大小小加起来不过几十家,整体市场规模预估在百亿级以上;据 iResearch 报告显示,在国内第三方即时通讯云服务市场,融云市占率多年维持第一,其作为头部平台有机会继续做大做强。SaaS 市场规模可达到千亿以上,但极度分散,IT 桔子数据显示,纯 SaaS 创业企业数量有 2239 家。

多年技术积累成核心壁垒,搭建通信中台解决方案
「融云本质上是做通信服务的」,韩迎称。

融云起家于 IM 业务,近年来大力发展实时音视频产品。无论通信内容载体如何变化,是文字、图片还是音频、视频——「通信最核心的诉求就是两个字,稳定」,韩迎解释道:「用户对延迟、丢包(接收不到信息)、通话质量差、掉线这类问题是零容忍的。」

然而,想要持续获得「稳定」的效果却不是那么容易。工信部近日表示,疫情期间我国互联网流量较去年底增长 50%,武汉增长率更达到了 60%—70%。那么如何保证亿级用户量、高并发通信的稳定性?这也是融云的技术壁垒所在,它主要源于融云的团队基础和日后深厚的技术积累。

一方面,融云创始团队成员出身中国移动旗下飞信和三星中国研究院 RCS,具备通信基因。

另一方面,技术与业务这 2 个「轮子」相辅相成,韩迎说,「技术的迭代是无止尽的,在公有云上,我们一直以来在全国乃至全球接入更多的节点,保证服务稳定性;有个词叫『业务不死,优化不止』,不管是后端服务端还是前端 SDK 的优化,大量可用的业务质量数据、用户日志可以帮助融云不断优化技术模型,提升用户体验。」

对于技术型服务商融云而言,服务科大讯飞、联想、大型保险公司等大客户所积累的技术经验和行业经验都是一种优势,它意味着机会成本低,以及更高效和稳定地交付;因而,技术积累成为公司不断进击的核心优势,也是融云甩掉其他创业企业,保持竞争优势的重要砝码。

此外,伴随着不同行业和领域内客户数量的增长,融云跟进市场需求,在公司业务高成长的同时优化产品,不断迭代应用场景;包括基于 IM 顺势推出实时音视频 RTC 能力。也是在服务客户的过程中,融云发现了一些共性化的需求,于是提出了「通信中台」的概念。

「通信中台」最大的价值是将融云的产品从「中间件」形态转变为标准化的解决方案,融云 CEO 韩迎直言,「原来融云所做的其实是很浅的 SDK 通信层,不涉及客户的业务,客户提供调用 SDK 来实现在线聊天、在线音频、在线视频的能力;现在融云把应用上的一些重复的共性需求抽象出来,将通信模块和功能模块打包组合成通信中台;这样可以节省客户的时间,融云多做了一点,客户就可以少做一点」。

韩迎将通信中台比作 aPaaS 的概念,相当于在 PaaS 层往上延伸,但又不同于 SaaS。通信中台对企业的好处是大大降低了开发难度,提高了开发效率。例如,在线教育场景中需要运用白板、屏幕共享,融云将这样的通用功能插件都集成在方案中,为企业搭建通信中台,极大地便利了企业和开发者们。

融云自诞生以来就聚焦 2B 业务,为超过 30 万款 APP 提供即时通讯和实时音视频云服务,因此在竞争中更具优势。据悉,融云 SDK 全球触达用户数量突破 45 亿,日消息峰值超 2218 亿条,在技术实力上与互联网巨头是同量级的。

在集成 IM 及 RTC 能力的办公系统应用场景中,融云旗下安信与企业微信、钉钉、飞书这类通用 SaaS 产品不同,可支持私有云部署方式及个性化定制,更好地满足企业客户打通原有业务系统的需求。


2019 年已完成 C 轮融资,争取 2 年内递交科创板申报材料
科创板自 2019 年中开板以来,成为国内科技创新企业青睐的融资通道,也成为一级市场投资机构新增的退出渠道。根据上交所数据,截止 2020 年 4 月 23 日,已申报科创板企业数量达到 252 家,109 家成功注册:其中计算机通信、软件和信息技术企业合计达到 47 家,占比最大;目前来看科创板企业上市日整体表现较好,金山办公 IPO 市值 231 亿元,UCloud IPO 市值 97 亿元。

据了解,融云于去年底完成数亿元 C 轮投资,投资方包括国投创业、东方证券旗下东证资本以及中经合资本。韩迎表示,融云正在准备下一轮融资,并已将科创板上市计划提上日程,争取 2022 年内递交申报材料。

综上所述,融云成立 6 年,盈利模式清晰,并且积累了稳定的 KA 客户,具有同行业内领先的技术优势;同时在政务通信云服务市场拥有一定的资源和市场壁垒;在产品上实行差异化竞争策略;在财务上,通信中台的发布将有效提升客单价,为公司带来更高的营收;这或将成为融云登陆国内资本市场的加分项。

此外,目前全球正遭受疫情影响,远程办公、视频会议成为常态;融云已经在全球设立了多个数据中心,具备服务全球企业的通信云网络和技术能力,尽管当前海外云主要服务「出海」的互联网企业的和中国跨国公司;但伴随着 5G 加快落地应用,以及未来的全球化布局,相信公司有更广阔的想象空间。

融云IM商用版冰点促销 助程序员的十二时辰躺赢

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

最近《长安十二时辰》网剧火爆了荧屏,各行业人的十二时辰被安排得明明白白的。比如,运营的十二时辰是@所有人发红包、@**不要在群里发广告、@**不要在群里发果照、@**不要在群里发小程序;街道办事处大妈的十二时辰是防止居民乱扔垃圾、防止游客乱扔垃圾、防止无人机乱... ...查看全部

最近《长安十二时辰》网剧火爆了荧屏,各行业人的十二时辰被安排得明明白白的。比如,运营的十二时辰是@所有人发红包、@**不要在群里发广告、@**不要在群里发果照、@**不要在群里发小程序;街道办事处大妈的十二时辰是防止居民乱扔垃圾、防止游客乱扔垃圾、防止无人机乱扔垃圾;甲方口中财务的十二时辰是休假了、出差了、失联了……

那么,程序员的十二个时辰是什么样子的?据小编暗访发现,程序员除了熬夜加班敲代码改bug外,最耗费时间的工作竟然是产品选型和价格对比。所有程序员都希望云服务商提供的产品质量稳定、安全可靠,价格最好是降至冰点瞬间戳中老板的high点,不再为价格对比伤神,躺赢获老板手动点赞。

近日,全球互联网通信云头部企业融云为切实满足广大程序员的诉求,开启“炎热夏,冰点价”的年中大促活动,让程序员的十二时辰不再为选型比价格而耗费精力。活动自2019年7月1日至8月31日,为期2个月的促销期,融云拿出IM商用版回馈新老用户。程序员们都知道,只要集成融云IM SDK,便可快速实现单群聊、私信、红包、图片、语音和小视频等通讯能力,缩短开发周期和开发成本,并有效提升用户粘性和活跃度,这一广受赞誉的IM即时通讯产品,可谓是程序员的十二时辰躺赢之必备装备。


图:融云冰点促销 500名额限时抢

融云安全可靠的支持 让程序员使用无忧

作为致力于服务广大开发者的全球互联网通信云公司——融云在安全性、可靠性和稳定性上都有不俗表现。小编暗查了今年的艾瑞《全球互联网通信云行业研究报告》,融云不仅再次入选成为报告中的典型案例,还被艾瑞报告重点分析,凭借为全球开发者及企业提供“IM+实时音视频”的互联网通信云能力,尤其是在IM上的技术优势与“全球互联网通信云”的前瞻布局,占据战略先发位置。

说到IM的技术优势,程序员们大可放心的是,融云是业内唯一承诺消息可靠性100%的厂商,率先承诺在海量用户并发的情况下消息不丢失、不重复、不乱序。目前,融云平台日活已超7000万,SDK触达用户数在全球累计突破38亿,无论是日活量还是用户数均处于全球领先位置。融云消息可靠性100%的承诺可以让开发者们使用无忧,酣眠不觉醒。

在安全性和稳定性上,融云一直为程序员提供可信赖的支持。其一,融云拥有自主知识产权的私有通信协议”EverSync”,基于拥有知识产权的连接加密技术,可以防止黑客中间人方式进行数据窃听,保障数据在传输过程中不可破解。其二,融云在全球设立了多数据中心,拥有3000多个加速点,覆盖全球所有国家及地区(233个),可为客户随时随地保障至少3个就近节点提供接入,有效解决客户跨地域、跨国家的“网络延迟”及“丢包”等通信稳定性问题。


融云诚意促销折扣 优惠只需要心算

此次年中大促,是按日活峰值范围应付的标准月费来折扣计费的,不同客户按照不同的日活峰值档位,只要预存半年以上,就会得到相应的折扣优惠。这种实实在在的打折,程序员们通过最基本的心算就可以得到答案。以日活峰值范围在2000至1万的用户为例,标准月费2000元,标准年费为24000元,2年预存7折优惠后为33600元。七折到九折的优惠,对应预存半年到两年的使用时间,这就是融云带给新老用户最实惠的价格,冰点价格一直爽,助力广大程序员清凉度夏日。

活动时间过半,开发者热情参与,融云IM商用版半年9折名额100个,已全部抢完;还剩余“1年8折名额200个”即将满额,“预存2年7折名额200个”亟需速抢,这波诚意促销简直是手快有手慢无的节奏。本次回馈新老用户的活动当月预存,下月1日即可享受优惠啦。程序员们奔走相告,火速预约和购买,即可畅享全年冰点价!这个火热的夏天,融云值得买!

【融云分析】如何保障 API 设计的稳定性

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

计算机行业有句名言 —— 计算机科学领域的任何问题,都可以通过增加一个间接的中间层来解决。当前的计算机领域,无论广度还是深度,已经没有一个人能完全掌握了。但是,通过各种中间层的组合使用,我们不需要了解其内部细节,也可以像搭积木一样,开发出各种有趣的服务和应用。... ...查看全部

计算机行业有句名言 —— 计算机科学领域的任何问题,都可以通过增加一个间接的中间层来解决。

当前的计算机领域,无论广度还是深度,已经没有一个人能完全掌握了。但是,通过各种中间层的组合使用,我们不需要了解其内部细节,也可以像搭积木一样,开发出各种有趣的服务和应用。
而各个中间层之所以能组合工作,正是因为大家都通过定义好的 API 交互和通信。每个模块在对外提供经过抽象 API 的同时,也需要使用其他模块的 API 作为自身运行的基础。

今天我们来聊聊融云在设计 API 过程保障稳定性的一些实践。

无处不在的 API
API(Application Programming Interface) 又称为应用编程接口。

而接口,本质可以理解为契约,一种约定。
计算机接口的概念起源于硬件。早期各家研发的各种元器件都不通用也没有标准,相互使用非常困难,于是大家约定了功能和规格,就产生了接口,后来蔓延到软件中。

接口蔓延到软件之后,又分为 ABI(Application Binary Interface) 和 API(Application Programming Interface) 。
前者主要约定了二进制的运行和访问的规则,后者则 专注于逻辑模块的交互。本文以下内容仅讨论开发者经常接触的 API。

很多人对 API 的印象只是包含一些函数的 Class 或 头文件。但 API 在我们生活中无处不在,只是我们有时并没有注意到。

比如,当我们在拨打电话时,手机和基站通信的整个系统是非常复杂的。

图片1

好在我们不需要了解内部的细节,仅需要把 11 位的电话号码传给“电话系统”的接口就可以,而隐藏的国家区号(如+86)可以理解为接口的默认参数。
这个高度抽象的 API 背后,隐藏了非常多的细节。借助上面的中间层理论,我们可以系统性地讨论设计一个 API 所需要考虑哪些内容。

图片2

模块对上层暴露的 API 如何被使用?

API 从使用的耦合方式上,可以分为两类:一种是通过协议调用,如调用 HTTP 接口;另一种是语言直接通过声明调用。
如设计 HTTP Restful API 时,并不需要关心使用者的操作系统、使用的编程语言、内存线程管理等,因此会比后者简单一些。

API 从使用者的规模和可控范围上,可以分为 LSUD(Larget Set of Unkown Developers) 和 SSKD(Small Set of Kown Developers) 两种。
前者一般都是公网开放的云服务,任何开发者都可以使用,无法提前预知以何种姿势被使用,版本也不可控制。融云提供的通信云就是这种 API。
后者用户群有限,一般都在同一家公司或团队内。比如前段时间比较火的组件化,即对内提供的模块化 API,使用范围和方式均可控,在更新时一般不用太纠结向后兼容。

API 的第一受众是人,然后才是机器,所以“可理解性”在设计时需要优先考虑。
而良好的 API 文档、简单扼要的 Demo、关键的 log,可以提升 API 使用者的体验。

API 所属模块对下层有什么依赖?

API 所属模块都运行在一定的地址空间中。而其中的环境变量、加载库、内存和线程模型、系统和语言特性都需要考虑。

API 所属模块的内部实现对其他层有什么影响?

一般而言,设计良好的 API 在使用时,并不需要理解其内部实现。但如果能了解其内部架构并辅助关键 log,有助于提升使用 API 的效率。
并且模块的内部实现,有时也会影响到 API 设计的风格。
如一个强依赖 IO 的接口,可能需要使用异步的方式。大量异步的方式,就衍生出了 RxJava 等框架。

向后兼容
因为 API 如此重要,涉及的范围又如此广泛,广大开发者对 API 的向后兼容可以说要求非常高。
毕竟谁也不想在开发过程中,频繁的更新接口和代码,想想《 swift 从入门到精通到再次入门到再再次入门》的惨案就心有余悸。

我们不仅问,为什么很多公司或者项目都无法向后兼容,仅仅是投入不够或不够重视,还是说 100% 的向后兼容实际就是不可能的?

假设设计是理想和经过论证的,正如一个完美的圆圈。
设计是要落实到编码中的,而编码的过程中总是不可避免的引入一些 bug,而带着 bug 的某个版本实现,其实正如一个 Amoeba 变形虫,形态是不固定的。而随着版本不断演进,不可避免会产生一定的差异。

第一个版本实现:

图片3

第二个版本实现:

图片4

所以说 100% 向后兼容本身就是不可能的。

因此,大家平时在谈论 API 稳定性时,其实默认是可以包含一定程度变更的。

但由于 API 涉及的范围太广泛,保障向后兼容都需要极大代价。
比如 Linux 就希望快速迭代,完全不保证 API 的稳定性。针对这个问题,Linux 还特意写了 stable-api-nonsense 文档。
有兴趣的可以点击阅读:stable-api-nonsense.rst

渐进式改进
所以说,保障 API 的稳定性会面临很多挑战,比如:
* 业务形态还不稳定,还在高速发展
* 业务和 API 历史包袱较重
* 多个平台和语言的特性不一致
* 用户群和使用方式不明确

我们回顾一下正常的开发流程,看看是否能通过一些指标和工具,改善 API 的稳定性,主要涉及:需求、设计、编码、Review、测试、发布、反馈等步骤。

※需求

普通的产品开发,在启动的时候,用户需求都比较明确,但对于 LSUD 的云服务而言,无法提前预知用户群都有哪些,以及用户在他的产品中如何使用 API。
这容易造成,没有明确的用户需求,API 就不好进行设计和迭代,没有设计就没有用户,需求更无从谈起。这是一个鸡生蛋、蛋生鸡的问题。

建议可以在 API 发布之前,内部先针对典型的使用场景,设计几个完整的 Demo,验证 API 的设计和使用是否合理。
需要注意的是,Demo 需要有完整应用场景,达到上架地步,如果能内部使用, Eating your own dog food 最好,过于简单的 Demo 无法提前暴露 API 的使用问题。

Demo 的开发人员最好与 API 的设计者有所区分,避免思维固化,更多内容大家可以参照 Rust 语言开发在自举过程中的一些实践。

※设计

在设计 API 的时候,有很多需要注意的点和普通开发不太一样。

普通开发,快速实现功能始终被放在第一位。比如大家会用一些敏捷开发的方式,优先实现功能再快速迭代等。
但 API 设计时,接口无法频繁变更,所以首先需要考虑的是“少”,少即是多。

l 每个 API 做的事情要少

一个接口只做一件事,把这个事情做好就足够了。
需要避免为了讨好某个场景,在一个 API 上进行复杂的组合逻辑,提供一个类似语法糖的接口。否则,场景的业务自身在演进时,很难保证 API 的行为不变。
如果需要支持多种业务,可以考虑将 API 分层,比如融云客户端的 API 会分为下面几层。

图片5

举个例子,融云考虑通用性,基于订阅分发的模型,抽象了 RTCLib,客户端能处理媒体的任意流,非常的灵活,但是对于用户而言开发代价可能高些,要思考和做的工作比较多。
考虑到大量的用户,其实需要的是音视频通话的业务,基于 RTCLib,融云分装了不带 UI 的 CallLib 以及集成了 UI 的 CallKit。
如果一个用户,需求和微信的音视频通话类似,可以集成带 UI 界面的 CallKit,开发效率会非常高;
如果用户对通话音视频通话 UI 的交互有大量需求,可以基于 CallLib 进行开发,对 UI 可以进行各种定制。

l 暴露的信息要少

成熟的 API 设计者都会尽可能的隐藏内部实现细节。
比如字段不应该直接暴露而是通过 Getter/Setter 提供,不需要的类、方法、字段都应该隐藏,都已经成为各个语言的基础要求,在此就不细述了。
但容易被忽略的一点需要提醒大家,应尽量隐藏技术栈的信息。
比如:API http://api.example.com/cgi-bin/get_user.php?user=100,就明显混入了很多无用的信息,并且以后技术切换升级想维持 API 稳定非常麻烦。

l 行为扩散要少

在语言直接调用的 API 中,需要避免基础接口通过继承导致行为扩散。
在普通的编码过程中,抽象类和继承都是面向对象的强大武器。但是对于 API,更建议通过组合使用。
比如一个管理生命周期的类,如果被继承,子类有些行为就有可能被修改而导致出错。这时候建议使用 Interface + 工厂的方法提供实例。
由于 Java 8 之前 interface 没有 default 实现,为了避免增加功能需要频繁修改接口,可以使用 final class。
Objetive-C 则可以使用 __attribute__((objc_subclassing_restricted)) 和 __attribute__((objc_requires_super) 控制子类继承行为。

l 画风切换要少

API 命名要做到多个平台的业务命名统一,与每个平台的风格统一。
这点 HTTP 的接口要简单一些,只需要选定一种风格即可,Restful 或者 GraphQL 或者自己定义。
语言调用的 API 命名,建议首先遵循平台的风格,然后再是参考语言标准,最后才考虑团队的风格。
比如:iOS 平台的 API 开发,需要首先参照 iOS 的命名风格,did 和 will 之类的时态就非常有特色。
命名上细节较多,词汇、时态、单复数、介词、⼤小写、同步异步风格等都需要考量,需要长时间的积累。

l 理解成本要少

一般 API 每个接口都会有相应的注释说明,但是值得注意的是,大部分开发者并不看注释。
大部分开发者对接口的了解,都仅源于 IDE 的补全和提醒。一个接口看着像就直接用,不行再换一个试试,这其实是一种经验式编程的方式。
也就意味着接口命名需要提高可理解性。有一个办法可以验证,将接口的所有注释抹掉,使用者能否非常直接的看懂每个接口的含义。如果很困难,则需要改进。

API 设计还有一处和普通开发不太一致。普通开发设计好架构即可,每个模块的开发可能是同一个人,接口并不需要在设计时确定下来。
但是 API 的设计阶段,需要进行 Review 并直接确定接口的设计,以保证多端在开发时遵循完全一直的规则。

※编码

在 API 的编码过程中,有以下几点需要注意。

在 API 中,预定义好版本号。
这个主要是针对 HTTP API,如:http://api.example.com/v1/users/12345?fields=name,age。 如果目前仅有一个版本,也可以暂时不加,第二版时再区分。

注意 API 版本检查。
当分层提供多种 API 时,每层 API 需要在启动时,先校验一下版本号,避免不匹配的情况。
比如在以下 Java 代码中,大家可能觉得判断版本号相等的代码非常奇怪,应该永远是 true 才对。

图片6

但是抽象类和实现类出现在不同的分层模块中,并且实现类先编译,抽象类版本更新后再编译,就会出现不一致的情况。有很多语言或平台能提供类似的方式来确定版本。

提供规范性的 log 输出。
普通开发的log,主要用于自己定位问题。但是 API 在编码时,最好针对性的添加一些 log,有利于 API 的使用者理解并简单排查问题。
但出于性能考虑,需要定义好 log 的级别并可以调整。

注意废弃与迁移。
当一个以前设计的 API 不再符合要求或者有重大问题时,我们可以对外标记成已废弃,并在注释中建议使用者迁移到另一个接口。
如果是类似的被废弃接口,内部编码时最好能使用新的接口来实现,以降低向后兼容的维护成本。
HTTP 的 API,需要预定义好迁移的错误码,比如在 HTTP 规范中,可以使用 410 Gone 说明已经不再支持某个接口。

※Review

API 的 Review 基于普通开发的 Code Review。
如果基础的 Code Review 都没有做好,肯定无法保障 API 的质量和稳定性。

可以通过一些工具,为 API 的 Review 提供一些参考报告。
比如可以使用 SonarLint 分析代码复杂度,如果接口层的代码复杂度较高,会是一个危险的信号。
还可以借助 Java 反射、Clang 语法分析,获取当前的 API 接口列表,生成接口变更报告,也有利于减少无用接口的暴露。
另外,自动化工具生成的接口文档也是 Review 重要的一环。

※测试

在测试环节,我们可以通过 unit test 来关注 API 的稳定性。
与敏捷开发经常修改 test case 不同,API 的 test case 基本代表了接口的稳定性。所以在修改旧 case 时需要特别明确,是 case 自身的 bug 还是接口行为发生了变更。

※发布

我们可以通过区分 dev 和 stable 版本,为不同阶段的开发者提供更好的体验。

dev 版本包含最新的功能,但是 API 接口有变更风险。stable 版本 API 稳定,但功能不一定是最新的。
如果开发者还在开发过程中,可以选用最新的 dev 版本,基于最新 API 开发。
如果应用已经上线,可以选择升级直接到最新的 stable 版本。

※反馈

由于前面提到的,云服务的 API 比较难确定用户群和用户的使用方式。
可以参考 APM(Application Performance Management) 的方式,记录热点 API 使用情况,为后续的优化提供数据。

总结
上面的改进,让保障 API 的稳定性变得更容易。
下面以融云 IMLib iOS SDK 2.0 版本演进为例,历尽 2015至 2019 四年时间,从 2.2.5 到 2.9.16 共 98 个版本。
API 接口数量翻了一番,考虑到接口更内聚,功能大约增加了 3 倍。

图片7

但是需要用户迁移的接口非常少,即使迁移时开发成本都非常低。

图片8

图片9

融云实时音视频落地各应用场景 以 RTC+IM 双重能力服务开发者

WebRTC融云那些事 发表了文章 • 0 个评论 • 46 次浏览 • 2020-06-16 18:09 • 来自相关话题

疫情之下,在线教育、娱乐社交、电商直播等领域逆势增长,也带动了开发者们对于 IM 和 RTC 能力的需求热潮。然而对开发者来说,分别选择不同 IM 和 RTC 厂商实现通信场景,不仅降低开发效率,还会大幅增加产品上线后的运营和服务成本。为解决部分开发者的实际需... ...查看全部

疫情之下,在线教育、娱乐社交、电商直播等领域逆势增长,也带动了开发者们对于 IM 和 RTC 能力的需求热潮。然而对开发者来说,分别选择不同 IM 和 RTC 厂商实现通信场景,不仅降低开发效率,还会大幅增加产品上线后的运营和服务成本。

为解决部分开发者的实际需要,融云适时升级了实时音视频产品,并推出了“IM 即时通讯+实时音视频+推送”一体化解决方案,就是要“以一套 SDK 解决所有通信场景”,满足多场景下的高品质通信的需求,成为下一代 RTC 的创领者。

在线教育场景的 RTC 应用

在线教育中,由于不同学生群体的需求不同,催生了丰富的在线教学模式,融云实时音视频可以支持互动小班课、一对一辅导、大型互动直播课、双师课堂、音乐教学等全场景在线教学模式。

小班互动课和一对一辅导场景,重点需要保障师生上课质量体验,课堂稳定流畅不卡顿,目前融云实时音视频可以做到全球端到端延时小于 400ms,最低延迟 66ms,满足超低延时需求。同时通过融云实时音视频服务可以灵活地控制音视频流的订阅和发布,让教师端可以任意选择单个或多个学生进行课堂答疑互动;此外课堂白板作为老师上课、讲解要点的重要工具,融云可以提供互动白板及高清屏幕共享,满足师生互动的需求。


融云满足一对一辅导场景的强互动需求
大型直播互动课程和双师课堂中,主要是保证 QPS 下仍有稳定的承载能力和低延时的互动体验。融云首先采用去中心化多点分布式的全球架构,无需对接 CDN,可支持不限量学生同时在线,支持千万级并发态;其次,利用全球加速网络,多端用户实现就近节点接入,直接通过专线级联的方式来减少网络传输造成的延迟,实现师生音视频远程连麦互动的低延时体验。


融云支持无成员上限的互动直播聊天室
在较为特殊的音乐教学场景,尤其需要高清音乐模式,针对器乐的高频音段和弱音音阶进行优化处理,融云在音频方面采用全声道采样、立体声支持,支持最高音频采样率 48KHz,可真实还原对端声音,高度还原音乐细节。此外,融云实时音视频还提供隐身监课功能,课程监督者可隐身进入课程房间,实时了解课堂情况,能够有效帮助平台提升课程品质,提高用户满意度。

泛娱乐社交场景的 RTC 应用

泛娱乐社交中,融云可提供包括音视频连麦、观众直播、麦位管理、互动聊天室在内的一整套解决方案,适用于泛娱乐直播、语音聊天室、相亲交友、音视频通话等多场景。

泛娱乐直播场景中,融云提供的低延迟互动直播是基于RTC技术做的直播推流,它不依赖 CDN 推流,主播观众间延迟在 300ms 左右,主要服务一人直播多人互动的场景,比如直播带货、直播连麦、语聊、游戏社交等,为主播端到观众端延迟无感知的实时互动提供高质量保障。与 RTC 技术不同的,另一种实现音视频能力的 CDN 技术,往往直播延时在 3-5 秒。

在泛娱乐直播中经常会出现多麦位直播场景,即多人直播互动场景,融云可以提供麦位双向音视频通话能力,观众可以清晰收看合流直播;同时还可以通过融云 IM 通道实现上麦、下麦、抢麦、轮麦、抱麦、禁麦等多种麦位管理方式,让房主更好地管理直播间。此外,融云通过自定义聊天室属性,提供 Key、Value 多种存储方式,实时记录客户端与服务器端用户麦位状态,实时更新,确保多麦位直播的流畅无卡顿。


融云语音聊天室解决方案
近期,全球音频社交类 App 开发增多,语音聊天室这类场景被关注。融云为开发者们提供了“多路音视频互动”技术,纯音频可以做到支持 32 路连麦互动,同时提供多种控麦能力的“麦序管理”功能,满足开发者快速构建多人语聊场景的需求。

更多领域中的 RTC 应用

智能硬件领域,在智能手表、智能音箱、VR 眼镜、智能门禁中,融云均可帮助开发者实现端到端的一对一/多方音视频通话;尤其在智能音箱场景中,手机端可以远程监控音箱端,如遇紧急情况,可随时开启服务器端录像功能。

在地产服务中,融云可以帮助客户实现 VR 直播带看,利用 IM 信令通道实现多端 VR 同步看房;利用实时音视频技术,让用户与客户经理实时语音连线,实现客户经理远程 VR 带看并同步讲解。

在线医疗的远程会诊,融云可帮助开发者实现多方会诊、病历上传、病情讨论、后台录制等功能;在线问诊中,融云还可提供互动白板、时长计费、IM沟通与高清多方音视频等。

此外,企业通信的协同办公、视频会议;金融服务的远程面签、视频客服等,凡涉及互联网通信领域,皆是融云 RTC+IM 双重能力所覆盖的范畴。

结语

在实际应用场景中,IM 和 RTC 能力是密不可分的。有 RTC 需求的几乎 100% 都有IM 需求。融云 RTC 调用了 IM 信令通道,在稳定性、可靠性和通信接口协调性上,都能确保性能质量更佳,以 RTC+IM 双重能力为开发者提供更好的服务。在当前更为强调互动性的移动互联网新时代,通过融云“IM+RTC+推送”一体化解决方案,可以帮助开发者更加快速地构建低延迟、高品质的应用通信能力,实现音视频通信的全行业、全场景覆盖。

SDK