找回密码
 立即注册

【详细教程】微信外部打开小程序的三种解决方法

匿名  发表于 2022-8-24 07:04:45 阅读模式 打印 上一主题 下一主题
小法式已静静的开放了从内部跳转至小法式的进口,方便用户可以在微信内部阅读器或其他APP跳转至微信小法式
方式一:通太小法式scheme码跳转至小法式

上风:今朝最优计划,一切场景都支持跳转至小法式,为你实现内部流量导入小法式
弱点:需要注册微信开放平台,申请第三方平台,然后操纵接口获得URL Scheme,步调比力多
经过办事端接口可以获得翻开小法式肆意页面的URL Scheme。适用于从短信、邮件、微信外网页等场景翻开小法式。经过URL
Scheme翻开小法式的场景值为 1065。天生的URL Scheme以下所示:weixin://dl/business/?t= *TICKET*iOS系统支持识别URL Scheme,可在短信等利用处景中间接经过Scheme跳转小法式。Android系统不支持间接识别URL Scheme,用户没法经过Scheme一般翻开小法式,开辟者需要利用H5页面直达,再跳转到Scheme实现翻开小法式,跳转代码示例以下:location.href = 'weixin://dl/business/?t= *TICKET*'该跳转方式可以在用户翻开H5时立即挪用,也可以在用户触发事务后挪用。挪用上限Scheme将按照能否为到期有用与生效时候参数,分为短期有用Scheme与持久有用Scheme:

  • 单个小法式逐日天生Scheme上限为50万个(包括短期有用Scheme与持久有用Scheme)
  • 有用时候跨越31天的Scheme或永久有用的Scheme为持久有用Scheme,单个小法式总共可发展大期有用Scheme上限为10万个,请谨慎挪用
  • 有用时候不跨越31天的Scheme为短期有用Scheme,单个小法式天生短期有用Scheme不设上限
留意事项

  • 天生的URL Scheme仅支持从微信外翻开小法式。微信内的网页如需翻开小法式请利用微信开放标签-小法式跳转按钮,无公众号也可以间接利用小法式身份开辟网页并免鉴权跳转小法式,见云开辟静态网站跳转小法式。合适开放范围的小法式可以下发支持翻开小法式的短信。
  • 该功用根基覆盖当前用户正在利用的微信版本,开辟者无需停止低版本兼容。
  • 只能天生已公布的小法式的URL Scheme。
  • 经过URL Scheme跳转到微信时,能够会触发系统弹框询问,若用户挑选不跳转,则没法翻开小法式。请开辟者妥帖处置用户挑选不跳转的场景。
开放范围针对国内非小我主体小法式开放。VV直选IOS端就采用了URL Scheme跳转,大师可下载体验。示例利用了云开辟静态网站托管搭建网页,无需公众号,只需预备好小法式和开通云开辟。网页会判定地点的情况来感觉采用哪类跳转方式,如检测到微信客户端内,则免鉴权利用开放标签跳转,如检测到在内部阅读器或 App,则利用 URL Scheme 跳转小法式。示例网页地址:https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html具体代码示例和说明:云开辟静态网站跳转小法式。
方式二:云开辟静态网页免鉴权跳转静态网站

