当前位置: 首页 > news >正文

UniApp 实现分享功能

文章目录

  • 一、环境准备
  • 二、代码实现
  • 三、常见问题解决

一、环境准备

1. 必要的权限配置
manifest 中添加以下权限:

{"app-plus": {"distribute": {"android": {"permissions": ["<uses-permission android:name=\"android.permission.INTERNET\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"]}}}
}

2.各平台配置
微信配置

  • 前往微信开放平台注册应用
  • manifest.json 中添加:
"app-plus": {"distribute": {"sdkConfigs": {"share": {"weixin": {"appid": "你的微信APPID","UniversalLinks": "https://你的域名/app/"}}}}
}

QQ配置

  • 前往QQ互联平台注册应用
  • manifest.json 中添加:
"qq": {"appid": "你的QQ APPID"
}

二、代码实现

<template><view><button @click="share('weixin','WXSceneSession)">微信好友</button><button @click="share('qq','')">QQ好友</button><button @click="share('weixin','WXSceneTimeline')">朋友圈</button></view>
</template><script>
export default {methods: {async share(provider, scene) {if (!await this.checkInstall(provider)) return;try {await uni.share({provider,type: 0, // 0-图文,1-纯文字,2-图片,5-小程序title: "优质内容分享",summary: "点击查看详情内容",href: "https://example.com",imageUrl: "/static/share.jpg",scene,});} catch (e) {this.handleError(e);}},async checkInstall(provider) {const installed = await checkAppInstalled(provider);if (!installed) {uni.showModal({title: '提示',content: `请先安装${provider === 'weixin' ? '微信' : 'QQ'}`,showCancel: false});return false;}return true;},checkAppInstalled(provider) {return new Promise((resolve) => {uni.getProvider({service: 'share',success: (res) => {resolve(res.provider.includes(provider));}});});},handleError(error) {console.error('分享失败:', error);const msg = {'-1': '分享已取消','2': '未安装应用','3': '参数错误'}[error.errCode] || '分享失败';uni.showToast({title: msg,icon: 'none'});}}
}
</script>

三、常见问题解决

1.iOS 分享图片不显示

  • 确保图片小于32KB
  • 使用网络图片地址(本地路径需转base64)

2. Android 签名不一致

  • 检查开放平台配置的签名与打包签名是否一致
  • 使用官方提供签名校验工具

相关文章:

  • uniapp打包apk如何实现版本更新
  • “数字驱动·智建未来——2025河北省建筑电气与智能化技术交流大会”
  • C++实时统计数据均值、方差和标准差
  • python如何用递归函数求1+2+3+4+5的值
  • 【linux】一文掌握 Tmux 的各种指令(Tmux备忘清单)
  • 开源CMS系统的SEO优化功能主要依赖哪些插件?
  • Android Studio 2024版,前进返回按钮丢失解决
  • mysql模糊多次OR查询某一个字段,针对这个字段进行查询分组
  • 软件评测:从多维度看其界面、功能、性能稳定性如何?
  • ubantu18.04(Hadoop3.1.3)之Flink安装与编程实践(Flink1.9.1)
  • AWS虚拟专用网络全解析:从基础到高级实践
  • 【前端】从零开始的搭建顺序指南(技术栈:Node.js + Express + MongoDB + React)book-management
  • Spring项目使用JWT进行后端鉴权
  • 让数据优雅落地:用 serde::Deserialize 玩转结构体实体
  • Prompt
  • Go 1.24 is released(翻译)
  • 【leetcode】最长公共子路径问题
  • TypeScript概述
  • 2025年特种设备作业人员考试题库及答案(流动式起重机Q2)
  • 2.2.2goweb内置的 HTTP 处理程序2
  • 新疆维吾尔自治区原质量技术监督局局长刘新胜接受审查调查
  • 对话|贝聿铭设计的不只是建筑,更是生活空间
  • 专访丨青年作家杜梨:以动物的视角去观察这个世界
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元
  • 最近这75年,谁建造了上海?
  • 气温“过山车”现象未来或更频繁且更剧烈