Giter Site home page Giter Site logo

uni-chat's Introduction

野火UniApp平台Demo

支持Android和iOS端,使用了野火UniApp原生插件(在UniApp的插件市场搜索“野火IM原生插件”)。

关于分支的重要说明

  1. master:基于Vue 3开发,是未来的开发重心
  2. vue2:基于Vue 2开发,进入维护模式,不再开发新功能,鉴于Vue 2已经终止支持且不再维护,建议客户升级到Vue 3版本

关于音视频通话功能的重要说明

野火在uni-chat项目上的音视频实现有2个方案:

  1. 方案1: 对应的插件是野火实时音视频RTC插件(原生UI), 使用原生UI,就是把Android平台和iOS平台的音视频SDK和UI代码全都集成到uni-chat项目中。这种方案的问题是引入的无关代码太多,且原生UI无法修改,跟uniapp互通也很不方便,不利于二次开发。
  2. 方案2:对应的插件是野火实时音视频RTC插件, 是使用原生的音视频SDK,但UI层使用nvue编写,UI和SDK使用uniapp插件的方式沟通。这种方案引入的SDK比较小,且修改方便,有利于大家做自定义相关 UI。

** 自 2023-11-29 起,uni-chat 将切换到方案 2,方案1 相关的代码,将保留到native-rtc-ui分支 **

部署服务端

本应用默认连接野火官方服务,也可以自己部署服务。如果想要私有部署服务,请按照 服务器快速部署 来部署服务到您自己的服务器。

配置

  1. 插件市场搜索野火即时通讯IM插件野火实时音视频RTC插件 ,并购买(插件是免费的!)
  2. HBuilderX 原生插件配置,选择云端插件,并选中购买的野火插件
  3. 如果使用野火官方服务,直接编译运行即可。如果使用自己私有部署IM服务,需要在config.js配置应用服务地址和IM服务地址。修改如下配置:
    // 下面两个配置都要一起修复,否则登录进去之后,会马上退回登录界面
    //应用服务地址
    static APP_SERVER = 'http//wildfirechat.net:8888';
    
    //IM 服务Host,不能包含 http 前缀或者端口
    static IM_SERVER_HOST = 'wildfirechat.net';
    

运行

  1. 运行npm install命令
  2. HBuilderX 制作自定义基座,可参考什么是自定义调试基座及使用说明
  3. HBuilderX,运行基座选择:自定义调试基座
  4. HBuilderX,运行到 Android App 基座 或 iOS App 基座

如果没有制作并运行到自定义基座,那么野火原生插件就没有集成进去,将无法使用野火原生插件,界面会显示白屏。所以一定要严格阿照上述步骤执行。

移植到其它应用

如果要在现有项目中使用野火原生插件,需要把wfc目录和config.js配置文件一同拷贝到现有项目,然后添加野火UniApp原生插件。现有项目使用wfc目录下的wfc.js接口文件。

音视频说明

默认附带免费版本音视频,关于野火音视频可以参考野火音视频使用说明野火音视频简介。如果使用音视频高级版,请参考音视频高级版切换方法

抓取原生插件的日志

  1. Android端,可以通过adb logcat > wfc.log进行抓去日志,如果提示找不到adb命令,请参考 这儿
  2. iOS端,请连接Xcode抓取

常见问题说明

  1. 如果希望普通电话,能打断音视频通话,则需要在package.json里面,添加如下权限声明:

       <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
  2. 如何集成推送功能

    1. HBuilder X里面选中manifest.json,然后选中Push-> uniPush 1.0
    2. 参考uni-push v1,并进行相关配置
    3. 编译、配置、部署 push server
    4. App.vue 里面会调用plus.push.getClientInfoAsync获取推送相关的clientId,可以使用该clientIduni-push后台测试推送功能。
    5. 当设备不在线时,im-server会调用push-server,然后push-server调用个推进行推送
  3. 打包失败:请确认是否执行过npm install命令。

  4. iPhone上打开会话页面报错SyntaxError: Invalid regular expression: invalid group specifier name __ERROR

    anchorme只能使用2.1.2版本,不支持3.x版本,可参数这个issue

应用截图

会话列表 会话列表

联系人列表 联系人列表

会话界面 会话界面

用户详情界面 用户详情界面

uni-chat's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

uni-chat's Issues

用户信息问题

你好,uni-app得那个我的界面,有一个
user: store.state.contact.selfUserInfo,
这个selfUserInfo是从后端得那里来的啊
还有一个问题就是,语音提示是否允许野火IM录制音频,这个要改成自己得怎么改

录音权限

发送语音消息时,如果尚未获取录音权限,不应当展示录音相关动画等

Android平台下,如何抓取日志

终端里面,执行adb logcat > log.log即可抓取日志

如果提示找不到adb,那需要进入Hbuilderadb工具目录:
Mac 系统下,该目录的路径是:/Applications/HBuilderX.app/Contents/HBuilderX/plugins/launcher/tools/adbs

Windows 系统下,该目录的路径是:${HbuilderX安装目录}/plugins/launcher/tools/adbs

密码账号登录

uni-app的没有密码账号登录么,我拉下来好像只有手机号登录

推送相关

消息推送相关的demo里有吗 集成推送的流程是什么

打包 apk错误

目前vue3版本的云打包正常,但是使用本地打包会出现白屏,使用其他项目本地打包正常

切换账号登录,【野火】【通讯录】【我的】界面展示异常

【描述】
在hbuilderx模拟器上跑登录功能,直接【退出登录】 -> 切换账号登录 -> 发现【野火】【通讯录】【我的】信息都不会发生变更。

一定要后台清理掉app -> 重新打开app -> 登录,才可以更新信息。

【附录】
由于录屏文件过大,以百度云盘分享形式提交。

百度云链接: https://pan.baidu.com/s/1oOWmg7zjGzuhC31DDCbJMw
提取码: emyj

uni-app聊天页面消息的布局问题

聊天框发送输入框位置不固定在下面,每次发送消息时,输入框和消息会一同向下,并且进入页面不是默认最后一条,有时候向下滑动不好使,希望官方能够处理一下
1709254282042

使用uniapp 开发web 端,但音频通话没声音

uni-app 对原生 <video>标签进行了封装,需要先获取网页上渲染出来的 <video> 标签,再设置 srcObject 属性,可参考如下代码:

                         <video v-if="status === 4"
                               ref="localVideo"
                               id="localVideo"
                               style="height: 0"
                               muted
                               playsInline autoPlay/>

.....
          sessionCallback.didCreateLocalVideoTrack = (stream) => {
                    console.log('didCreateLocalVideoTrack', stream);
                    this.localStream = stream;
                    // 等待 localVideo 渲染出来
                    this.$nextTick(() => {
                        const localVideo = document.querySelector("#localVideo video");
                        localVideo.srcObject = stream;
                    })

            };

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.