上风:1、免除小法式营业域名的设置;2、云开辟有免费的CDN额度;3、简单粗鲁,开倡议来简单、UI组件微信官方自带,体验好
弱点:一些排挤云开辟的能够望而生畏
H5 跳小法式非小我主体而且已认证的小法式,利用云开辟静态网站托管的网页,可免得鉴权跳转肆意正当合规的小法式。即可以在微信内部阅读器的 H5 跳转小法式,也可以在微信内部阅读器或其他部分 App (如企业微信、QQ 等)跳转微信小法式。静态网站网页在微信客户端翻开时,wx.config 可以传入小法式 AppID 而且不需计较签名,也就是免鉴权即可利用跳转小法式的才能。点此体验(将会跳转到微信官方的 "小法式示例" 小法式):https://postpay-2g5hm2oxbbb721a4-1258211818.tcloudbaseapp.com/jump-mp.html
留意,开通静态网站、绑定自界说域名,需要在「微信开辟者工具 - 云开辟 - 更多 - 静态网站」里停止,才能具有免鉴权的才能。以下包括完整代码示例,包括 HTML 代码和云函数代码。示例无需预备公众号,只需预备好小法式和开通云开辟以及云开辟中的静态网站托管才能。网页会判定地点的情况来感觉采用哪类跳转方式,如检测到微信客户端内,则免鉴权利用开放标签跳转,如检测到在内部阅读器或 App,则利用 URL Scheme 跳转小法式。留意,以下代码中有以下内容必须替换,可以搜索 <!-- replace --> 检察到一切需要替换的地方:
小法式 AppID:填入你的小法式 AppID
云开辟情况 ID:填入你的开通了静态网站托管的云开辟情况 ID
小法式原始账号 ID:填入你的小法式原始账号 ID(gh_ 开首)
小法式页面途径:填入要跳转到的小法式的页面途径
小法式称号:填入要跳转到的小法式称号
HTML: 点击下载
  1. <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>    <!-- weui 款式 -->    <link rel="stylesheet"href="https://res.wx.qq.com/open/libs/weui/2.4.1/weui.min.css"></link>    <!-- 调试用的移动端 console -->    <!-- <script src="https://cdn.jsdelivr.net/npm/eruda"></script> -->    <!-- <script>eruda.init();</script> -->    <!-- 公众号 JSSDK -->    <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>    <!-- 云开辟 Web SDK -->    <script src="https://res.wx.qq.com/open/js/cloudbase/1.1.0/cloud.js"></script>    <script>      functiondocReady(fn) {        if (document.readyState ==='complete'|| document.readyState ==='interactive') {          fn()        } else {          document.addEventListener('DOMContentLoaded', fn);        }      }      docReady(asyncfunction() {        var ua = navigator.userAgent.toLowerCase()        varisWXWork=ua.match(/wxwork/i)=='wxwork'varisWeixin=!isWXWork&&ua.match(/micromessenger/i)=='micromessenger'varisMobile=falsevarisDesktop=falseif(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {          isMobile=true       }else{          isDesktop=true       }        if(isWeixin) {          varcontainerEl=document.getElementById('wechat-web-container')          containerEl.classList.remove('hidden')          containerEl.classList.add('full','wechat-web-container')          varlaunchBtn=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: true, // 调试时可开启           appId:'小法式 AppID',// <!-- replace -->           timestamp:0,// 必填,填肆意数字即可           nonceStr:'nonceStr',// 必填,填肆意非空字符串即可           signature:'signature',// 必填,填肆意非空字符串即可           jsApiList: ['chooseImage'],// 必填,随意一个接口即可           openTagList:['wx-open-launch-weapp'],// 填入翻开小法式的开放标签名         })        }elseif(isDesktop) {          // 在 pc 上则给提醒指导得手机端翻开varcontainerEl=document.getElementById('desktop-web-container')          containerEl.classList.remove('hidden')          containerEl.classList.add('full','desktop-web-container')        }  else{          varcontainerEl=document.getElementById('public-web-container')          containerEl.classList.remove('hidden')          containerEl.classList.add('full','public-web-container')          varc=newcloud.Cloud({            // 必填,暗示是未登录形式           identityless:true,            // 资本方 AppID           resourceAppid:'小法式 AppID',// <!-- replace -->// 资本方情况 ID           resourceEnv:'云开辟情况 ID',// <!-- replace -->         })          awaitc.init()          window.c=c          varbuttonEl=document.getElementById('public-web-jump-button')          varbuttonLoadingEl=document.getElementById('public-web-jump-button-loading')          try{            awaitopenWeapp(()=>{              buttonEl.classList.remove('weui-btn_loading')              buttonLoadingEl.classList.add('hidden')            })          }catch(e) {            buttonEl.classList.remove('weui-btn_loading')            buttonLoadingEl.classList.add('hidden')            throwe          }        }      })      asyncfunctionopenWeapp(onBeforeJump) {        varc=window.c        constres=awaitc.callFunction({          name:'public',          data: {            action:'getUrlScheme',          },        })        console.warn(res)        if(onBeforeJump) {          onBeforeJump()        }        location.href=res.result.openlink      }    </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: 40%;      }      .public-web-container a{        position: absolute;        bottom: 40%;      }      .wechat-web-container{        display: flex;        flex-direction: column;        align-items: center;      }      .wechat-web-container p{        position: absolute;        top: 40%;      }      .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>    <divclass="page full">      <divid="public-web-container"class="hidden">        <pclass="">正在翻开 “填入你的小法式称号”...</p><!-- replace -->       <aid="public-web-jump-button"href="javascript:"class="weui-btn weui-btn_primary weui-btn_loading"onclick="openWeapp()">          <spanid="public-web-jump-button-loading"class="weui-primary-loading weui-primary-loading_transparent"><iclass="weui-primary-loading__dot"></i></span>          翻开小法式        </a>      </div>      <divid="wechat-web-container"class="hidden">        <pclass="">点击以下按钮翻开 “填入你的小法式称号”</p><!-- replace --><!-- 跳转小法式的开放标签。文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html -->       <wx-open-launch-weappid="launch-btn"username="小法式原始账号 ID(gh_ 开首的)"path="要跳转到的页面途径"><!-- replace -->         <template>            <buttonstyle="width: 200px;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>        </wx-open-launch-weapp>      </div>      <divid="desktop-web-container"class="hidden">        <pclass="">请在手机翻开网页链接</p>      </div>    </div>  </body> </html>云函数 public: 点击下载
  2. 新建一个云函数,名为 public,然后将其 index.js 设为以下内容:
  3. 在云开辟控制台中的设备 -> 权限设备中,将对应开通了静态网站的云情况开启未登录形式拜候
  4. 在云开辟控制台中的云函数 -> 权限设备中,设置平安法则,挑选 “答应一切用户拜候” 的模板并确认。假如需要更平安的控制,即只让 public 函数开启未登录拜候,可拜见底部平安法则模板
  5. // 云函数进口文件constcloud=require('wx-server-sdk') cloud.init()// 云函数进口函数exports.main=async(event,context)=>{  constwxContext=cloud.getWXContext()  switch(event.action) {    case'getUrlScheme': {      returngetUrlScheme(event.options)    }  }  return'action not found'}asyncfunctiongetUrlScheme(options) {  returncloud.openapi.urlscheme.generate({    jumpWxa: {      path:'/page/component/index',// <!-- replace -->     query:'',    },    // 假如想不外期则置为 false,并可以存到数据库   isExpire:true,    // 一分钟有用期   expireTime:parseInt(Date.now()/1000+60),  }) }可选的进阶的云函数平安法则模板(只铺开了让 public 云函数支持未登录拜候):{  "*":{    "invoke":"auth != null" },  "public":{    "invoke":true } }
复制代码
方式三:经过同一开放平台绑定的APP拉起小法式
上风:只要绑定在同一开辟账号下,无需再设置
弱点:仅对绑定的app才可实现微信内部跳转,网页及其他app暂不不支持
大师可以申请认证微信开放平台,将app、小法式、网页停止同一绑定。斟酌到部分场景下 APP 需要通太小法式来承载办事,为此 OpenSDK 供给了移动利用(APP)拉起小法式功用。
移动利用(APP)接入此功用后,用户可以在 APP 中跳转至微信某一小法式的指定页面,完成办事后再跳回至原 APP 。移动利用拉起小法式功用已向全部开辟者开放,开辟者在微信开放平台帐号下申请移动利用并经过考核后,即可获得移动利用拉起小法式功用权限。
跳转法则:1、对于已经过认证的开放平台账号,其移动利用可以跳转至任何正当的小法式,且不限制跳转的小法式数目。2、对于未经过认证的开放平台账号,其移动利用仅可以跳转至同一开放平台账号下小法式。留意:若移动利用未上架,则最多只能跳转小法式100次/天,用于满足调试需求。优点:无需前两个方式的各类设置弱点:只合适同一个开放平台的app跳转至小法式,未绑定的其他app没法实现跳转,简单地讲,需要白名单APP才可跳转。
回复

使用道具

大神点评

bjwangtao 2022-8-24 07:05:13 显示全部楼层
可以帮手做一个版本吗,有偿
回复

使用道具 举报

ViaGein 2022-8-24 07:05:26 显示全部楼层
可以的
回复

使用道具 举报

wzgl888 2022-8-24 07:06:39 显示全部楼层
演示链接:https://vvdaren-1gx75i3h78c23ab5-1304931887.tcloudbaseapp.com/jump-mp.html
回复

使用道具 举报

ruby_july719 2022-8-24 07:07:53 显示全部楼层
实在实现了从肆意APP间接跳转小法式的方式
回复

使用道具 举报

dgmyule 2022-8-24 07:09:13 显示全部楼层
客岁4月就开放了分歧主体app随意跳转小法式的才能
回复

使用道具 举报

爱在家 2022-8-24 07:10:26 显示全部楼层
小法式框图打不开呢全民K歌发进来就是由于这样我不会做啊
回复

使用道具 举报

makewong 2022-8-24 07:10:52 显示全部楼层
对我来说是别的都不重要,我爱唱歌,实在我一向不在意什么整齐不齐
回复

使用道具 举报

samsama 2022-8-24 07:11:05 显示全部楼层
把握好过活如年,天下之窗只要有爱好者,高兴就好。
回复

使用道具 举报

testonly123 2022-8-24 07:11:35 显示全部楼层
首一把我自看小,二把人做好,三长两短不要随意说,现在好今后我们都好
回复

使用道具 举报

说点什么

您需要登录后才可以回帖 登录 | 立即注册
HOT • 推荐

神回复

站长姓名:王殿武 杭州共生网络科技 创始人 云裂变新零售系统 创始人 飞商人脉对接平台 创始人 同城交友聚会平台 创始人 生活经验分享社区 创始人 合作微信:15924191378(注明来意)