野火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相关文档,包含设计、概念、开发、使用说明,在线查看 |
野火Flutter插件,包含即时通讯插件和实时音视频插件。
master分支为新版本,之前旧版本在v1分支。请尽快升级到新版本。
进入到项目工程目录下,依次执行下述命令:
cd example && flutter packages get && cd ..
cd example/ios/ && pod install && cd ..
(仅iOS平台需要)cd example && flutter run
pubspec.yaml
文件依赖配置中,添加如下内容。其中 ${path_to_imclient}
和 ${path_to_imclient}
为 本项目的imclient
和rtckit
目录。dependencies:
flutter:
sdk: flutter
imclient:
path: ${path_to_imclient}
rtckit:
path: ${path_to_rtckit}
flutter packages get
命令。cd example/ios/ && pod install
命令。AndroidManifest.xml
入口activity
的配置里面添加如下intent-filter
<!-- 音视频通话,需要加入下面的 intent-filter-->
<intent-filter>
<action android:name="${applicationId}.main" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
必须对野火IM有一定认识后才可以顺利使用,建议做到以下几点:
FlutterImclient.dart
文件,大概130+个接口,根据接口名称和简单的注释还有参数,了解到具体的功能,这样后面使用时也比较好找。初始化在应用启动时唯一调用一次即可,参数是各种事件的回调。
FlutterImclient.init(...);
连接需要IM Token
,必须在应用服务进行获取token
,获取token
时必须使用从SDK内获取到的clientId
,否则会连接不上。
var clientId = await FlutterImclient.clientId;
// 调用应用服务去IM服务获取token,需要使用从SDK内获取的clientId。得到token后调用connect函数。
FlutterImclient.connect(Config.IM_Host, userId, token);
展示用户的所有会话的列表使用。
FlutterImclient.getConversationInfos([ConversationType.Single, ConversationType.Group, ConversationType.Channel], [0]);
从指定会话获取消息,可以指定消息其实id和获取条目数,实际使用时可以滚动加载。
FlutterImclient.getMessages(conversation, 0, 10);
构造消息内容,把消息发送到指定会话去。
FlutterImclient.sendMessage(conversation, txtMsgContent);
refresh参数表明是否强制从服务器刷新用户信息,函数会返回本地数据库存储用户信息,如果不存在将返回null。refresh为true或者用户信息不存在时会从服务器更新用户信息,如果信息有变化,会通过用户信息变更回调通知。注意仅当单聊会话和用户详情时强制刷新,避免反复refresh调用出现死循环。
getUserInfo(userId, refresh:false);
获取群组信息,具有可选参数refresh,refresh的使用方法请参考获取用户信息。
getGroupInfo(groupId, refresh:false);
实现推送需要客户端和服务端研发配合实现,首先需要掌握野火推送的流程才可以,关于野火推送的知识,在野火推送服务的项目说明上有详细描述,请客户端研发和服务端研发详细阅读。
目前有多种推送方案可选,可以选取手机厂商的推送,也可以选取第三方推送。需要根据您的需求来选取适合您的方案。
客户端集成选取的推送平台的flutter插件,每个推送插件注册成功后,都会返回一个注册ID(或者是其他名称,能够唯一代表当前推送设备的ID),然后调用imclient
的下面接口
Imclient.setDeviceToken(pushType, deviceToken);
在iOS平台,pushType是无效参数,可以为任意值;在Android平台pushType为选取的推送平台。
下载野火推送服务,在此基础上进行二次开发。推送服务会收到IM服务的推送请求,推送请求中有这个pushType和deviceToken及要推送的内容,推送服务根据这些信息找到对应厂商进行推送。
Sign in to post a comment
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
Repository Comments ( 0 )