短信跳转打开微信小程序的指定页面,可以携带参数

这篇具有很好参考价值的文章主要介绍了短信跳转打开微信小程序的指定页面,可以携带参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本项目具体需求是短信跳转同一个小程序的不同页面,可以带参数。使用云函数和h5页面,开发时使用静态网站调试,后期h5页面后端另外部署的。

不属于原创,只是在使用的过程中参考以下教程,最终达到效果。现在记录下自己的实施过程。

微信小程序云函数使用教程【超详细】小程序开发——微信外环境静态h5跳转小程序 | 微信开放社区微信小程序云函数使用教程【超详细】

云开发环境静态H5页面,跳转到不同小程序不同页面的实现 | 微信开放社区

微信外环境静态h5跳转小程序,如何传参?-CSDN博客

h5打开微信小程序指定页面-云函数处理 - 知乎

一.微信小程序云开发的使用过程

1.开通云开发服务、云开发权限设置、开通静态网站功能:

(1) 开通云开发服务,微信开发者工具——云开发

短信打开微信小程序并携带参数,微信小程序,小程序

创建云开发环境,设置环境名称、付费方式(默认预付费,可以选按量付费,有一定免费额度的,无论个人开发调试还是公司项目使用,选按量付费就好了)

短信打开微信小程序并携带参数,微信小程序,小程序

开通成功之后,概览界面右侧,能看到环境id,记住这个id,后边配置h5页面会用到。

短信打开微信小程序并携带参数,微信小程序,小程序

(2)设置云开发权限,设置——权限设置,未登录用户访问云资源权限设置,勾选未登录用户访问权限:

短信打开微信小程序并携带参数,微信小程序,小程序

(3) 开通静态网站,菜单栏”更多“——静态网站——开通

短信打开微信小程序并携带参数,微信小程序,小程序

短信打开微信小程序并携带参数,微信小程序,小程序

扫码确认,等初始化,可能需要点时间,无需等待,开通成功会有短信通知,可以先进行后边步骤

短信打开微信小程序并携带参数,微信小程序,小程序

2.设置云开发环境

cloudfunctions 目录上边单击鼠标右键,设置当前环境,选择前边创建的云环境

短信打开微信小程序并携带参数,微信小程序,小程序

二.微信小程序云函数的使用过程

1. 在根目录下“project.config.json”文件,添加字段

"cloudfunctionRoot": "cloudfunctions/",

短信打开微信小程序并携带参数,微信小程序,小程序

2.在根目录下“app.json”文件,添加字段"cloud":true

"cloud":true,

短信打开微信小程序并携带参数,微信小程序,小程序

3.新建云函数

(1)新建存储云函数的文件夹

在根目录自己下创建文件夹"cloudfunctions",由于刚才的配置,文件夹下会有个云的图标。

短信打开微信小程序并携带参数,微信小程序,小程序

(2)新建云函数
短信跳转小程序云函数名称一定要是public,我使用别的名称后来跳转打不开找售后帮我查的,说这个函数名是固定的(--没写replace的地方不要改--)

请注意,这里的创建云函数不是在云开发控制台直接创建的,是需要通过小程序创建并部署的。虽然控制台也可以直接创建,但是不能直接用。(实测方法a可以)

a.方法一:右击刚才新建的文件夹"cloudfunctions",会有“新建Node.js云函数”选项,填写函数名称后,会自动生成一个文件目录,里面有三个文件夹(config.json,index.js,package.json)。这里创建的函数名称叫"public"。

短信打开微信小程序并携带参数,微信小程序,小程序

b.方法二:参考 微信外环境静态h5跳转小程序,如何传参?-CSDN博客

官网云函数pubilc:点击下载

 打开h5-open-miniprogram-cloudfunctions文件夹,将里面的public文件夹复制到云开发小程序中的 cloudfunctions 目录下。

短信打开微信小程序并携带参数,微信小程序,小程序

短信打开微信小程序并携带参数,微信小程序,小程序

(3)修改public文件夹里面的index.js文件

