更新记录

1.1.10(2026-06-16)

  • 修复 iOS 云打包 SwiftCompile:字符串下标统一通过 Swift bridge 转为 Int,避免 indexOf() 生成 Swift Int 后与 UTS number/NSNumber 参数不匹配。
  • 修复远程文件分享命名策略:移除 iOS 端对 String.hashCode() 的依赖,改用稳定 hash 生成缓存文件名。
  • 修复 iOS 缓存目录与远程下载:通过 SharePlusIosFileBridge.swift 包装目录创建、远程下载和文件写入等 Swift throws API,避免 UTS 直接调用生成异常 Swift。
  • 修复 iOS 分享完成和异常回调:completionWithItemsHandler 使用系统四参闭包,Error? 统一通过 bridge 提取错误文本,避免生成 Error?.toString()
  • 增强 iOS 云打包回归守卫,锁定 Int/NSNumberError? 文本和远程下载 bridge 修复;本版本需重新提交 iOS 云打包验证。

1.1.8(2026-06-15)

  • 修复 Android/iOS shareFile 便捷入口未完整透传远程文件参数的问题:现在会保留 autoDownloadRemotedownloadDirfileNameStrategy,避免远程文件分享只在根 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.jsonapp-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-androiduts-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 暂不支持 返回 9011001prepareShare 可返回明确原因
Web 暂不支持 返回 9011001
微信小程序 暂不支持 返回 9011001
支付宝小程序 暂不支持 返回 9011001

自定义基座说明

当前插件不新增三方 SDK、Manifest、Info.plist、权限、libsresassets。但 Android/iOS UTS 原生逻辑会编译进 App 基座;如果更新了 utssdk/app-android/index.utsutssdk/app-ios/index.uts,真机要使用最新能力时,需要重新运行对应平台原生联编或重新打对应平台自定义基座。只更新 wgt/appResource 不能替换旧基座里已编译的 UTS 原生部分。

完整示例

完整页面示例见:

uni_modules/lizhao-share-plus/example/index.vue

发布前建议同时查看:

uni_modules/lizhao-share-plus/verification-checklist.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

按目标平台分享能力要求

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。