更新记录
1.1.10(2026-06-16)
- 修复 iOS 云打包 SwiftCompile:字符串下标统一通过 Swift bridge 转为
Int,避免indexOf()生成 SwiftInt后与 UTSnumber/NSNumber参数不匹配。 - 修复远程文件分享命名策略:移除 iOS 端对
String.hashCode()的依赖,改用稳定 hash 生成缓存文件名。 - 修复 iOS 缓存目录与远程下载:通过
SharePlusIosFileBridge.swift包装目录创建、远程下载和文件写入等 Swift throws API,避免 UTS 直接调用生成异常 Swift。 - 修复 iOS 分享完成和异常回调:
completionWithItemsHandler使用系统四参闭包,Error?统一通过 bridge 提取错误文本,避免生成Error?.toString()。 - 增强 iOS 云打包回归守卫,锁定
Int/NSNumber、Error?文本和远程下载 bridge 修复;本版本需重新提交 iOS 云打包验证。
1.1.8(2026-06-15)
- 修复 Android/iOS
shareFile便捷入口未完整透传远程文件参数的问题:现在会保留autoDownloadRemote、downloadDir与fileNameStrategy,避免远程文件分享只在根share入口稳定可用。 - 修复 Android/iOS
shareWithSystem兼容入口未透传fileNameStrategy的问题,图片、视频和普通文件分享都会沿用调用方指定的远程文件命名策略。 - 优化发布守卫:新增便捷入口参数透传检查,防止远程文件下载、iOS 完成回调和兼容入口能力后续回退。
- 补充本轮发布验证记录:Android appResource 编译导出通过;iOS 已完成 UTS 编译与 Swift 生成物抽查,HBuilderX CLI 在 appResource 导出后处理阶段仍可能报
Cannot read properties of undefined (reading 'plus')。
1.1.6(2026-05-08)
- 修复 iOS 云打包误解析 Android 平台文件时生成
import java.io的编译失败问题:Android 入口增加APP-ANDROID条件编译保护。 - 补齐
app-android/config.json与app-ios/config.json,保持平台目录结构完整。 - 升级插件版本,避免云打包复用旧版本缓存。
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | √ | √ | √ | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | √ | √ | - | - |
lizhao-share-plus
lizhao-share-plus 是一个纯 UTS 系统分享 API 插件,面向 uni-app 与 uni-app x。它把文本、链接、图片、视频、普通文件、远程文件下载后分享和 iOS 完成回调统一成一套参数结构,并提供分享前预检,方便业务在真正调起系统分享前先判断能不能分享、会分享什么、用户需要注意什么。
这份文档按由浅入深的顺序组织:先 3 分钟跑通,再接入文件和远程文件,最后看预检、场景预设、完整 API、错误码和平台边界。
接入方式选择
| 场景 | 推荐 API | 适合客户 |
|---|---|---|
| 只分享一段文案 | shareText |
新手快速接入 |
| 分享网页或活动链接 | shareUrl |
活动页、邀请页、内容详情页 |
| 分享本地图片/视频/PDF | shareFile |
报表、海报、附件、业务文件 |
| 分享远程 URL 文件 | shareFile + fileNameStrategy |
文件在服务器/CDN 上,需要插件先下载 |
| 分享前先判断能否分享 | prepareShare |
按钮置灰、业务提示、调试排错 |
| 兼容 lime-share 风格参数 | shareWithSystem |
从旧分享插件迁移 |
3 分钟快速接入
1. 导入插件
import * as LizhaoSharePlus from '@/uni_modules/lizhao-share-plus'
页面使用插件时只导入到插件根目录,不要导入 utssdk/index.uts。
2. 分享文本
// 最小文本分享:适合公告、邀请码、客服文案等纯文本场景。
LizhaoSharePlus.shareText({
title: '系统分享演示',
text: '这是 lizhao-share-plus 的文本分享示例',
success(res) {
console.log('分享面板已调起', res)
},
fail(err) {
console.log('分享失败', err)
}
})
3. 分享链接
// 链接分享会把 text 与 url 一起交给系统分享面板。
LizhaoSharePlus.shareUrl({
title: '活动详情',
text: '把这个活动分享给朋友',
url: 'https://uniapp.dcloud.net.cn/',
complete(res) {
console.log('分享流程结束', res)
}
})
常见增强示例
分享本地文件
// 文件路径必须是 App 端真实可访问路径;图片建议传 image/*,PDF 建议传 application/pdf。
LizhaoSharePlus.shareFile({
preset: 'image',
text: '这是图片分享示例',
file: '/storage/emulated/0/Download/share-card.png',
mimeType: 'image/png',
success(res) {
console.log('文件分享已调起', res.filesResolved)
}
})
分享多个文件
// 多文件分享会使用系统 ACTION_SEND_MULTIPLE / UIActivityViewController 文件数组能力。
LizhaoSharePlus.shareFile({
preset: 'file',
text: '这是多文件分享示例',
files: [
'/storage/emulated/0/Download/report-a.pdf',
'/storage/emulated/0/Download/report-b.pdf'
],
mimeType: 'application/pdf'
})
远程文件下载后分享
// App 端默认会把 http/https 文件先下载到本地缓存,再交给系统分享面板。
LizhaoSharePlus.shareFile({
preset: 'remoteFile',
text: '这是远程 PDF 分享示例',
file: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
mimeType: 'application/pdf',
fileNameStrategy: 'timestamp',
success(res) {
console.log('远程文件已下载并分享', res.filesResolved)
},
fail(err) {
console.log('远程下载或分享失败', err)
}
})
远程文件下载失败会返回 9011004。如果需要自定义落盘目录,传入 downloadDir;如果希望保留原文件名、按 URL hash 命名或按时间戳命名,使用 fileNameStrategy: 'keep' | 'hash' | 'timestamp'。
远程文件会先下载到本地缓存后再分享。Android 的 completed 表示已成功调起分享面板;iOS 的 completed 来自系统完成回调,用户取消时可能为 false。
分享前预检
prepareShare(options) 不会下载文件,也不会弹出系统分享面板。它适合用在正式分享前,给业务按钮置灰、给用户提示原因,或调试客户传入的参数。
// 预检远程文件分享:可以提前知道当前平台是否支持、是否需要下载、会归一出哪些文件。
const prepared = LizhaoSharePlus.prepareShare({
preset: 'remoteFile',
text: '这是远程 PDF 分享前预检示例',
file: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
mimeType: 'application/pdf',
fileNameStrategy: 'timestamp'
})
console.log(prepared.canShare)
console.log(prepared.needsDownload)
console.log(prepared.tips)
返回值:
| 字段 | 类型 | 说明 |
|---|---|---|
| canShare | boolean | 当前参数与平台是否可以继续正式分享 |
| reason | string | 不可分享原因;可分享时通常为空 |
| adapter | string | 当前平台适配器,例如 uts-android、uts-ios |
| preset | SharePresetType | 最终识别出的场景预设 |
| needsDownload | boolean | 正式分享时是否需要先下载远程文件 |
| normalized | ShareOptions | 归一化后的参数 |
| filesResolved | Array |
预检阶段的文件归一结果 |
| tips | Array |
给客户或业务侧展示的接入建议 |
场景预设
preset 用来表达业务意图。传 auto 或不传时,插件会按 files/file/url/text/mimeType 自动推断。
| 预设 | 说明 | 常见参数 |
|---|---|---|
| auto | 自动识别 | 任意分享参数 |
| text | 文本分享 | text/title |
| link | 链接分享 | url/text/title |
| image | 图片分享 | file/files/mimeType=image/* |
| video | 视频分享 | file/files/mimeType=video/* |
| file | 普通文件分享 | file/files/mimeType |
| remoteFile | 远程文件下载后分享 | file/files 传入 http/https |
兼容旧参数
如果旧项目使用 type/title/summary/path 风格参数,可以先用 shareWithSystem 迁移:
// 兼容模式会转换到 shareText/shareUrl/shareFile 主链路。
LizhaoSharePlus.shareWithSystem({
type: 'file',
title: '报告文件',
summary: '请查看这份 PDF 报告',
path: '/storage/emulated/0/Download/report.pdf',
mimeType: 'application/pdf',
fileNameStrategy: 'keep'
})
API 列表
| API | 说明 |
|---|---|
prepareShare(options) |
分享前预检,不调起系统面板 |
canIShare(options) |
简单能力探测 |
normalizeShareFiles(options) |
文件归一化,不触发分享 |
share(options) |
通用分享入口 |
shareText(options) |
文本快捷分享 |
shareUrl(options) |
链接快捷分享 |
shareFile(options) |
文件快捷分享 |
shareWithSystem(options) |
兼容模式分享 |
ShareOptions 参数
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
| options | ShareOptions | 是 | 分享参数对象 | 无 | preset / text / title / url / file / files / success / fail / complete |
| options.preset | SharePresetType | 否 | 分享场景预设 | auto |
auto / text / link / image / video / file / remoteFile |
| options.text | string | 否 | 分享文本 | 空字符串 | 无 |
| options.title | string | 否 | 分享标题 | 空字符串 | 无 |
| options.subject | string | 否 | 分享主题,部分系统分享目标会使用 | 空字符串 | 无 |
| options.url | string | 否 | 分享链接,仅支持 http/https |
空字符串 | 无 |
| options.file | string | 否 | 单文件路径或远程文件 URL | 空字符串 | 无 |
| options.files | Array |
否 | 多文件路径或远程文件 URL 列表 | [] |
无 |
| options.mimeType | string | 否 | 分享文件 MIME 类型 | */* |
image/* / video/* / application/pdf 等 |
| options.autoDownloadRemote | boolean | 否 | App 端远程文件是否先下载到本地缓存后再分享 | true |
true / false |
| options.downloadDir | string | 否 | 远程文件下载目录;不传时使用插件缓存目录 | 插件缓存目录 | 无 |
| options.fileNameStrategy | ShareFileNameStrategy | 否 | 远程文件下载命名策略 | keep |
keep / hash / timestamp |
| options.targetPackage | string | 否 | Android 指定目标 App 包名 | 空字符串 | 如 com.tencent.mm |
| options.chooserTitle | string | 否 | Android 分享面板标题 | 分享到 |
无 |
| options.excludedActivityTypes | Array |
否 | iOS 分享面板隐藏项 | [] |
iOS activity type 字符串 |
| options.success | function | 否 | 成功回调 | 无 | 无 |
| options.fail | function | 否 | 失败回调 | 无 | 无 |
| options.complete | function | 否 | 完成回调 | 无 | 无 |
ShareResult 返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| platform | string | 当前平台,Android 返回 android,iOS 返回 ios |
| completed | boolean | Android 表示已成功调起分享面板;iOS 的 completed 来自系统完成回调,用户取消可能为 false |
| activityType | string | iOS 分享活动类型;Android 为空 |
| targetPackage | string | Android 指定包名分享时返回目标包名 |
| filesResolved | Array |
文件归一化结果 |
ShareResolvedFile 返回值
| 字段 | 类型 | 说明 |
|---|---|---|
| original | string | 调用方传入的原始文件路径或远程 URL |
| path | string | 实际分享使用的路径;远程文件成功下载后为本地路径 |
| mimeType | string | 文件 MIME 类型 |
错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
| 9011001 | unsupported | 当前平台或当前分享能力不支持 |
| 9011002 | invalid params | 参数为空、URL 不合法或分享项为空 |
| 9011003 | file unavailable | 本地文件不存在或无法访问 |
| 9011004 | remote download failed | 远程文件下载失败 |
| 9011005 | target app not found | Android 指定包名未找到 |
| 9011006 | permission denied | 权限不足,当前版本通常不主动申请权限 |
| 9011007 | user cancelled | 保留错误码;iOS 取消当前以 success.completed=false 表达 |
| 9011008 | native failed | 原生分享流程异常 |
| 9011009 | unknown | 未知错误 |
平台支持
| 平台 | 是否支持 | 说明 |
|---|---|---|
| Android App | 支持 | 使用系统 Intent 分享面板,支持文本、链接、单文件、多文件、远程文件下载后分享 |
| iOS App | 支持 | 使用 UIActivityViewController,支持真实 completed/activityType 回调 |
| Harmony | 暂不支持 | 返回 9011001,prepareShare 可返回明确原因 |
| Web | 暂不支持 | 返回 9011001 |
| 微信小程序 | 暂不支持 | 返回 9011001 |
| 支付宝小程序 | 暂不支持 | 返回 9011001 |
自定义基座说明
当前插件不新增三方 SDK、Manifest、Info.plist、权限、libs、res 或 assets。但 Android/iOS UTS 原生逻辑会编译进 App 基座;如果更新了 utssdk/app-android/index.uts 或 utssdk/app-ios/index.uts,真机要使用最新能力时,需要重新运行对应平台原生联编或重新打对应平台自定义基座。只更新 wgt/appResource 不能替换旧基座里已编译的 UTS 原生部分。
完整示例
完整页面示例见:
uni_modules/lizhao-share-plus/example/index.vue
发布前建议同时查看:
uni_modules/lizhao-share-plus/verification-checklist.md

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6484
赞赏 5
下载 12283435
赞赏 1922
赞赏
京公网安备:11010802035340号