该index.js文件的具体内容,将 getUrlscheme函数中的path改成要调起小程序的页面路径。

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  switch (event.action) {
    case 'getUrlScheme': {
      return getUrlScheme(event.path,event.query)
    }
  }
  return 'action not found'
}

async function getUrlScheme(path,query) {
  return cloud.openapi.urlscheme.generate({
    jumpWxa: {
      path: path || '/pages/login', // <!-- replace -->
      query:query|| '',
    },
    // 如果想不过期则置为 false,并可以存到数据库
    isExpire: false,
    // 一分钟有效期
    expireTime: parseInt(Date.now() / 1000 + 60),
  })
}

4. 安装依赖

鼠标放到public目录上,单击鼠标右键,快捷菜单选中"在内建终端中打开",然后运行 npm install 安装依赖

短信打开微信小程序并携带参数,微信小程序,小程序

5.上传部署云函数

public 目录上,单击鼠标右键,选择”上传并部署:云端安装依赖(不上传node_modules),

短信打开微信小程序并携带参数,微信小程序,小程序

部署后,打开云开发控制台——云函数,就能看到前边创建部署的云函数了:等几秒钟,云函数就能部署成功了。

短信打开微信小程序并携带参数,微信小程序,小程序

6.修改云函数权限

云开发控制台——云开发——云开发权限,自定义安全规则,点击右侧的“修改”

短信打开微信小程序并携带参数,微信小程序,小程序

点允许所有用户访问,这样所有用户都可以免鉴权通过h5调起小程序了

短信打开微信小程序并携带参数,微信小程序,小程序

可选的进阶的云函数安全规则模板(只放开了让 public 云函数支持未登录访问)

{
  // * 为通配符,表示对所有函数适用
  "*": {
    // invoke 表示调用权限控制
    // auth 包含鉴权信息,如果是未登录模式,则 auth == null
    "invoke": "auth != null"
  },
  // 函数名,该规则优先级会高于通配符
  "public": {
    // 表示允许所有来源调用,包括未登录用户
    "invoke": true
  }
}

 7.编写html文件

编辑官方下载的 jump-mp.html 文件,将所有标注<!-- replace -->的地方修改成真实的内容就好了。关键修改点在这三处:

短信打开微信小程序并携带参数,微信小程序,小程序

短信打开微信小程序并携带参数,微信小程序,小程序

短信打开微信小程序并携带参数,微信小程序,小程序

因为项目跳转了同一小程序的不同页面,最后方案是短信里面添加一个标识type,然后不同type跳转不同地址。

主要参考了

云开发环境静态H5页面,跳转到不同小程序不同页面的实现 | 微信开放社区

实际代码如下 

