精华内容
下载资源
问答
  • 实现通过短信中的链接打开小程序
    千次阅读
    2021-01-26 23:24:15

    在开发小程序的过程中,我遇到了这样的一个需求,通过短信中的链接打开一个h5,这个h5可以实现点击跳转小程序,或者扫码跳转,并且将链接上的参数填充到小程序界面上。下面来描述一下我的开发步骤及实现方案。

    这个需求大部分的功能是基于 h5 页面实现的,所以首先进行对 h5 页面的攻破。样式部分不多说,开始攻破两大功能点。

    1. 通过点击按钮跳转小程序

    点击按钮跳转即通过链接实现跳转,这里使用了小程序官方 api - urlscheme.generate

    在这个api中提到获取 URL Scheme 需要 access_token。

    access_token,是小程序全局唯一后台接口调用凭据。需要通过官方 api - auth.getAccessToken 去调取,文档中提示 access_token 有效期是 2个小时,所以我将获取的 access_token 存储在 redis 中,并设定过期时间,避免反复调用造成 access_token 刷新,产生不必要的冲突。

    下面是获取 accessToken 的代码实现:

    const getAccessToken = (appId, appSecret) => {
        return new Promise((resolve, reject) => {
            // 从 redis 中查找是否有 accessToken,如果 accessToken 过期,则获取不到 accessToken
            getRedisData(appId).then((accessToken) => {
                if (!!accessToken) {
                    // 有 accessToken 则直接返回
                    resolve(accessToken);
                } else {
                    // 没有则通过接口重新获取 accessToken
                    request({
                        url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`,
                        method: 'GET',
                        timeout: 5000
                    }, (err, response, body) => {
                        body = JSON.parse(body);
                        if (err || !body) reject({errCode: -10, errInfo: err.toString()});
                        if (body.access_token) {
                            let accessToken = body.access_token;
                            // 获取后将 accessToken 存储在 redis 中,并设定过期时间,如果过期,则获取不到 accessToken
                            setRedisDataEx(appId, accessToken, body.expires_in);
                            resolve(accessToken);
                        } else {
                            reject({errCode: body.errcode, errInfo: body.errmsg});
                        }
                    });
                }
            });
        });
    }
    

    下面是获取 URL Scheme 代码实现:

    const getGenerateScheme = (req, res) => {
        let { tenantCode, ...rest } = req.body;
        // rest 为文档中的剩余参数
        let cfg = config[tenantCode]; // cfg中 存储了小程序的 appId 及 appSecret
        if (!cfg) return res.send(getErrInfo(errCode.ERR_PARAMETER_UNAVAILABLE, 'tenantCode'))
        
        let { appId, appSecret } = cfg
        getAccessToken(appId, appSecret).then((accessToken) => { // 获取 accessToken
            const params = {
                ...rest
            }
            request({
                url: `https://api.weixin.qq.com/wxa/generatescheme?access_token=${accessToken}`,
                method: 'POST',
                timeout: 5000,
                headers: {
                    'content-type': 'application/json',
                },
                body: JSON.stringify(params)
            }, (err, response, body) => {
                body = JSON.parse(body);
                if (err || !body) return res.send({errCode: -10, errInfo: err.toString()});
                if (body.openlink) {
                    // 获取跳转链接 openlink
                    let openlink = body.openlink;
                    return res.send({errCode: 0, result: openlink});
                } else {
                    return res.send({errCode: body.errcode, errInfo: body.errmsg});
                }
            });
        }).catch((err) => {
            return res.send(err);
        });
    }
    

    上述代码中 rest,即为文档中的参数。

    调用 getGenerateScheme 接口后即可获得 URL Scheme,如:weixin://dl/business/?t=LcoXo1wSXIq

    iOS系统支持识别URL Scheme,可在短信等应用场景中直接通过Scheme跳转小程序。
    Android系统不支持直接识别URL Scheme,用户无法通过Scheme正常打开小程序,我们需要使用H5页面中转,再跳转到Scheme实现打开小程序,跳转代码示例如下:

    location.href = 'weixin://dl/business/?t=LcoXo1wSXIq
    该跳转方法可以在打开H5时立即调用,也可以在用户触发事件后调用。

    2. 通过生成的二维码图片扫码跳转小程序

    生成二维码需要用到官方 api - wxacode.getUnlimited
    下面是获取带参小程序二维码图片代码:

    const getWxaCode = (req, res) => {
        let { tenantCode, ...rest } = req.body;
        // rest 为文档中的剩余参数
        let cfg = config[tenantCode];
        if (!cfg) return res.send(getErrInfo(errCode.ERR_PARAMETER_UNAVAILABLE, 'tenantCode'))
        
        let { appId, appSecret } = cfg; // cfg中 存储了小程序的 appId 及 appSecret
        getAccessToken(appId, appSecret).then((accessToken) => { // 获取 accessToken
            const params = {
                ...rest
            }
            request({
                url: `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${accessToken}`,
                method: 'POST',
                timeout: 5000,
                headers: {
                    'content-type': 'image/jpeg',
                },
                encoding: null,
                body: JSON.stringify(params)
            }, (err, response, body) => {
                if (err || !body) return res.send({errCode: -10, errInfo: err.toString()});
                if (body) {
                    const type = response.headers['content-type'];
                    const img = `data:${type};base64,${body.toString('base64')}`;
                    return res.send({errCode: 0, result: img});
                }
            });
        }).catch((err) => {
            return res.send(err);
        });
        
    }
    

    这里返回的 body 是 图片 Buffer 文件,Buffer是一个像Array的对象,但它主要用于操作字节,也就是二进制数据,它的元素为16进制的两位数,即0到255的数值。

    request 发送请求的编码格式 encoding,会默认为 UTF-8,而对于不能识别的byte串会解码成�,通过将encoding设为null,也就不对原始数据编码,保持原始的二进制图片数据,即可得到 Buffer 文件的正确格式。

    获取到 Buffer 文件后我又将其转换成 base64 的格式,以便前端直接使用。

    至此这个 h5 的功能基本完成点击 链接 看看效果吧!如果如要通过短信发送打开,那么将长链接转换成短链接通过短信发送出去即可。

    3. 接收跳转参数

    通过接口获取的链接及二维码,在跳转时会将其余参数转换成页面 ? 后面的部分,形如 page='pages/index/index?foo=bar'。我们可以在小程序的 App.onLaunch、App.onShow 和 Page.onLoad 的回调函数中获取到。


    本文首发于我的博客 mogii’blog 欢迎大家光临~

    更多相关内容
  • h5打开小程序的方法 总结

    千次阅读 2021-07-12 20:36:31
    t=加scheme码生成一个链接,跳转进入小程序,参数在生成scheme码时就要固定,适合在短信、邮件、微信外网页跳转小程序并传固定参数的情况下使用 wx-open-launch-weapp: 需要对接微信的jssdk,获取wx-open-launch-...

    两种方法,一种是通过Url Scheme进行跳转,另一种是通过wx-open-launch-weapp标签进行跳转

    1. Url Scheme: 需要生成scheme码,weixin://dl/business/?t=加scheme码生成一个链接,跳转进入小程序,参数在生成scheme码时就要固定,适合在短信、邮件、微信外网页跳转小程序并传固定参数的情况下使用

    2. wx-open-launch-weapp: 需要对接微信的jssdk,获取wx-open-launch-weapp标签权限后才可以使用,可以在生成标签前更改参数,适合在项目中跳转小程序使用


    以下是使用方法

    Url Scheme方法

    官方文档

    生成小程序的scheme链接,通过scheme链接跳转小程序

    优点:该方法可以实现短信、邮件、微信外网页跳转小程序(短信打开h5链接,通过h5作为中介,跳转到小程序)

    缺点:
    该方法每一个scheme码只能对应固定的传参
    单个小程序每日生成 Scheme 上限为50万个,有效时间超过31天的 Scheme 或永久有效的 Scheme 为长期有效Scheme,单个小程序总共可生成长期有效 Scheme 上限为10万个,有效时间不超过31天的 Scheme 为短期有效Scheme,单个小程序生成短期有效 Scheme 不设上限

    1. 打开微信公众平台,登录后在右上角找到生成 Url Scheme,输入相应的路径和参数就可以了
      在这里插入图片描述
      在这里插入图片描述

    2. 在h5中跳转weixin://dl/business/?t=你的scheme码就可以了

    因为浏览器支持的原因,部分浏览器不支打开后自动跳转,可以做一个点击跳转的按钮供用户手动跳转

    例:

    <body>
        <div class="box">
            正在跳转...
            <a href="weixin://dl/business/?t=你的scheme码" class="button">点击手动跳转</div>
        </div>
        <script>
            function toWx() {
                location.href = 'weixin://dl/business/?t=你的scheme码'
            }
            window.onload = function () {
                toWx()
            }
        </script>
    </body>
    

    wx-open-launch-weapp方法

    官方文档

    1. 首先需要绑定JS接口安全域名

    【公众号设置】->【功能设置】->【JS接口安全域名】-> 输入要配置的域名 -> 将文件给后端放到服务器上
    在这里插入图片描述
    在这里插入图片描述

    1. 接jssdk,调用wx.config获取权限,注意要写openTagList: ["wx-open-launch-weapp"]来获取标签

    wx.config 例:

    wx.config({
        debug: false,
        appId: xxxxxx,
        timestamp: xxxxxx,
        nonceStr: xxxxxx,
        signature: xxxxxx,
        jsApiList: [
            "onMenuShareTimeline",
            "onMenuShareAppMessage",
            "checkJsApi",
            "scanQRCode",
            "chooseImage",
            "previewImage",
        ],
        openTagList: ["wx-open-launch-weapp"],
    });
    

    详细的wx.config方法可参考之前的博文(之前的博文里没有写获取wx-open-launch-weapp,需要在项目中自己加上)

    1. 写DOM(例子使用的是VUE框架,原生或其他框架大同小异)
    <wx-open-launch-weapp
        id="launch-btn2"
        username="gh_小程序原始id"
        path="pages/index"
    >
        <script type="text/wxtag-template">
            <div style="width: 100%; height: 100%;">打开小程序</div>
        </script>
    </wx-open-launch-weapp>
    

    wx-open-launch-weapp中的节点会在页面加载完成后过一会才会显示,并且script标签生成的节点不会应用页面中css的样式,所以需要在节点中写样式或者写成下边这种方式

    ...
    <script type="text/wxtag-template">
        <style>.btn { padding: 12px }</style>
        <button class="btn">打开小程序</button>
    </script>
    ...
    

    初次配置容易出现的问题:
    可以为wx-open-launch-weapp标签添加样式形成更好的页面效果
    点击事件是声称在script标签所生成的节点上的,注意不要只修改wx-open-launch-weapp标签的样式导致用户点击不到节点
    只有在微信环境下才会展示改标签所产生的节点
    wx.config不要重复调用导致wx-open-launch-weapp失效(一般不会犯这种错误吧)
    系统错误,错误码:40048 :配好安全域名!!!!!!

    展开全文
  • 央视影音手机版6.7.3 安卓版类型:影音播放大小:53.8M语言:中文 评分:9.8标签:立即下载以前的电脑版微信是不支持小程序的,不能够搜到也不能够打开好友分享的小程序,不过在新版微信更新以后是可以打开小程序了...

    e04662ec4a99e47077a60d0a80193e5a.png

    央视影音手机版6.7.3 安卓版

    类型:影音播放大小:53.8M语言:中文 评分:9.8

    标签:

    立即下载

    以前的电脑版微信是不支持小程序的,不能够搜到也不能够打开好友分享的小程序,不过在新版微信更新以后是可以打开小程序了,具体的方法赶紧跟随西西小编来看看吧!

    新版微信pc版怎么打开小程序

    在旧版的PC版微信中,是不支持小程序的,当用户收到好友分享过来的小程序时,就会提示用户“收到一个小程序,请在手机上查看”。

    而在新版的PC版微信中,用户就可以直接打开这个小程序了。

    d376d96e1ed4c40f3bd0f741c6e141fd.png

    旧版PC版微信小程序提示

    6d2cff410677013025d6d7d2d259ec09.png

    新版PC版微信支持小程序

    新版的PC版微信中的小程序采用新窗口打开形式,在功能上基本跟手机版的一致。

    1774c7980e4e298e931058745f098239.png

    新版的PC版微信虽然支持了小程序,但是却没有提供小程序入口,而搜索中也不支持搜索小程序。用户只能通过好友分享过来的小程序来进入。

    并且,新版的PC版微信并不是支持所有的小程序,比如小游戏类的小程序就不支持,比如之前非常流行的“跳一跳”小程序,在新版的PC版微信中就显示“不支持的消息,可在手机上查看”。

    小编还以为可以在电脑上一展身手了呢。奇怪的是在消息预览那又能显示“小程序 跳一跳”。

    16187983ea5c542e1a0139439784d5e1.png

    不支持跳一跳小程序

    此外,新版PC版微信的小程序不支持支付功能,下单后需要在手机版上进行支付操作。这个可以理解,安全为上。

    f2a9ecc0e0af6450840062f7d7cf28bc.png

    不支持支付功能

    好在一些工具类的小程序可以正常运行,这样一来一些好用的小工具就可以在电脑里发挥作用了。

    在微信PC版的小程序也有经过针对PC使用优化的,比如腾讯文档,打开后一个在线版的简单办公软件就来了。

    a29fd5955b716722a615bf8999cc2194.png

    微软AI识图小程序正常运行

    87ef77c515f6576ddbb53e3a36c6a998.png

    文档小程序

    总结

    新版PC版微信总算支持了小程序,虽然还有不少小程序并不兼容也不能正常运行,不过总算迈出了第一步。

    想要尝鲜的网友可以自行搜索下载该版本,需要注意的是目前尚为测试版。

    6b884e4c7246f0972692b9d466a2ab05.png

    展开全文
  • 微信扫码打开小程序

    千次阅读 2020-11-04 16:05:11
    扫普通链接二维码打开小程序 微信官方文档:https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html 一、首先登陆微信公众平台,找到开发>开发设置>扫普通链接二维码打开小程序 下面是...

    扫普通链接二维码打开小程序

    微信官方文档:https://developers.weixin.qq.com/miniprogram/introduction/qrcode.html

    一、首先登陆微信公众平台,找到开发>开发设置>扫普通链接二维码打开小程序

    下面是配置好的链接

    击添加按钮,进入添加规则页面

    1.1 二维码规则(不需要加http://):www.xhy.com/main?id=

    1.2 检验文件:下载检验文件后,放到域名www.xhy.com的根目录下。(注意:如果规则是www.xhy.com/main/test?id=,则需要把校验文件放到域名根目录下的main目录下)

    1.3 测试连接: www.xhy.com/main?id=123456789

    二、小程序接收二维码链接参数

    2.1 配置好规则后,也有了测试链接,将测试链接生成二维码

    2.2 测试链接(需要加上http://):http://www.xhy.com/main?id=123456789

    2.3 配置跳转到小程序home页面,所以在home.js的onLoad方法,可以接收完整的二维码内容

    2.4 拿到完成的内容后,需要自己解析出id所带的参数值

    注:

    1、扫面 http://www.xhy.com/main?id=123456789 这个测试地址生成的二维码,可以跳转到小程序(规则中测试范围选择的环境,开发版、体验版、线上版本),需要把对应的小程序代码发布对应的版本上才能生效

    2、规则发布成功后,扫描 (二维码规则+任意字符串)http://www.xhy.com/main?id=xxxxxxxxxxx,将跳转到已发布版本的小程序。对于普通链接二维码,支持使用微信“扫一扫”或微信内长按识别二维码跳转小程序

    3、为确保用户体验,小程序必须先发布代码才可以发布二维码跳转规则。

    基本操作,按照官方文档即可

     

    展开全文
  • 扫二维码打开小程序

    千次阅读 2020-04-21 16:49:20
    微信小程序在当前的技术环境中占据了大量市场。 此次接到客户需求,需求的描述很简洁:通过微信扫码,进入小程序并继续完成业务操作 问题分析: 1.通过微信扫码进入到小程序 2.进入小程序后需要引导用户进行业务...
  • 最近,运行微信Windows客户端时,微信基本操作可以,但是,在打开小程序时,都是卡死不能执行相关功能。解决办法: 1、退出并卸载微信。 2、删除Documents\WeChat Files里面的所有文件。 3、安装并运行微信即可。 ...
  • h5打开小程序,h5跳转到小程序

    千次阅读 2020-12-30 18:12:01
    业务背景:在h5中直接打开小程序(注意不是返回小程序) 业务背景:在h5中直接打开小程序(注意不是返回小程序) 直接上码: 一、config注入: wx.config({ debug: true, appId: '<?php echo $signPackage[...
  • 从App直接打开小程序

    千次阅读 2019-03-28 19:20:52
    今天无意中了解到APP竟然可以直接打开小程序这个功能,一致认为不可能啊,因为小程序是依靠微信,如果手机上微信没有打开,或者是没有安装微信会怎样呢?一起探索吧!步骤 1.打开微信开发者平台文档,下载微信SDK。 2...
  • uniapp怎么在H5页面打开小程序

    千次阅读 2020-07-24 19:23:07
    这个两个方法,这里我们用的是从网页打开小程序 第一步,获取SDK配置,在配置里面添加一个 openTagList: [] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app'] 这个字段有两个选择wx-open-launch-...
  • ,最开始一直以为只有项目发布了,就是小程序审核通过了,二维码才可以正常用,结果不是的,在本地通过二维码编译就可以看到效果,本地能看到,发布后也能看到,有人说本地和正式发布有区别,没有的,还有发布后就得...
  • 可以先看下官方文档介绍:微信官方文档APP打开小程序链接 我这边打开了,上面奔溃是因为模拟器不兼容的原因: 主要讲解下打开小程序核心代码: // 填应用AppId String appId = "移动APP的APPID"; IWXAPI api ...
  • 扫普通链接二维码打开小程序

    万次阅读 热门讨论 2018-04-16 10:48:45
    一,想要扫描普通链接二维码打开小程序,必须在小程序后台进行配置,否则无法完成写在前面:微信对扫描普通链接二维码打开小程序有一定限制,对企业、媒体、政府、其他组织类型小程序开放此功能,个人类型小程序暂不...
  • Android打开小程序可以看我上篇文章介绍:Android打开小程序 我这边已经成功打开小程序了参数也传递过去了,现在就是无论如何点击返回APP都没有反应,也没用走微信页面WXEntryActivity的回调方法onResp 原因很简单...
  • 1、首先获取access_token String requestUrl = "...amp;appid=APPID&amp;secret=AppSecret"; String data = HttpUtils.get(requestUrl); System.ou...
  • 扫描普通二维码打开小程序开发步骤 二维码规则设置 进入微信公众平台,找到开发>开发设置>扫普通链接二维码打开小程序,点击添加,点击“添加”按钮进入规则设置页面。 二维码规则:假如你的真实二维码格式是...
  • 【Exception】微信小程序,配置普通链接二维码规则 文件校验失败问题 校验文件检查失败 扫普通链接二维码打开小程序 一、问题描述 1、公司业务有个需求,扫描普通的二维码,跳转到小程序的某个页面,从而实现小...
  • 1.小程序分享到朋友圈 //在页面的js里设置下就ok onShareTimeline(){ return { title: "微视宝", imageUrl: '/assets/images/wsbLOGO2.png', query: '/pages/homepage/homepage' } }, 需要注意的是 (现...
  • 微信小程序开发—-一打开小程序出现选择弹出框
  • 第一步生成小程序的跳转链接,进入微信公众平台,找到工具,生成跳转用到的URL 如...点击后会如下图:先点击取消程序,页面下方会出现跳转链接,点击后直接打开微信然后自动打开小程序 学废了记得点个三联哦·~~~ ...
  • 微信公众号通过a标签打开小程序

    万次阅读 2018-12-12 16:30:24
    随着小程序应用的逐步广泛,与公众号之前的协同运营越来越重要,通过公众号的各个入口为小程序导流。最近在运营中发现,大家对公众号关注后回复、关键词回复,超链接小程序的需求。 首先把小程序绑定好公众号,把...
  • 1. 微信PC端无法打开腾讯文档的小程序,并且发现内置的浏览器网页均无法显示 卸载重装后,打开腾讯文档又显示该信息,问题现象有变化,但根本问题未解决 2. QQ/TIM的群文件和群公告均无法显示,提示“暂时无法...
  • 2.打开微信开发者工具,把vant-weapp/example目录添加进去, 3.把dist目录复制到example目录下,在开发者工具打开example目录就可以预览示例了。 附:Vant Weapp官方文档的地址:https://youzan.github.io/v...
  • 发送短信打开带参数小程序

    千次阅读 2021-08-20 00:52:11
    这里写自定义目录标题实现步骤分析具体操作1.开发工具中,打开云开发...打开网页,跳转到小程序 具体操作 1.开发工具中,打开云开发面板,开通静态网页托管 2.下载腾讯提供的资源包 (https://developers.weixin.qq.
  • 微信小程序打开外部链接

    千次阅读 2021-08-17 12:11:58
    如果是个人类型的小程序就没法打开外部链接了。 首先要了解下微信提供的容器web-view。 web-view | 微信开放文档 (qq.com) 具体的操作步骤这样,首先在WXML文件里某个需要触发点击事件的标签里面加上点击事件。...
  • 今天,就不兜圈子了,小程序上线这些新能力——小程序上线App直接打开小程序功能;内容安全接口、插件详情页等多种能力接连更新上线。具体如下:App打开小程序更直接此前,我们开放了“APP转发到微信,点开就是小...
  • (本文里的小程序默认是指微信小程序) 一、app或小程序打开h5 1、webview实现 ...二、app打开小程序 1、微信开放平台sdk实现 需要已认证的微信开放平台账号 app需要接入微信开放平台OpenSDK 可跳转至任意小程
  • 电脑端微信可以打开微信小程序

    万次阅读 2019-09-29 09:48:19
    如图: 检查微信版本, 是否为以上:
  • 配置参考:... APP拉起小程序 private void launchMiniProgram(String path) { String appId = &quot;你的appid&quot;; // 填应用AppId IWXAPI api = WXAPIFactory.cr...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,398,501
精华内容 559,400
关键字:

打开小程序

友情链接: oomplexity.rar