1***@qq.com
1***@qq.com
  • 发布:2026-04-10 11:02
  • 更新:2026-04-10 11:05
  • 阅读:25

uniapp里怎么写全局的自定义组件

分类:uni-app

最近用腾讯云的无ui版本,我想要在任何页面都能调起通话的页面并且还能缩小成悬浮窗

2026-04-10 11:02 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

在 uni-app 中实现全局自定义组件(如全局悬浮窗)主要有以下几种方案,结合你使用的腾讯云无 UI 版本 TUICallKit,建议采用以下方式:

一、使用 TUICallKit 自带悬浮窗功能(推荐)

根据知识库中的 腾讯云音视频通话插件文档,TUICallKit 已内置悬浮窗能力,无需自行开发全局组件:

const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');  

// 初始化时开启悬浮窗功能  
TUICallKit.enableFloatWindow(true);

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

开启后,通话页面可自动缩小为悬浮窗,且支持在任意页面显示。配合登录和通话接口:

// 登录(必须在调用通话功能前完成)  
const options = {  
  SDKAppID: 1400000001,  
  userID: 'denny',  
  userSig: 'xxxxxxxxxxx'  
};  
TUICallKit.login(options);  

// 发起通话  
const callOptions = {  
  userIDList: 'mike',  
  callMediaType: 2 // 1:语音 2:视频  
};  
TUICallKit.calls(callOptions);

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

二、使用原生悬浮窗插件(自定义需求)

如果你需要更灵活的自定义悬浮窗(如完全自定义 UI),可使用插件市场的原生插件:

1. UniApp安卓悬浮窗-自定义样式

https://ext.dcloud.net.cn/plugin?id=17858

该插件支持在悬浮窗内运行 WebView,可通过 HTML/CSS/JS 自定义界面:

const LinFloatWeb = uni.requireNativePlugin('Lin-Float-Webview');  

// 请求权限并创建悬浮窗  
LinFloatWeb.applyPermission(() => {  
  LinFloatWeb.create({  
    url: 'file://' + plus.io.convertLocalFileSystemURL('_www/static/float.html'),  
    width: 250,  
    height: 250,  
    dragType: 3, // 吸边拖拽  
    transparent: true  
  });  
  LinFloatWeb.show();  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

2. 全局浮窗悬浮球

https://ext.dcloud.net.cn/plugin?id=2429

适用于 Android,支持全局显示悬浮球并自定义点击行为:

const floatbutton = uni.requireNativePlugin('HG-FloatButton');  

floatbutton.configFloat({  
  debug: true,  
  icon: '/mnt/sdcard/icon.png',  
  backToMainUI: false  
}, (ret) => {  
  console.log(ret.message);  
});  

// 显示/隐藏  
floatbutton.showFloatingView();  
floatbutton.hideFloatingView();

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

三、全局通信方案(组件间通信)

如果需要在各页面控制悬浮窗的显示/隐藏,可结合 uni.$on 实现全局事件监听:

// App.vue 或入口页面监听全局事件  
uni.$on('showCallWindow', (data) => {  
  // 显示通话悬浮窗逻辑  
  TUICallKit.calls(data);  
});  

// 任意页面触发  
uni.$emit('showCallWindow', {  
  userIDList: 'user123',  
  callMediaType: 2  
});

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

注意事项

  1. 平台差异:悬浮窗功能在 Android 和 iOS 实现不同,上述原生插件仅支持 Android。iOS 建议使用 TUICallKit 官方提供的悬浮窗能力。

  2. 权限申请:Android 悬浮窗需要申请 SYSTEM_ALERT_WINDOW 权限,插件已封装权限申请接口。

  3. 鸿蒙平台:如果在 HarmonyOS 上开发,注意 app-plus 配置不生效,需单独查看鸿蒙相关文档。

  4. 离线推送:如需在 App 后台或杀进程时唤起通话界面,需集成 TIMPush 离线推送插件

如需更详细的悬浮窗样式定制,建议直接购买使用 UniApp安卓悬浮窗-自定义样式 插件,该插件支持完整的 WebView 自定义界面。

内容为 AI 生成,仅供参考

要回复问题请先登录注册