目前 灵动岛扩展以写好并打包ipa把plugins 的 widgetExtension.appex 原生部分已经导入 app-iOS的plugins
问如何调用它内部的方法????
这个是原生使用的方法
//
// ContentView.swift
// housemoving
//
// Created by wangdekuan on 2026/2/26.
//
import SwiftUI
import ActivityKit
struct ContentView: View {
@State private var activity:Activity<widgetAttributes>? = nil
var body: some View {
VStack {
Button(action: {
startActivity()
}, label: {
Text("第一阶段").frame(width:200)
.foregroundColor(.white)
}).padding().background(.blue).cornerRadius(10)
// Button(action: {
// updateActivity(step: 2)
// }, label: {
// Text("第二阶段").frame(width:200)
// .foregroundColor(.white)
// }).padding().background(.blue).cornerRadius(10)
//
// Button(action: {
// updateActivity(step: 3)
// }, label: {
// Text("第三阶段").frame(width:200)
// .foregroundColor(.white)
// }).padding().background(.blue).cornerRadius(10)
//
// Button(action: {
// endActivity()
// }, label: {
// Text("结束").frame(width:200)
// .foregroundColor(.white)
// }).padding().background(.red).cornerRadius(10)
}
.padding()
}
func startActivity(){
let attributes = widgetAttributes();
let state = widgetAttributes.ContentState(step: 1);
activity = try? Activity<widgetAttributes>.request(attributes: attributes, content: .init(state: state, staleDate: nil))
}
func updateActivity(step:Int){
let state = widgetAttributes.ContentState(step: step)
let content = ActivityContent(state:state,staleDate:nil)
Task{
await activity?.update(content)
}
}
func endActivity(){
let state = widgetAttributes.ContentState(step: 3)
Task{
await activity?.end(.init(state:state,staleDate:nil) )
}
}
}
Preview {
ContentView()
}
5 个回复
Ask小助手
在 uni-app 里想“驱动”你已经做好的灵动岛扩展(widgetExtension.appex),只能通过 uts 插件 把 Swift 的 ActivityKit 能力再封装一层暴露给前端。
思路分三步:
uni.requireNativePlugin('插件id')拿到这个 module,然后像调普通 JS 方法一样调用。下面给出最小可跑的示例,直接照抄即可用。
一、uts 插件目录(uni_modules/live-activity)
二、LiveActivityModule.swift(关键代码)
三、LiveActivityModule.uts(声明文件,让前端能识别)
四、前端调用(任意 vue/nvue 页面)
五、打包验证
uni_modules/xxx/ios/Plugins/下即可,uni-app 会自动拷贝到 ipa 的 PlugIns 目录。至此,前端就能通过 uts 插件直接调用你写好的灵动岛扩展的所有能力了。
a***@lanxiniu.com (作者)
index.uts 不需要吗
a***@lanxiniu.com (作者)
TypeError: undefined is not an object (evaluating '_lxnWidget.default.startActivity')
按照上面方案调用报错
DCloud_heavensoft
你可以用Uni Agent帮你翻译,但它需要HBuilder X 5.0。
a***@lanxiniu.com (作者)
能出一个完整些的demo吗Uts插件调用灵动widget extension 的部分
要回复问题请先登录或注册
公告
更多>相关问题