uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数

本文详细介绍了如何在uniapp中配置微信分享功能,自定义基座测试第三方SDK,并实现App端跳转微信小程序以及小程序间的交互。包括配置manifest.json、微信开放平台关联小程序和代码实现步骤。

本文是uniapp打包成安卓App。

一、注意事项

1、用到了分享功能,在打包App时,需要配置manifest.json:App 模块配置->Share。按照提示填写微信分享的信息,appid的获取参考我的另一篇文章:uniapp项目 App端实现微信登录、QQ登录

2、因为涉及到第三方 SDK 的配置,需要打包自定义基座进行测试。


3、需要在微信开放平台开启APP跳转小程序,并关联相应的小程序。
微信开放平台 -> 移动应用 -> 查看 -> 最下面的关联小程序信息,配置关联小程序。

二、代码实现

1、App端跳转微信小程序

注意:与微信小程序跳转微信小程序不同,App端不支持 uni.navigateToMiniProgram,App平台打开微信小程序,需要使用plus.share的 launchMiniProgram

appJumpMiniPro() {
  // 获取分享服务列表
  plus.share.getServices(
    res => {
      let sweixin = '';
      for (var i = 0; i < res.length; i++) {
        let t = res[i];
        if (t.id == 'weixin') {
          sweixin = t;
        }
      }
      if (sweixin) {
        sweixin.launchMiniProgram(
          {
            id: 'gh_32620xxxxxx',  // 要跳转小程序的原始ID
            path: `pages/tslogin/tslogin?do=login&appName=暴漫APP`,  //  可带参数
            type: 2   // 微信小程序版本类型可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
          },
          // 目标小程序点击返回App后执行的回调,在此接收微信小程序传递的参数
          res2 => {
            console.log(typeof res2, res2)
            // res2是微信小程序传递回来的参数 类型为string 需转化为js对象使用
            let result = JSON.parse(res2)
            console.log(result) 
            // 拿到参数后执行你需要的逻辑    
            ......   
          },
          err2 => {
            console.log(err2)
          }
        );
      }
      else {
        uni.showToast({
          icon: 'none',
          title: '当前环境不支持微信操作!'
        })
      }
    },
    err => {
      console.log(err)
    }
  )
}

2、微信小程序端返回App端

下面的代码基于微信小程序也是uniapp开发的,原生的写法稍微有点不一样,详情见:打开 App | 微信开放文档

<template>
  <view class="page-container">
    <view class="">移动应用:{{appName}}</view>
    <button class="bottom" open-type="launchApp" :app-parameter="JSON.stringify(form)" @error="launchAppError">返回APP</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      appName: '',
      form: {
        cid: 4408111111111,
        libs: ['中山图书馆','广州图书馆','中山图书馆','广州图书馆']
      }
    }
  },
  onLoad(option) {
    console.log(option)
    this.appName = option.appName
  },
  methods: {
    launchAppError(e) {
      console.log(e.detail)
      uni.showToast({icon:'none', title:e.detail.errMsg})
    }
  }
}
</script>

第一次做这样的功能,记录一下。希望能帮到你。

完。记录于2021-11-11。

Uniapp开发的app跳转微信小程序,可通过以下几种方法实现: 方法一: ```javascript plus.share.getServices(res => { let wxx = null; wxx = res.find(item => item.id === 'weixin'); if (wxx) { wxx.launchMiniProgram({ id: "******",//微信小程序原生id path: "pages/main/index", // 打开小程序的页面路径,默认跳转首页 type: 0 // 微信小程序版本类型,可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。 }); } else { uni.showToast({ title: '请安装微信', icon: 'none' }); } }, err => {}); ``` 此方法利用`plus.share.getServices`获取分享服务,找到微信服务后,调用`launchMiniProgram`方法来唤起指定的微信小程序,若未找到微信服务则提示安装微信 [^2]。 方法二: ```javascript plus.share.getServices(function(res) { var sweixin = null; for (var i = 0; i < res.length; i++) { var t = res[i]; if (t.id == 'weixin') { sweixin = t; } } if (sweixin) { sweixin.launchMiniProgram({ id: 'gh_8888888', //这里写你的小程序原始id(以gh开头) type: 0, //这里是不同的环境(默认0) path: '/pages/shop/index?storeId=123456' //这里是指定页的路径,如需传参直接字符串拼接(首页可以省略) }); } }, function(res) { console.log(JSON.stringify(res)); }); ``` 该方法同样是先获取分享服务,遍历找到微信服务,然后使用`launchMiniProgram`唤起微信小程序且可以指定小程序的原始id、版本环境以及跳转的页面路径和传递参数 [^3]。 方法三: ```javascript // #ifdef APP-PLUS plus.share.getServices( res => { let sweixin = null; for (let i in res) { if (res[i].id == 'weixin') { sweixin = res[i]; } } //唤醒微信小程序 if (sweixin) { sweixin.launchMiniProgram({ id: 'ghXXXXX', //微信开放平台 --- 绑定的微信小程序的 --- 原始id type: 2, //小程序版本 0-正式版; 1-测试版; 2-体验版。 path: 'pages/index/index' //小程序的页面,用传的参数在小程序接值判断跳转指定页面 }); } else { console.log("未安装微信逻辑"); } } ); // #endif ``` 此方法使用了条件编译,仅在APP环境下执行获取分享服务唤起微信小程序的操作,若找到微信服务则唤起指定版本和页面的微信小程序,未找到则输出未安装微信的提示 [^4]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值