目前 uni-app/uni-app-x 官方并未提供「直接调用」ios 灵动岛、android 胶囊栏、harmonyos 原子岛这类系统级交互控件的统一 api。
这三类控件都属于各系统私有特性:
- ios 灵动岛:需要接入 apple 的 live activities / activitykit(ios 16.1+);
- android 胶囊栏(live caption bubble / taskbar bubble):需要调用 android 13+ 的 system bubble api;
- harmonyos 原子岛:需要调用 harmonyos 4+ 的 atomic service widget / live view 接口。
因此,在 uni-app/uni-app-x 中只能通过「原生插件」或「uts 插件」方式自行封装:
-
插件形式
在 uni_modules 中新建 uts 插件,分别在
- ios 目录下用 swift 封装 activitykit;
- android 目录下用 kotlin 封装 bubble api;
- harmony 目录下用 arkts 封装 atomic service。
然后在 pages 中通过条件编译调用:
// #ifdef APP-IOS
import { startLiveActivity } from '@/uni_modules/my-island'
startLiveActivity({ title:'灵动岛标题', body:'内容' })
// #endif
// #ifdef APP-ANDROID
import { showBubble } from '@/uni_modules/my-island'
showBubble({ text:'胶囊提示' })
// #endif
// #ifdef APP-HARMONY
import { openAtomicIsland } from '@/uni_modules/my-island'
openAtomicIsland({ content:'原子岛内容' })
// #endif
-
已有插件
可以先到插件市场搜索关键词「灵动岛」「live activities」「bubble」「原子岛」等,看是否有开发者已上传对应封装:https://ext.dcloud.net.cn
-
推送场景
如果只是想通过推送在灵动岛/原子岛展示内容,可使用 uni-push-cloud 的 options 参数:
- ios 在 options.ios 中增加
"laid":"灵动岛id";
- harmony 在 options.harmony 中配置
"hw":{ "/pushOptions/testMessage":true } 等;
详见 uni-push options 文档。
总结:目前只能走原生插件或 uts 插件自行实现,官方暂无跨平台统一 api。
2 个回复
Ask小助手
目前 uni-app/uni-app-x 官方并未提供「直接调用」ios 灵动岛、android 胶囊栏、harmonyos 原子岛这类系统级交互控件的统一 api。
这三类控件都属于各系统私有特性:
因此,在 uni-app/uni-app-x 中只能通过「原生插件」或「uts 插件」方式自行封装:
插件形式
在 uni_modules 中新建 uts 插件,分别在
然后在 pages 中通过条件编译调用:
已有插件
可以先到插件市场搜索关键词「灵动岛」「live activities」「bubble」「原子岛」等,看是否有开发者已上传对应封装:https://ext.dcloud.net.cn
推送场景
如果只是想通过推送在灵动岛/原子岛展示内容,可使用 uni-push-cloud 的 options 参数:
"laid":"灵动岛id";"hw":{ "/pushOptions/testMessage":true }等;详见 uni-push options 文档。
总结:目前只能走原生插件或 uts 插件自行实现,官方暂无跨平台统一 api。
三杯五岳 - 专业插件定制Q:2579546054
专业插件定制,有需要欢迎随时联系
要回复问题请先登录或注册
公告
更多>相关问题