开发者社区> 问答> 正文

钉钉微应用jsapi,在ios系统dd.ready不执行

钉钉微应用jsapi,在ios系统dd.ready里的代码不执行。安卓正常没有问题。 前端为vue单页

export default {
  name: 'dingdingLogin',
  async created() {
    window.onerror = function (msg, url, line) {
      this.$vux.alert.show({
        content: msg
      })
    }
    try {
      const corpId = 'dingxxxxxxx'
      const { accessToken, timeStamp, nonceStr, signature } = await getDingDingAccessToken()
      console.log('dingding accessToken', accessToken)
      this.$vux.alert.show({
        content: `accessToken:${accessToken},timeStamp:${timeStamp},nonceStr:${nonceStr},signature:${signature}`
      })
      dd.error(error => {
        dd.device.notification.alert({
          message: JSON.stringify(error),
          title: '提示', // 可传空
          buttonName: '收到',
          onSuccess: function() {
        // onSuccess将在点击button之后回调
        /* 回调 */
          },
          onFail: function(err) {
            this.$vux.alert.show({
              content: JSON.stringify(err)
            })
          }
        })
      })
      dd.config({
        agentId: '0000000', // 必填,微应用ID
        corpId: `${corpId}`, // 必填,企业ID
        timeStamp: `${timeStamp}`, // 必填,生成签名的时间戳
        nonceStr: `${nonceStr}`, // 必填,生成签名的随机串
        signature: `${signature}`, // 必填,签名
        jsApiList: [
          'device.notification.alert'
        ] // 必填,需要使用的jsapi列表,注意:不要带dd。
      })

      dd.ready(() => {
        dd.device.notification.alert({
          message: 'tttttttt',
          title: '提示', // 可传空
          buttonName: '收到',
          onSuccess: function() {
        // onSuccess将在点击button之后回调
        /* 回调 */
          },
          onFail: function(err) {
            this.$vux.alert.show({
              content: JSON.stringify(err)
            })
          }
        })
        this.$vux.alert.show({
          content: `dd.ready`
        })
        dd.runtime.permission.requestAuthCode({
          corpId, // 企业id
          onSuccess: async info => {
            this.$vux.alert.show({
              content: `onSuccess`
            })
            const code = info.code // 通过该免登授权码可以获取用户身份
            const data = await dingdingSsoLogin({ code, accessToken })
            console.log('用accessToken和corpid换的', data)
            const { token } = data.obtAccountVO.baseAccountVO
            await tokenLogin({ token })
            this.$router.push({ name: 'TravelOrderList' })
          },
          onFail: err => {
            this.$vux.alert.show({
              content: JSON.stringify(err)
            })
          }
        })
      })
    } catch (error) {
      this.$vux.alert.show({
        content: error.message
      })
    }
  }
}

在ios上可以输出

this.$vux.alert.show({
        content: `accessToken:${accessToken},timeStamp:${timeStamp},nonceStr:${nonceStr},signature:${signature}`
})

这句,其他的全都没显示 runtime.permission.requestAuthCode只是为了用这一个方法。 这是为什么?

展开
收起
1413114361308702 2020-08-14 12:17:21 1401 0
1 条回答
写回答
取消 提交回答
  • 问题解决了没有哇 ?

    2021-11-04 18:36:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载