文章目录
一、环境准备
1. 必要的权限配置
在 manifest
中添加以下权限:
bash
{
"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
中添加:
bash
"app-plus": {
"distribute": {
"sdkConfigs": {
"share": {
"weixin": {
"appid": "你的微信APPID",
"UniversalLinks": "https://你的域名/app/"
}
}
}
}
}
QQ配置
- 前往QQ互联平台注册应用
- 在
manifest.json
中添加:
bash
"qq": {
"appid": "你的QQ APPID"
}
二、代码实现
bash
<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 签名不一致
- 检查开放平台配置的签名与打包签名是否一致
- 使用官方提供签名校验工具