背景:开发的h5需要嵌在云闪付小程序中访问,应用内需要获取用户定位、分享,踩了一些坑,但是网上较少处理方式,记录下。注意,需要还在云闪付环境内才可以使用云闪付的sdk能力,如果是从云闪付内跳转出h5,那将会报错。
涉及sdk能力:用户定位、分享页面
1、初始化:按照官方文档步骤即可。

需要注意的是可能会遇到 upsdk使用报错说没有该变量的情况,我的修复方式是在 shims-vue.d.ts 文件中声明了 upsdk
declare let upsdk: any
2、定位sdk调用。
需要注意的是数据格式,android 返回的数据类型为 string,IOS 返回的数据类型是 object。(当时看了半天,文档有写但是哈哈后来看到,折腾了时间)
const handleLocationData = (data: any) => {
if (typeof data == 'string') {
return JSON.parse(data)
}
return data
}
export async function getYsfLocation() {
return new Promise((resolve, reject) => {
upsdk.pluginReady(function () {
upsdk.getLocationGps({
success: function (data) {
let copyData = handleLocationData(data)
AuthModule.setLocation({ latitude: copyData.latitude, longitude: copyData.longitude })
resolve(copyData)
},
fail: function (msg) {
//失败回调
reject(msg)
}
})
})
})
}
3、分享sdk。
这个sdk坑1在于文档比较单薄,如果想实现某页面内分享后,被分享者点击能跳到分享页面,是需要两个sdk联合起来实现,即在唤醒分享面板,再去自定义面板的胶囊按钮。
坑2这个url并不是单纯的h5地址,需要配上一些对方的appid之类的,具体要跟对接方沟通,他们提供的。
坑3配置了这个sdk,可能会存在第一次进分享无效,取消返回页面才生效,我的处理方法是在页面初始化的时候单独调一下胶囊控件sdk,不要等待点击分享才调,解决了

export async function setYsfShare() {
upsdk.pluginReady(function () {
upsdk.appletSharePopup({
success: function () {
// 成功回调
upsdk.setAppletShareBaseInfo({
title: '体验计划', // 分享的标题
content: '', // 分享的描述
picUrl: '', // 分享展示图片的url
toLink: linkUrl, // 跳转地址
shareIdList: ['3'], // 默认为全部渠道都有,可选值为:0全部,1微博,3微信,’4’,’5’,’6’,’7’ 其他不知道没试
fail: function (msg) {
console.log('share error', msg)
}
})
},
fail: function (err) {
// 失败回调
console.log(err)
}
})
})

5284

被折叠的 条评论
为什么被折叠?



