fakefish
fakefish
  • 发布:2022-11-17 20:23
  • 更新:2023-05-16 00:30
  • 阅读:399

【报Bug】uniapp vue3+vite打包的字节小程序无法消息订阅,vue2+webpack的正常

分类:uni-app

产品分类: uniapp/小程序/字节跳动

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macos12.2.1

第三方开发者工具版本号: 3.3.8

基础库版本号: 2.72.0.3

项目创建方式: CLI

CLI版本号: 3.0.0

示例代码:
<template>  
    <div>  
        <div @tap="onSubscribe">subscribe</div>  
        <button @tap="onSubscribe">subscribe</button>  
    </div>  
</template>  
<script>  
export default {  
    data() {  
        return {}  
    },  
    methods: {  
        onSubscribe() {  
            tt.requestSubscribeMessage({  
                tmplIds: ['MSG1297604f2c55d7e308bac3c9bd724638349fdb315908'],  
                complete: (res) => {  
                    console.log(res)  
                    tt.showModal({  
                        title: "订阅完成",  
                        content: JSON.stringify(res),  
                    });  
                },  
            })  
        }  
    }  
}  
</script>

操作步骤:

点击页面按钮

预期结果:

控制台显示订阅成功的消息

实际结果:

控制台显示订阅失败,原因提示需要用户点击事件

bug描述:

vue3+vite的消息订阅在抖音小程序上提示{"errMsg":"requestSubscribeMessage:fail must be invoked by user tap gesture","errNo":21501},相同的代码用vue2+webpack可以正常订阅,推断应该是字节在消息订阅的事件判断上比较严格,导致vite编译出来的代码判断不出来是不是在tap事件里,但我不确定是编译的问题还是字节他们设计的问题。

2022-11-17 20:23 负责人:无 分享
已邀请:
fakefish

fakefish (作者) - fakefish

https://ask.dcloud.net.cn/question/142353 重复bug 找到解决办法了

y***@126.com

y***@126.com

虽然问题早在https://ask.dcloud.net.cn/question/142353解决了,但是还需要记录一个坑:
requestSubscribeMessage不能在异步回调中进行调用。否则也会报这个错误。
那意味着,你不能在用户进行订阅按钮操作时通过服务端拉取tempIds后再进行订阅。而应该在页面载入时就进行tempIds的拉取。

要回复问题请先登录注册