收藏
回答

worklet 从UI线程调回JS线程执行 openCustomerServiceChat 无效果

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.openCustomerServiceChat 微信iOS客户端 8.0.39 3.0.0
Component({
  options: {
    styleIsolation: "apply-shared",
  },
  lifetimes: {
    attached() {
      
    },
  },
  methods: {
    handlePan(evt) {
      'worklet';
      if (evt.state === GestureState.CANCELLED) {
        wx.worklet.runOnJS(this.openChat.bind(this))();
      }
    },
    openChat() {
      wx.showToast({ title: '测试' });
      wx.openCustomerServiceChat({
        extInfo: { url: "https://work.weixin.qq.com/kfid/xxxxx" },
        corpId: 'xxxxx',
      });
    }
  }
});

// skyline 模式下,调会JS线程执行openChat时,showToast 能正常运行,但是 openCustomerServiceChat 没有响应
// webview 模式下,直接给节点绑定click事件,openCustomerServiceChat 可以正常调用
回答关注问题邀请回答
收藏

3 个回答

  • 黄思程
    黄思程
    2023-08-04

    是因为需要在点击回调里才能调用,你这里具体是想做成什么样的交互

    2023-08-04
    有用
    回复 1
    • Zerk
      Zerk
      2023-08-04
      在skyline渲染模式下,客服 logo 可以随意拖动到页面任意位置,所以包了一层 pan-gesture-handler。
      wxml的代码如下:
      <pan-gesture-handler on-gesture-event="handlePan">
        <image src="" />
      </pan-gesture-handler>

      这样的话还有办法调用openCustomerServiceChat 吗?
      2023-08-04
      回复
  • Demons
    Demons
    2023-08-03

    你好,麻烦在手机微信那里上传下日志: 我->设置->帮助与反馈右上角有个上报日志的入口,麻烦提供一下微信号,时间点

    2023-08-03
    有用
    回复
  • Zerk
    Zerk
    2023-08-07

    问题解决了,在 pan-gesture-handler 外再包一层view,给view 绑定 tap事件来触发openChat

    <view bindtap="openChat">
      <pan-gesture-handler on-gesture-event="handlePan">
        <image src="" />
      </pan-gesture-handler> 
    </view>
    
    2023-08-07
    有用 1
    回复
登录 后发表内容