0 Star 0 Fork 20

Jamno / wfc_flutter_plugins

forked from 野火IM / wfc_flutter_plugins 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

野火IM解决方案

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

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

主要包括一下项目:

GitHub仓库地址(主站) 码云仓库地址(镜像) 说明 备注
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 Web平台的Demo, 体验地址
wx-chat wx-chat 微信小程序平台的Demo
server server IM server
app server app server 应用服务端
robot_server robot_server 机器人服务端
push_server push_server 推送服务器
docs docs 野火IM相关文档,包含设计、概念、开发、使用说明,在线查看

WFC Flutter Plugins

野火Flutter插件,包含即时通讯插件和实时音视频插件。

V1版本

master分支为新版本,之前旧版本在v1分支。请尽快升级到新版本。

运行

进入到项目工程目录下,依次执行下述命令:

  1. cd example && flutter packages get && cd ..
  2. cd example/ios/ && pod install && cd ..(仅iOS平台需要)
  3. cd example && flutter run

集成到flutter应用

  1. 在项目的pubspec.yaml文件依赖配置中,添加如下内容。其中 ${path_to_imclient}${path_to_imclient} 为 本项目的imclientrtckit目录。
dependencies:
  flutter:
    sdk: flutter

  imclient:
    path: ${path_to_imclient}
  rtckit:
    path: ${path_to_rtckit}
  1. 项目目录下执行 flutter packages get 命令。
  2. 如果有iOS平台,执行 cd example/ios/ && pod install 命令。
  3. 分别运行iOS平台和Android平台。
  4. Android 平台,集成音视频的时候,需要在AndroidManifest.xml入口activity的配置里面添加如下intent-filter
<!-- 音视频通话,需要加入下面的 intent-filter-->
            <intent-filter>
                <action android:name="${applicationId}.main" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

SDK的使用

基础知识

必须对野火IM有一定认识后才可以顺利使用,建议做到以下几点:

  1. 仔细阅读野火基础知识,建议最好把文档都看一遍,仔细阅读一遍绝对会物超所值的。
  2. 仔细查看插件的接口文件Imclient.dart文件,大概130+个接口,根据接口名称和简单的注释还有参数,了解到具体的功能,这样后面使用时也比较好找。
  3. 查看插件带的demo应用。demo应用十分不完善,但也基本能反应出使用的方法,如果您有时间可以给我们提PR来完善这个demo。
  4. 如果您有原生客户端开发经验,可以查看对于客户端的demo,原生客户端demo比较完善。

初始化

初始化在应用启动时唯一调用一次即可,参数是各种事件的回调。

Imclient.init(...);

连接

连接需要IM Token,必须在应用服务进行获取token,获取token时必须使用从SDK内获取到的clientId,否则会连接不上。

var clientId = await Imclient.clientId;
// 调用应用服务去IM服务获取token,需要使用从SDK内获取的clientId。得到token后调用connect函数。
Imclient.connect(Config.IM_Host, userId, token);

获取会话列表

展示用户的所有会话的列表使用。

Imclient.getConversationInfos([ConversationType.Single, ConversationType.Group, ConversationType.Channel], [0]);

获取消息

从指定会话获取消息,可以指定消息其实id和获取条目数,实际使用时可以滚动加载。

Imclient.getMessages(conversation, 0, 10);

发送消息

构造消息内容,把消息发送到指定会话去。

Imclient.sendMessage(conversation, txtMsgContent);

获取用户信息

refresh参数表明是否强制从服务器刷新用户信息,函数会返回本地数据库存储用户信息,如果不存在将返回null。refresh为true或者用户信息不存在时会从服务器更新用户信息,如果信息有变化,会通过用户信息变更回调通知。注意仅当单聊会话和用户详情时强制刷新,避免反复refresh调用出现死循环。

Imclient.getUserInfo(userId, refresh:false);

获取群组信息

获取群组信息,具有可选参数refresh,refresh的使用方法请参考获取用户信息。

Imclient.getGroupInfo(groupId, refresh:false);

发起单人音视频通话

Rtckit.startSingleCall(userid, audioOnly);

发起多人音视频通话

Rtckit.startMultiCall(groupid, participants, audioOnly);

推送

1 野火推送基础知识

实现推送需要客户端和服务端研发配合实现,首先需要掌握野火推送的流程才可以,关于野火推送的知识,在野火推送服务的项目说明上有详细描述,请客户端研发和服务端研发详细阅读。

2 推送平台的选取

目前有多种推送方案可选,可以选取手机厂商的推送,也可以选取第三方推送。需要根据您的需求来选取适合您的方案。

3 客户端的集成

客户端集成选取的推送平台的flutter插件,每个推送插件注册成功后,都会返回一个注册ID(或者是其他名称,能够唯一代表当前推送设备的ID),然后调用imclient的下面接口

Imclient.setDeviceToken(pushType, deviceToken);

在iOS平台,pushType是无效参数,可以为任意值;在Android平台pushType为选取的推送平台。

4 服务端推送开发

下载野火推送服务,在此基础上进行二次开发。推送服务会收到IM服务的推送请求,推送请求中有这个pushType和deviceToken及要推送的内容,推送服务根据这些信息找到对应厂商进行推送。

5 使用个推

实际上可以选用任意一个或者多个推送服务商,这里给出一个使用个推的介绍。 对接个推

一些知识要点

  1. 获取token的过程一定是先从客户端获取clientId,然后应用服务使用clientId和userId参数获取token,返回给当前客户端使用。即token是和客户端绑定的,该token仅能在当前客户端使用。
  2. 获取用户/群组/频道信息时,都是直接返回本地数据,如果本地没有会返回null且去服务器更新,更新成功后会有eventbus通知。编写UI代码时需要考虑到获取信息为空的可能,并做好监听,以便信息更新能更新UI。
  3. 展示消息是分批获取的,先获取最新的一部分,然后列表滚动式再加载下一批,以此类推。

空文件

简介

野火flutter插件,支持Android端和iOS端,包含即时通讯和实时音视频功能 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/jamno/wfc_flutter_plugins.git
git@gitee.com:jamno/wfc_flutter_plugins.git
jamno
wfc_flutter_plugins
wfc_flutter_plugins
master

搜索帮助