前言
苹果快捷指令无法直接执行 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上,需要的自取
快捷指令口令
本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。