uni-app中h5+api plus.push.getClientInfo().clientid未获取cid返回的是字符串的null

uni-app中h5+api plus.push.getClientInfo().clientid未获取cid返回的是字符串的null

开发环境 版本号 项目创建方式
Windows 10 HBuilderX

操作步骤:

h5+api plus.push.getClientInfo().clientid 未获取到cid返回的是字符串的null 这个问题也真够坑的啊 直接用if(cid) 这样不管获取成功还是失败都会是真

预期结果:

h5+api plus.push.getClientInfo().clientid 未获取到cid返回的是字符串的null 这个问题也真够坑的啊 直接用if(cid) 这样不管获取成功还是失败都会是真

实际结果:

h5+api plus.push.getClientInfo().clientid 未获取到cid返回的是字符串的null 这个问题也真够坑的啊 直接用if(cid) 这样不管获取成功还是失败都会是真

bug描述:

h5+api plus.push.getClientInfo().clientid 未获取到cid返回的是字符串的null 直接用if(cid) 这样不管获取成功还是失败都会是真 这应该是属于bug吧


更多关于uni-app中h5+api plus.push.getClientInfo().clientid未获取cid返回的是字符串的null的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app中h5+api plus.push.getClientInfo().clientid未获取cid返回的是字符串的null的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中使用H5+ API时,plus.push.getClientInfo().clientid返回字符串"null"而非JavaScript原生null值,这确实是一个需要注意的兼容性问题。由于"null"在条件判断中为真值,直接使用if(cid)会导致逻辑错误。

解决方案:

  1. 严格类型判断:使用cid === nullcid === "null"进行精确比较。
  2. 综合校验:结合长度、类型和值进行判断:
    let cid = plus.push.getClientInfo().clientid;
    if (cid && cid !== "null" && cid.length > 0) {
        // 正常处理逻辑
    }
    
  3. 转换为原生null:通过正则或字符串替换将"null"转为null
    let cid = plus.push.getClientInfo().clientid.replace(/^"null"$/, null);
回到顶部