<html>

  <head>
    <title>打开小程序</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
    <script>
      window.onerror = e => {
        console.error(e);
        alert('发生错误:' + e);
      }
    </script>
    <!-- 调试用的移动端 console -->
    <!-- <script src="https://cdn.bootcss.com/eruda/1.2.4/eruda.min.js"></script> -->
    <!-- <script>eruda.init();</script> -->
    <script>
      function getQueryParam(key) {
        const reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i');
        const r = window.location.search.substr(1).match(reg);
        if (r != null) {
          return decodeURI(r[2]);
        }
        return null;
      }
      //设置 资源环境ID以及绑定的appid
      var resAppId = ''; // <!-- replace -->
      var resEnv = ''; // <!-- replace -->
      
      var launchIdx = getQueryParam('type');
      var pagepath = ''
      var Id = getQueryParam('id')
      var queryKey = 'Id=' + Id
      if (launchIdx == 0) {
        pagepath = '/pages/a'
      } else {
        pagepath = '/pages/f'
      }
    </script>

    <!-- weui 样式 -->
    <link rel="stylesheet" href="https://res.wx.qq.com/open/libs/weui/2.4.1/weui.min.css" />
    <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
    <script src="https://res.wx.qq.com/open/js/cloudbase/1.1.0/cloud.js"></script>

    <style>
      .hidden {
        display: none
      }

      .full {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0
      }

      .public-web-container {
        display: flex;
        flex-direction: column;
        align-items: center
      }

      .public-web-container p {
        position: absolute;
        top: 25%
      }

      .public-web-container a {
        position: absolute;
        bottom: 40%
      }

      .wechat-web-container {
        display: flex;
        flex-direction: column;
        align-items: center
      }

      .wechat-web-container div {
        position: absolute;
        top: 20%
      }

      .wechat-web-container wx-open-launch-weapp {
        position: absolute;
        bottom: 40%;
        left: 0;
        right: 0;
        display: flex;
        flex-direction: column;
        align-items: center
      }

      .desktop-web-container {
        display: flex;
        flex-direction: column;
        align-items: center
      }

      .desktop-web-container p {
        position: absolute;
        top: 40%
      }
    </style>
  </head>

  <body>
    <div class="page full">
      <div id="public-web-container" class="hidden">
        <p>正在唤起微信小程序...</p>
        <a id="public-web-jump-button" href="javascript:" class="weui-btn weui-btn_primary weui-btn_loading" onclick="openWeapp()">
          <span id="public-web-jump-button-loading" class="weui-primary-loading weui-primary-loading_transparent"><i
              class="weui-primary-loading__dot"></i></span>点击唤起小程序</a>
      </div>
      <div id="wechat-web-container" class="hidden">
        <div style="width: 100%;">
          <img style="width: 60px;height:60px;border-radius: 50%;display: block;margin: 0 auto;" src='https://cdn.lawbal.com/lvlian/login.svg'></img>
          <p style="color:#17908E;text-align:center;margin:auto;">小程序名称</p>
        </div>
        <script>
          document.write('<wx-open-launch-weapp id="launch-btn" username="' + '小程序名称' + '" path="' +
            pagepath + '">');
          document.write(
            ' <template><button style="width: 240px; height: 45px; text-align: center; font-size: 17px; display: block; margin: 0 auto; padding: 8px 24px; border: none; border-radius: 4px; background-color: #07c160; color:#fff;">打开微信小程序</button></template>'
          );
          document.write('</wx-open-launch-weapp>');
        </script>
      </div>
      <div id="desktop-web-container" class="hidden">
        <p class="font-size:26px;">请在手机上打开本链接</p>
      </div>
    </div>
    <script>
      function docReady(fn) {
        if (document.readyState === 'complete' || document.readyState === 'interactive') {
          fn();
        } else {
          document.addEventListener('DOMContentLoaded', fn);
        }
      }
      docReady(async function() {
        var ua = navigator.userAgent.toLowerCase()
        var isWXWork = ua.match(/wxwork/i) == 'wxwork';
        var isWeixin = !isWXWork && ua.match(/MicroMessenger/i) == 'micromessenger';
        var isMobile = isDesktop = false;
        if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
          isMobile = true
        } else {
          isDesktop = true
        }
        var isAndroid = ua.indexOf('android') > -1 || ua.indexOf('Adr') > -1;
        var isOS = ua.indexOf('iPhone') > -1 || ua.indexOf('iPad') > -1 || ua.indexOf('Mac') > -1;
        if (isWeixin) {
          var containerEl = document.getElementById('wechat-web-container');
          containerEl.classList.remove('hidden');
          containerEl.classList.add('full', 'wechat-web-container');

          var launchBtn = document.getElementById('launch-btn');
          launchBtn.addEventListener('ready', function(e) {
            console.log('开放标签 ready');
          });
          launchBtn.addEventListener('launch', function(e) {
            console.log('开放标签 success');
          });
          launchBtn.addEventListener('error', function(e) {
            console.log('开放标签 fail', e.detail);
          });
          wx.config({
            debug: false,
            appId: '', // <!-- replace -->
            timestamp: 0, // 必填,填任意数字即可
            nonceStr: 'nonceStr', // 必填,填任意非空字符串即可
            signature: 'signature', // 必填,填任意非空字符串即可
            jsApiList: ['chooseImage'], // 必填,随意一个接口即可
            openTagList: ['wx-open-launch-weapp'], // 填入打开小程序的开放标签名
          })

        } else if (isDesktop) {
          // 在 pc 上则给提示引导到手机端打开
          var containerEl = document.getElementById('desktop-web-container')
          containerEl.classList.remove('hidden')
          containerEl.classList.add('full', 'desktop-web-container')

        } else {
          //腾讯云开发的免鉴权调用
          var containerEl = document.getElementById('public-web-container')
          containerEl.classList.remove('hidden')
          containerEl.classList.add('full', 'public-web-container')

          var c = new cloud.Cloud({
            identityless: true,
            resourceAppid: resAppId, // 资源方宿主 小程序的AppID
            resourceEnv: resEnv, // 资源方环境ID
          })
          await c.init();

          window.c = c;
          var buttonEl = document.getElementById('public-web-jump-button')
          var buttonLoadingEl = document.getElementById('public-web-jump-button-loading')
          try {
            await openWeapp(() => {
              buttonEl.classList.remove('weui-btn_loading');
              buttonLoadingEl.classList.add('hidden');
            })
          } catch (e) {
            console.log('error', e)
            buttonEl.classList.remove('weui-btn_loading')
            buttonLoadingEl.classList.add('hidden');
            throw e
          }
        }
      })

      async function openWeapp(onBeforeJump) {
        var c = window.c
        const res = await c.callFunction({
          name: 'public', // 宿主环境中的云函数,注意开启权限
          data: {
            action: 'getUrlScheme',
            appid: '',<!-- replace -->
            path: pagepath,
            query: queryKey || '',
          },
        })
        if (onBeforeJump) {
          onBeforeJump();
        }
        location.href = res.result.openlink;
      }
    </script>
  </body>

