云闪付sdk定位踩坑

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

涉及sdk能力:用户定位、分享页面

1、初始化:按照官方文档步骤即可。

需要注意的是可能会遇到 upsdk使用报错说没有该变量的情况,我的修复方式是在 shims-vue.d.ts 文件中声明了 upsdk

declare let upsdk: any

2、定位sdk调用。

需要注意的是数据格式,android 返回的数据类型为 stringIOS 返回的数据类型是 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)
      }
    })
  })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值