uni-app onShareAppMessage中path带有参数,但其他人打开后获取不到传参内容

uni-app onShareAppMessage中path带有参数,但其他人打开后获取不到传参内容

开发环境 版本号 项目创建方式
Mac 10.15.7 HBuilderX
3.2.6
1.05.2107221
8.0.9

示例代码:

onShareAppMessage() {
	let routeDeep = getCurrentPages().length - 1
	let parentuserid = uni.getStorageSync('userinfo').userid  //推荐人userid,分享时为本人userid
	let pageroute = getCurrentPages()[routeDeep].route + "?parentuserid="+parentuserid  

	return {  
	  path: pageroute,  
	  title:'分享的标题',  
	  content: '',  
	  imageUrl: ''  
	}  
}

其他人打开后监测parentuserid代码就在onLoad中执行的
onLoad(e) {  
	console.log(e)  
}

更多关于uni-app onShareAppMessage中path带有参数,但其他人打开后获取不到传参内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

好几天了,领导们看看?

更多关于uni-app onShareAppMessage中path带有参数,但其他人打开后获取不到传参内容的实战教程也可以访问 https://www.itying.com/category-93-b0.html


onShareAppMessage 中通过 path 传递参数,但在分享页面打开后无法获取到参数,通常是由于以下原因:

  1. 页面路径格式问题path 必须以 / 开头,且应使用绝对路径。你的代码中 getCurrentPages()[routeDeep].route 获取的路径可能不包含开头的 /,导致拼接后的路径格式不正确。建议手动添加 / 前缀,例如:

    let pageroute = '/' + getCurrentPages()[routeDeep].route + "?parentuserid=" + parentuserid
    
  2. 页面未在 pages.json 中注册:分享的页面路径必须在 pages.jsonpages 数组中注册,否则无法正常跳转和传参。请检查分享的目标页面是否已正确配置。

  3. 小程序端路径限制:部分小程序平台(如微信小程序)对分享路径有长度限制或特殊字符限制。确保 parentuserid 不包含空格、中文等特殊字符,必要时使用 encodeURIComponent 编码参数。

  4. 分享卡片缓存问题:小程序平台可能会缓存分享卡片,导致参数未更新。尝试修改参数值或清除小程序缓存后重新测试。

  5. onLoad 参数获取方式:你的 onLoad 中直接通过 e 打印参数是正确的。但需注意,如果页面是通过其他方式(如扫码或菜单)进入,e 可能为空。建议添加判空逻辑:

    onLoad(e) {
      if (e && e.parentuserid) {
        console.log('parentuserid:', e.parentuserid)
      }
    }
    

建议修改后的代码

onShareAppMessage() {
  let routeDeep = getCurrentPages().length - 1
  let parentuserid = uni.getStorageSync('userinfo').userid
  let route = getCurrentPages()[routeDeep].route
  // 确保路径以 / 开头,并对参数编码
  let pageroute = '/' + route + '?parentuserid=' + encodeURIComponent(parentuserid)
  
  return {
    path: pageroute,
    title: '分享的标题',
    content: '',
    imageUrl: ''
  }
}
回到顶部