# uni.share(options)

分享

# share 兼容性

Web 微信小程序 Android iOS HarmonyOS HarmonyOS(Vapor)
x - 5.08 5.08 4.81 5.0

# 参数

名称 类型 必填 默认值 兼容性 描述
options ShareOptions -
名称 类型 必备 默认值 兼容性 描述
provider string weixin
分享服务提供商,通过uni.getProvider获取,如果不设置则默认 weixin
type number 0
分享类型。默认图文0
合法值 兼容性 描述
0
图文
1
纯文字
2
纯图片
3
音乐
4
视频
5
小程序
title string -
标题
scene string -
场景
合法值 兼容性 描述
WXSceneSession
分享到聊天界面
WXSceneTimeline
分享到朋友圈
WXSceneFavorite
分享微信收藏
summary string -
摘要
href string -
跳转链接
imageUrl string -
图片地址
mediaUrl string -
音视频地址
miniProgram ShareMiniProgramShareOptions -
分享小程序
名称 类型 必备 默认值 兼容性 描述
id string -
微信小程序原始id
path string -
点击链接进入的页面
type number 0
微信小程序版本类型,默认为0。
合法值 兼容性 描述
0
正式版
1
测试版
2
体验版
webUrl string -
兼容低版本的网页链接
openCustomerServiceChat boolean false
是否启用拉起客服功能,为 true 时除 corpidcustomerUrl 外其他参数无效
corpid string -
客服ID,openCustomerServiceChat 为 true 时必填
customerUrl string -
客服的页面路径,openCustomerServiceChat 为 true 时必填
success (result: ShareSuccess) => void -
接口调用成功的回调函数
fail (result: ShareFail) => void -
接口调用失败的回调函数
complete (result: any) => void -
接口调用结束的回调函数(调用成功、失败都会执行)

# ShareFail 的属性值

名称 类型 必备 默认值 兼容性 描述
errCode number -
错误码
合法值 兼容性 描述
4000500
未找到微信APPID,请确认 manifest.json 中配置信息是否正确
4000501
该场景字段当前不支持
4000502
该场景字段未匹配到
4000503
分享类型不匹配,请确认类型是否正确
4000504
参数填写错误
4000505
请求微信接口失败
4000506
暂不支持该类型的分享
4000507
图片下载失败
4000508
加载本地文件失败
4000509
获取缩略图失败
4000510
微信可能未安装
4000511
分享失败
errSubject string -
统一错误主题(模块)名称
data any -
错误信息中包含的数据
cause Error - - 源错误信息,可以包含多个错误,详见SourceError
errMsg string -

# 参见

# 分享provider对象描述

UniShareWeixinProvider(微信分享)继承自 UniProvider

名称 类型 必备 默认值 描述
isWeChatInstalled boolean - 判断微信是否安装

# 通用类型

# GeneralCallbackResult

名称 类型 必备 默认值 兼容性 描述
errMsg string -
错误信息

# 自定义分享provider接入到uni API

背景:目前uni-app x引擎已经内置了微信分享。但分享SDK还有很多,比如微博、抖音分享。

以往这些SDK可以通过独立插件的方式集成到uni-app x中,但需要提供单独的API给开发者使用。

uni-app x从4.25起,开放了provider自接入机制,让三方SDK可以以provider方式被开发者集成。

开发一个UTS插件,对接uni规范化的API、错误信息描述等实现自己的分享插件,这样插件使用者就可以通过uni的标准API使用三方SDK。

举个例子,开发者想使用uni.share()的方式调用XX分享,但是内置分享api不支持,

那只需要按照下面四个步骤实现即可:

第一步,新建一个UTS插件,在interface.uts 中定义接口,UniShareProvider,代码如下

export interface UniShareWeixinProvider extends UniShareProvider{}

第二步,在app-android或者app-ios的index.uts中实现接口,代码如下

import { UniShareWeixinProvider } from '../interface.uts'
export class UniShareWeixinProviderImpl implements UniShareWeixinProvider {
	override id : String = "XX" // id必须有插件作者前缀,避免冲突,避免不同插件作者的插件id重名
	override description : String = "XX的描述"
	override isAppExist : boolean | null = null

	constructor(){}

	override share(options : ShareOptions) {
		//todo 具体逻辑,接收uni规范的入参,进行业务处理,返回uni规范的返回值。如遇到错误,按uni的规范返回错误码
	}
}

第三步,在manifest.json中配置

  "app": {
    "distribute": {
      /* android打包配置 */
      "modules": {
        "uni-share":{
          "XX":{}
        }
      }
    }
  }

第四步,打包自定义基座然后运行

# Bug&Tips

  • HarmonyOS 平台分享图片时仅支持 jpeg/png 类型的图片
    • 分享视频,大小不能超过 64KB
    • 分享图片,大小不支持超过 100KB
  • HarmonyOS 平台分享携带文本时
    • title 不支持超过 512 个字节
    • summary 不支持超过 1024 个字节
  • 鸿蒙平台,HBuilderX 4.87 及以下版本,分享时有图片大于 20 KB 会出现分享失败的问题。临时方案是下载 har包并改名为 uni_modules__uni_share_weixin.har,放到 项目根目录/harmony-configs/libs/ 目录下重新编译运行到手机。高版本不存在此问题