app.share - macOS 分享服务 API
使用 NSSharingService 调用系统分享面板(AirDrop、邮件、信息等)。
方法
app.share.show(items)
显示系统分享面板,让用户选择分享方式。
参数:
items(string|array) - 要分享的内容:- 文件路径(自动转为文件 URL)
- HTTP/HTTPS 链接(自动转为 URL)
- 普通文本
返回值: boolean, error
-- 分享单个文件
app.share.show("/path/to/file.pdf")
-- 分享多个文件
app.share.show({"/path/to/a.png", "/path/to/b.png"})
-- 分享文本
app.share.show("Hello, World!")
-- 分享 URL
app.share.show("https://example.com")
-- 混合内容
app.share.show({"/path/to/file.txt", "https://example.com"})
app.share.services(items?)
列出可用的分享服务。
参数:
items(string|array, 可选) - 分享内容(影响可用服务列表)
返回值: array<table> - 每项包含:
name(string) - 服务标识名称title(string) - 服务显示标题
local services = app.share.services()
for _, s in ipairs(services) do
app.log.info(s.name .. " → " .. s.title)
end
-- 查看指定文件可用的分享服务
local services = app.share.services({"/path/to/photo.jpg"})
app.share.sendTo(serviceName, items)
直接通过指定服务分享内容(不显示面板)。
参数:
serviceName(string) - 服务名称,支持:- 内置名称:
"email","message","airdrop" - 服务标题(从
services()获取)
- 内置名称:
items(string|array) - 要分享的内容
返回值: boolean, error
-- 通过邮件分享
app.share.sendTo("email", {"/path/to/report.pdf"})
-- 通过 AirDrop 分享
app.share.sendTo("airdrop", {"/path/to/photo.jpg"})
-- 通过信息分享
app.share.sendTo("message", "Check this out: https://example.com")
说明
- 分享面板显示在鼠标位置附近
sendTo()使用内置服务名时无需先调用services()- 内置服务名映射:
email→邮件,message→信息,airdrop→AirDrop - 文件路径会自动检测并转换为文件 URL
- HTTP/HTTPS 开头的字符串自动转换为 URL
示例
右键分享选中文件
function MyPlugin:handleShare(context)
local files = context.selectedFiles
if #files == 0 then
app.dialog.alert("提示", "请先选择文件")
return
end
app.share.show(files)
end
通过邮件发送文件
function MyPlugin:handleEmailFiles(context)
local files = context.selectedFiles
local ok, err = app.share.sendTo("email", files)
if not ok then
app.log.error("分享失败: " .. (err or "unknown"))
end
end