同步操作将从 野火IM/wfc_flutter_plugins 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
野火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相关文档,包含设计、概念、开发、使用说明,在线查看 |
野火IM Flutter插件。
进入到项目工程目录下,依次执行下述命令:
flutter packages get
cd example/ios/ && pod install
(仅iOS平台需要)flutter run
pubspec.yaml
文件依赖配置中,添加如下内容。其中 ${path_to_flutter_imclient}
为 Flutter_IMClient
项目目录。dependencies:
flutter:
sdk: flutter
flutter_imclient:
path: ${path_to_flutter_imclient}
项目目录下执行 flutter packages get
命令。
如果有iOS平台,执行 cd example/ios/ && pod install
命令。
如果有Android平台,使用 android studio
打开项目的android目录:
4.1 选择菜单File
->New
->New Module
->选择Import .JAR/.AAR Package
->选择 Flutter_IMClient
项目下example/android/mars-release-core/mars-release-core.aar
文件,最后选择导入。
4.2 选择菜单File
->New
->Import Module
->选择 Flutter_IMClient
项目下example/android/push
目录,选择导入。
4.3 修改您的Android项目的根build.gradle
文件,找到下面位置,加上华为仓库的地址。至此客户端可以编译通过。
allprojects {
repositories {
google()
jcenter()
//添加华为仓库地址
maven {
url "http://developer.huawei.com/repo/"
}
}
}
build.gradle
文件,修改minSdkVersion
为19defaultConfig {
...
minSdkVersion 19
...
}
分别运行iOS平台和Android平台。
必须对野火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_IMClient
项目下example/android/app/src/main/java/cn/wildfirechat/flutter_imclient_example/MainActivity.java
文件中注释指定的内容拷贝到您的项目这个文件中对应位置。build.gradle
文件,找到如下位置。需要去对应手机厂商申请账户和开通推送服务,并分别替换如下各个参数。 manifestPlaceholders = [
MI_APP_ID : "2882303761517722456",
MI_APP_KEY : "5731772292456",
HMS_APP_ID : "100221325",
MEIZU_APP_ID : "113616",
MEIZU_APP_KEY: "fcd886f51c144b45b87a67a28e2934d1",
VIVO_APP_ID : "12918",
VIVO_APP_KEY : "c42feb05-de6c-427d-af55-4f902d9e0a75",
OPPO_APP_KEY : "16c6afe503b24259928e082ef01a6bf2",
OPPO_APP_SECRET : "16c6afe503b24259928e082ef01a6bf2"
]
FlutterImclientPlugin.java
文件中,找到如下函数。如果能够被回调到就是客户端集成成功。注意是需要每个手机厂商的手机都要测试一遍。public void onPushToken(int pushType, String pushToken) {
...
}
Signing&Capabilities
标签页,点击+Capability
按钮,选中Push Notification
。如下图所示:
example/ios/Runner/AppDelegate.m
文件,把文件中注释标注的代码块拷贝到目标工程中的同名文件对应位置。AppDelegate.m
中下面代码处加上断点,点击允许推送,检测是否走到断点位置,如果走到说明集成客户端成功。[cls performSelector:@selector(setDeviceToken:) withObject:token];
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。