Skip to content
wildfirechatPublic

About

野火IM鸿蒙原生客户端,适配手机和平板

Topics

Resources

Stars

39 stars

Watchers

1 watching

Forks

Repository files navigation

野火IM鸿蒙原生平台,支持手机和 Pad

野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。

主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。详细情况请参考在线文档。

主要包括一下项目:

GitHub仓库地址(主站) 码云仓库地址(镜像) 说明 备注
im-server im-server IM Server
android-chat android-chat 野火IM Android SDK源码和App源码 可以很方便地进行二次开发,或集成到现有应用当中
ios-chat ios-chat 野火IM iOS SDK源码和App源码 可以很方便地进行二次开发,或集成到现有应用当中
pc-chat pc-chat 基于Electron开发的PC 端
web-chat web-chat 野火IM Web 端, 体验地址
wx-chat wx-chat 小程序平台的Demo(支持微信、百度、阿里、字节、QQ 等小程序平台)
app server app server 应用服务端
robot_server robot_server 机器人服务端
push_server push_server 推送服务器
docs docs 野火IM相关文档,包含设计、概念、开发、使用说明,在线查看

野火IM 鸿蒙原生平台 Demo,演示如何将野火IM的能力集成到鸿蒙原生平台中。

前置说明

  1. 本项目所使用的libmarswrapper.so(打包在client/libs/marswrapper.har中)是需要付费的,价格请参考费用详情
  2. libmarswrapper.so支持试用,具体请看试用说明
  3. 本项目默认只能连接到官方服务,购买或申请试用之后,替换client/libs/marswrapper.har,即可连到自行部署的服务。替换方法见client/libs/README.md

环境依赖

鸿蒙集成开发环境DevEco-Studio。可以创建和编译鸿蒙原生项目。

开发

使用DevEco-Studio打开本项目,运行之前海需要修改一下项目配置:

  1. 打开项目运行配置
  2. 打开保持应用数据
  3. 运行

常见问题

  1. 找不到@wfc/avengineki 或 @wfc/client,导致有非常多的编译错误。 解决办法:到项目根目录下执行ohpm install。
  2. 替换marswrapper.har不生效。 原因:该依赖是file:本地依赖且版本号固定为1.0.0,ohpm 会把 har 安装到oh_modules/.ohpm缓存中,仅替换文件不会触发重新安装。 解决办法:删除各模块的oh_modules目录和根目录的oh_modules/.ohpm缓存,重新执行ohpm install(或在 DevEco Studio 中执行 File -> Sync and Refresh Project),再重新编译。详细步骤见client/libs/README.md。

注意事项

  1. 野火IM要求客户端和服务器之间的时间差不能太大,有时模拟器的时间会不准,导致无法正常工作。所以必须确保手机或者模拟器时间准确。

自签证书说明

自建服务(IM 服务、应用服务、组织通讯录、对象存储等)使用自签名证书时,按以下步骤配置:

  1. 放置证书:将证书放到chat/src/main/resources/resfile目录,可以放多个,文件名不限,后缀为.crt、.pem或.cer,如server.crt

    • 放 CA 证书或服务端证书本身均可,只放证书,不要放私钥
    • 必须是 PEM 格式,即以-----BEGIN CERTIFICATE-----开头的文本文件。DER 格式的证书请先转换:openssl x509 -inform der -in server.der -out server.crt
    • 上层网络请求(应用服务、组织通讯录、投票、接龙、归档、语音识别、文件上传下载、工作台等 WebView)启动时自动加载这个目录下的证书(见EntryAbility中的selfSignedCertUtils.init),没有证书时全部使用系统默认配置
    • Image、Video组件自己加载网络资源时不认应用内置的证书(network_config.json的trust-anchors对它们也不生效),头像、聊天图片、表情、预览中的图片和视频、朋友圈、收藏等处已改为先下载到缓存目录再显示,即Image(trustedMediaSrc(url))。新增显示网络图片、视频的地方也要这样处理
  2. 协议栈:IM 连接要使用 TLS 时,需要打开EntryAbility#onCreate中被注释的wfc.UseTls代码,仅 2026.9.11 之后的 IM 服务支持。证书路径用this.context.resourceDir + '/证书文件名'

  3. 以 SDK 方式集成时:调用selfSignedCertUtils.init(context, 证书目录)加载证书,自己创建的网络请求通过selfSignedCertUtils信任这些证书:

    • Network Kit 的http、webSocket:请求参数中带上caPath: selfSignedCertUtils.getCaPath()
    • RCP:security.remoteValidation设置为{ filePath: selfSignedCertUtils.getCaPath() }
    • 系统上传下载服务(request.uploadFile、request.downloadFile)不认应用内置的证书,下载改用selfSignedCertUtils.download,参考mediaHelper.ets中的downloadMedia。SDK 的大文件上传已经处理(使用 RCP,见下面的注意事项)
    • Web 组件:在onSslErrorEventReceive中,selfSignedCertUtils.isTrustedBySelfSignedCerts(event.certChainData)返回true时才调用handler.handleConfirm(),否则调用handler.handleCancel(),参考WfcWebView.ets
    • Image、Video组件:Image(trustedMediaSrc(url)),有自签名证书时先下载再显示,下载完成后组件自动刷新
    • 自己用selfSignedCertUtils.download下载前,先用selfSignedCertUtils.canDownload()判断,开源鸿蒙上返回false
  4. 注意事项

    • getCaPath()返回的证书文件中同时包含系统预置的 CA 证书和自签名证书,公网 CA 签发的证书不受影响
    • 和 Android 不同,鸿蒙上的网络请求不会跳过域名校验,签发证书时必须把服务的域名和 IP 都写进 subjectAltName,否则会校验失败
    • Web 组件和 Android 一样不校验域名,且只检查服务端证书本身,所以只支持服务端证书就是resfile中的证书,或者由其直接签发的情况;需要 API 15 及以上,更低版本的设备按默认处理(取消加载)
    • SDK(client模块)只使用开源鸿蒙也有的接口。自签证书下的文件上传下载、图片和视频加载需要用到 HarmonyOS 独有的 RCP(Remote Communication Kit),运行时按需加载;开源鸿蒙上这些仍走系统上传下载服务和组件自己的加载,不支持自签证书

截图

License

  1. Under the Creative Commons Attribution-NoDerivs 3.0 Unported license. See the LICENSE file for details.

About

野火IM鸿蒙原生客户端,适配手机和平板

Topics

Resources

Stars

39 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages