在小程序中打開普通二維碼

  轉載註明出處:www.xdxxdxxdx.com,或者加入java學習羣學習討論:481845043java

 有時候咱們先作好了微信站,而且印刷好了一些宣傳材料,宣傳材料上的二維碼爲原來微信站的二維碼,可是咱們如今要主推小程序了,因此咱們但願經過這些普通的二維碼也能進入小程序的頁面,這時候,咱們就須要學習本篇所講的知識了。小程序

    如下就來介紹如何經過普通二維碼進入小程序頁面。數組

一.到小程序後臺配置頁面路徑規則

    由於普通的二維碼訪問的是普通的網頁路徑,怎麼讓微信識別到這是一個小程序的路徑而不是普通的頁面路徑呢?這就須要到小程序後臺去配置路徑規則。舉個例子來講:我用www.xdxxdxxdx.com/article/23生成了一個二維碼,很顯然這是一個網站的二維碼,可是我想要微信掃描這個二維碼的時候,跳轉到小程序的page/index/index。這時候就須要配置路徑規則將兩者綁定起來。微信

    小程序後臺--》設置--》開發設置--》掃普通連接二維碼打開小程序,就能夠添加普通連接路徑與小程序路徑的對應關係,以下圖所示。app

QQ截圖20181101160200.jpg

    上述咱們將www.wonyen.com/xcxxxxx這個路徑規則與pages/index/index關聯起來了,因此當咱們掃普通碼的時候,只要這個碼是以www.wonyen.com/xcxxxxx這個路徑開頭的二維碼,好比www.wonyen.com/xcxxxxx?buy=1166。微信都會引導到小程序的pages/index/index頁面來,而後咱們再在這個頁面的js代碼中去進行分發。把全部的訪問都引導到首頁,而後再進行分發,能夠避免一些沒必要要的麻煩事情發生。dom

二.編寫分發代碼

    先看代碼,代碼以下:學習

const app = getApp();
const prototype = require( '../utils/prototype.js' );
const dictionaries = {
   buy:  '/pages/realCommodity/realCommodityDetail?realCommodityId=' ,
   shop:  '/pages/shop/index?merchantId=' ,
   orderList:  '/pages/orderList/orderList' ,
   realOrderId:  '/pages/orderDetial/orderDetial?realOrderId='
}
const tabPage = [ 'shoppingCart' 'orderList' 'userCenter' ]
 
const routeResult =  function  (parameter) {
   if  (parameter.q) {
     //解碼並獲取到參數的數組
     const pmArray = decodeURIComponent(parameter.q).replace(app.domain +  'xcxRoute?' '' ).split( '=' );
     if  (dictionaries[pmArray[0]]) {
       const result = {};
       result.url = dictionaries[pmArray[0]] + (pmArray[1] ? pmArray[1] :  '' );
       result.isTabPage = prototype.inArray(tabPage, pmArray[0]);
       return  result
     }
   }
   return  false ;
}
 
module.exports = {
   routeResult: routeResult
}

      咱們將路由分發的代碼寫成一個模塊,以供其餘頁面調用。咱們用了數據字典將普通的二維碼連接跟小程序的連接一一對應,好比buy對應的是/pages/realCommodity/realCommodityDetail?realCommodityId=。當有一個連接來的時候,咱們判斷其parameter.q是否存在,存在則代表是普通的二維碼連接,咱們須要根據數據字典找出其實際的小程序路徑,而且判斷其是不是tab頁。並存入到返回值中。網站

三.調用

在index.js裏面,咱們先引入上述模塊,而後在頁面加載的時候判斷連接是不是普通連接,若普通連接則調用上述模塊來進行分發。ui

const routeDictionary = require(app.resource.util.routeDictionary);
const routeUrl = routeDictionary.routeResult(options);
  //若是是經過掃普通二維碼過來的,在這裏進行分發轉跳
     if  (routeUrl) {
       if  (routeUrl.isTabPage) {
         wx.switchTab({
           url: routeUrl.url,
         })
       else  {
         wx.navigateTo({
           url: routeUrl.url,
         })
       }
     }
相關文章
相關標籤/搜索