【iOS小组件实战】运行JavaScript指令

469 阅读1分钟

前言

苹果快捷指令无法直接执行 JavaScript 脚本,只能通过 JavaScriptCore 提供指令支持,这里记录一下实现过程,末尾附demo链接。

实现

1.提供指令参数

定义在指令中心中可视化接收的参数,这里为需要执行的 js 代码。

@Parameter(title: "代码文本", description: "要执行的代码文本")
var jsCcode: String?

static var parameterSummary: some ParameterSummary {
    // 写法1 参数一行展示
    // Summary("运行JavaScript \(\.$jsCcode)")
    
    // 写法2 参数折叠展示,默认
    Summary("运行JavaScript") {
        \.$jsCcode
    }
}

关于参数摘要这里有两种写法

  • 描述参数一行展示:摘要描述和参数在一起展示

  • 参数折叠展示:摘要描述和参数分开展示,参数折叠展示

图片

2.JavaScriptCore执行JavaScript

func runJS(_ jsCode: String) -> JSValue {
    let context: JSContext = JSContext()
    // 执行js
    let arrayVal: JSValue = context.evaluateScript(jsCode)
    print("result:", arrayVal)
    return arrayVal
}

3.执行指令

func perform() async throws -> some IntentResult & ReturnsValue<String> {
    guard let jsCcode else {
        return .result(value: "")
    }
    // 执行js代码
    let reusltValue: JSValue = runJS(jsCcode)
    return .result(value: "\(reusltValue)")
}

预览效果

图片

项目链接

代码放到了github上,需要的自取

快捷指令口令

见原文:【iOS小组件实战】运行JavaScript指令)

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。