</html>

  云环境Id,小程序开发工具点击云开发,右上角有个环境ID,复制就可以。

短信打开微信小程序并携带参数,微信小程序,小程序

 短信打开微信小程序并携带参数,微信小程序,小程序

主要参考小程序开发——微信外环境静态h5跳转小程序 | 微信开放社区 

 8.上传h5页面到云开发环境

云开发控制台——更多——静态网站——文件管理,点击上传文件,选择上边改好的h5页面即可

 短信打开微信小程序并携带参数,微信小程序,小程序

上传成功:

短信打开微信小程序并携带参数,微信小程序,小程序

9.测试验证、配置域名

静态网站窗口,选择”文件管理“,点击详情,可以看到已经下载地址,可以直接复制这个地址到手机浏览器中直接打开,如果前边操作没有遗漏的话,就能在浏览器中调起微信小程序了。

10.后续我这边使用的短信地址是通过阿里云部署的,就不补充相关了

三.最近要解绑换绑新的腾讯云账号,云开发部分需要重新开通,云环境需要重新设置一下。

换绑腾讯云账号只影响小程序云开发部分的功能。

以下是官方文档:

账号相关问题-云开发 CloudBase-腾讯云

遇到问题,静态网站--文件管理--详情,然后复制下载地址,这个地址在微信对话框里面打不开,从微信对话框跳转自带浏览器可以打开。

然后我就试着部署index.html文件到公司的服务器,部署好的地址在微信对话框里面打不开,从微信对话框跳转自带浏览器可以打开,从短信跳转自带浏览器也可以打开。

先这样吧文章来源地址https://www.toymoban.com/news/detail-853585.html

