uni-app 编译打包快手小程序 点击订阅会报错

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 编译打包快手小程序 点击订阅会报错

信息类别 内容
产品分类 uniapp/小程序
PC开发环境 Windows
操作系统版本 10
HBuilderX类型 正式
HBuilderX版本 4.24
第三方开发者工具版本 1.58
项目创建方式 HBuilderX

示例代码:

clickMe: function(event) {
console.log("进来点击事件了");
const res1 = ks.requestSubscribeMessage({
tmplIds: ["ZwRAPpUOX0NTu-ddwBSRk", "Of1BwSwFRguaM6eFSKu_z"]
});
if (res1.YOUR_TEMPLATE_ID === "ACCEPT") {
console.log("同意了订阅");
} else {
console.log("拒绝了订阅");
}
return false;
},

操作步骤:

点击按钮绑定的点击事件,进去点击事件方法了,但是快手那边报错了

预期结果:

点击按钮绑定的点击事件,进去点击事件方法了,订阅成功或失败(失败给出具体错误提示)

实际结果:

点击按钮绑定的点击事件,进去点击事件方法了,但是快手那边报错了

bug描述:

详情在快手问答平台 https://developers.kuaishou.com/topic?bizType=miniprogram&tid=25508&


12 回复

看了快手问答的帖子,方法应该在methods里面啊,不能和onload平级。


在methods里面没错,也进来这个方法了,但是会报错。试过了快手原生的,就没有报错,而且原生的那个点击事件方法跟methods,onload是平级的

我看看这个问题,你把复现压缩包在这个帖子里上传一下,我没权限下载你在快手社区里提供的 rar 压缩包.
更新: 经过搜索这个问题,在快手社区里发现里一些类似的错误报错。观察文档里订阅消息官方有一条要求需要注意

tip: 调用订阅必须发生在用户tap操作或者showModal的confirm操作之后

经过我测试 showModal 在弹窗里 confrim 之后调用订阅信息正常。经过测试使用 button 直接订阅有问题,可能需要前置的条件,比如用户在某个订阅条件下才能订阅
uni.showModal({
title: ‘提示’,
content: ‘要订阅了’,
success: function(res) {
if (res.confirm) {
console.log(‘用户点击确定’);
const res1 = ks.requestSubscribeMessage({
tmplIds: ["", “”],
success(res) {
console.log(‘ok’,res)
},
fail() {
console.log(‘fail’)
}
});

                    } else if (res.cancel) {  
                        console.log('用户点击取消');  
                    }  
                }  
            })<br>

上传了,在下面

运行unpackage\dist\dev\mp-kuaishou在快手开发者工具就能复现

看了没?咋样了

回复 y***@qq.com: 可能是快手有限制,经过我测试使用 showModal 在 confirm 里可以正常订阅信息

回复 DCloud_UNI_OttoJi: showModal 在 confirm 里可以正常订阅信息 是可以,有没有办法解决click事件直接调ks.requestSubscribeMessage并且不报错,这样比还需要弹框确认的体验效果更好点

回复 DCloud_UNI_OttoJi: 可能需要前置的条件 button模式下,测试出来这个前置的条件是什么没? 直接用快手开发者工具写了个原生button demo,又是成功的。uniapp打包编译后的就是会有问题

回复 y***@qq.com: 不阻塞开发就行,直接使用 button 的写法还得在再看看

demo附件上传

针对您提到的在uni-app中编译打包快手小程序时,点击订阅功能出现报错的问题,这里提供一个可能的解决方案示例。由于具体的错误信息未给出,我将基于常见的订阅功能实现和可能遇到的错误点进行说明。

首先,确保您已经在快手小程序平台正确配置了订阅消息的权限,并且获取了相应的模板ID。接下来,我们将通过代码示例展示如何在uni-app中实现订阅消息功能,并处理可能的错误。

步骤一:引入快手小程序SDK

在uni-app项目中,确保已经正确引入了快手小程序的SDK。通常,这涉及到在manifest.json中配置快手小程序的相关信息。

步骤二:请求订阅权限

在用户触发订阅动作(如点击按钮)时,调用快手小程序的订阅消息接口请求权限。以下是一个简单的代码示例:

// 假设这是在一个页面的methods中定义的函数
methods: {
  requestSubscription() {
    uni.requestSubscribeMessage({
      tmplIds: ['your_template_id'], // 替换为您的模板ID
      success(res) {
        console.log('订阅成功', res);
        // 这里可以处理订阅成功后的逻辑,比如跳转到其他页面或显示提示信息
      },
      fail(err) {
        console.error('订阅失败', err);
        // 这里处理订阅失败的情况,可能是用户拒绝了订阅请求
      }
    });
  }
}

步骤三:处理错误

fail回调中,您可以根据错误信息进行相应的处理。常见的错误包括用户拒绝订阅、模板ID无效等。您可以通过err.errMsg来区分不同的错误类型,并给出相应的用户提示。

步骤四:编译与调试

在本地完成代码编写后,使用uni-app的编译工具将项目打包为快手小程序。在快手小程序开发者工具中打开项目,进行调试和测试。

注意事项

  • 确保您的快手小程序账号已经通过了订阅消息的审核,并且模板ID是有效的。
  • 在请求订阅权限之前,最好先检查用户是否已经订阅过该模板,避免重复请求。
  • 在处理用户拒绝订阅的情况时,应尊重用户的选择,不要过度打扰用户。

由于您没有提供具体的错误信息,以上代码和步骤是基于常见情况的通用解决方案。如果问题依旧存在,建议您查看快手小程序的开发文档和uni-app的社区论坛,寻找更具体的解决方案或错误信息。

回到顶部