到了这里,关于短信跳转打开微信小程序的指定页面,可以携带参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 猿创征文|微信小程序扫描二维码如何跳转小程序内指定页面并传递参数给目标页面?

    实际项目中,用户通过扫描打印小票上的二维码,自己实现开具发票功能,那么这里就需要用户在扫描小票二维码后,跳转小程序内添加开票信息并提交后台开具发票的页面。 首先二维码的本质就是一个链接地址。 其次登录微信小程序开放平台,设置 扫普通链接二维码打开

    2023年04月08日
    浏览(38)
  • uniapp微信小程序全局所有页面放置一个跳转首页的可以拖动的悬浮按钮

    把上面的静态解构放到src/components/movable/movable.vuewe文件作为自定义组件 此处用的到时uniapp的movable-area组件和内嵌 movable-view 组件,其中movable-area表示可拖动的范围,movable-view用于指示可拖动的区域。 参照文档:movable-area | uni-app官网     movable-view | uni-app官网 想要实现每个页

    2024年02月03日
    浏览(36)
  • 【微信小程序】扫描外部二维码、小程序码进入并获得携带参数,使用参数跳转到指定页面

    您需要使用微信提供的跳转链接和相关参数。以下是实现的步骤: 生成跳转链接:使用以下链接格式生成跳转链接,其中 APPID 是您的小程序的 AppID, PATH 是您要跳转的页面路径, QUERY 是您要传递的参数。 生成二维码:使用生成的跳转链接生成二维码。您可以使用在线的二维

    2024年02月08日
    浏览(45)
  • uniapp微信小程序 页面跳转传参(uni.switchTab传参无法获取,uni.reLaunch传参可以获取)

      因为是tab页面,我首先想到的就是通过:uni.switchTab进行页面跳转。 代码如下: 然后在首页的onShow生命周期函数中进行监听路由参数。 代码如下: 结果uni.switchTab跳转的页面是不能够将路由参数传递到页面中的。  这样就可以拿到路由中的参数了。  这样问题就解决了。

    2024年02月10日
    浏览(43)
  • 短信链接跳转微信小程序

    微信官方文档 通过服务端接口或在小程序管理后台生成 URL Scheme 后,自行开发中转H5页面。 将带有中转H5链接的短信内容通过开发者自有的短信发送能力或服务商的短信服务进行投放,实现短信打开小程序。 通过服务端接口生成 URL Link 。 直接将带有URL Link的短信内容通过开

    2024年01月23日
    浏览(44)
  • 短信打开微信小程序

    以前,微信提供了URL Link接口能力,可以直接 生成https://wxaurl.cn/*TICKET*的短链接,通过短信发给用户后,用户可以直接打开小程序。链接还可永久有效。 去年4月,不再永久有效了,还可能被第一个人打开,其他人再打开链接会提示链接已用。当时不得不进行一个紧急修复。

    2024年02月15日
    浏览(71)
  • php版 短信跳转微信小程序

    实现这功能首先,小程序端添加业务域名  php代码 下面使用js的 location.href location.href = \\\'https://***.***.com\\\' 我前端用的是uniapp,vue的话要安装axios或者jq 短信内容放前端链接地址,这样就可以通过打开游览器跳转到小程序了 注意 1.必须是发布的小程序才会被唤醒 2.接口有上限,

    2024年02月09日
    浏览(37)
  • 微信短链跳转到小程序指定页面调试

    首先说下背景:后端给了短链地址,但是无法跳转到指定页面。总是在小程序首页。指定的页面我们是h5页面。排查步骤如下: 1、通过快速URL Scheme 编译。上部普通编译 下拉找到此选项。 、 2、按照小程序的要求的URL Scheme输入。另外后端给的短链打开之后,拷贝尾缀作为t

    2024年02月10日
    浏览(37)
  • H5跳转微信小程序,通过获取URL Scheme,实现短信跳转小程序,微信跳转小程序,邮件跳转小程序,外部链接跳转小程序

    H5链接跳转小程序有2种方式: 第一种:通过微信官方提供的标签wx-open-launch-weapp,打开小程序 第二种:通过获取URL Scheme实现链接跳转小程序 官方文档https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html#21 注意: 开放范围:针对非个人主体小程序开放。 1、缺点 1)

    2024年02月13日
    浏览(44)
  • 实现微信扫一扫跳转到小程序指定页面

    使用场景:例如我们经常用到的共享充电宝,首先我们需要使用手机上的微信,打开微信扫一扫,扫描共享充电宝上的二维码,当我们扫描二维码后微信会直接跳转到小程序内的某个页面(不一定是首页)。像其他的一些共享设备也是一样的运行模式。那么怎么样才能通过微

    2024年02月02日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包