利用云函數(shù)來(lái)實(shí)現(xiàn)獲取特定路徑+參數(shù)的小程序碼

背景

在小程序中佃蚜,可以直接分享小程序到聊天窗口,但是無(wú)法分享小程序到朋友圈谐算,但是朋友圈又是一個(gè)重要的推廣場(chǎng)地,所以分享小程序碼就成了重要途徑氯夷。常常被朋友圈刷屏的各種帶有小程序碼的海報(bào)臣樱,就是一個(gè)應(yīng)用場(chǎng)景雇毫。

普通的分享小程序碼飘蚯,直接在后臺(tái)放一個(gè)通用的小程序碼就可以了福也。但是如果需要分享一個(gè)特定路徑+參數(shù)的小程序碼就必須要借助小程序提供的API來(lái)實(shí)現(xiàn)了暴凑。

此次來(lái)和大家說(shuō)一說(shuō)如何利用云函數(shù)來(lái)實(shí)現(xiàn)獲取特定路徑+參數(shù)的小程序碼峦甩。

接口

云函數(shù)為我們提供了三種獲取小程序碼的API

名稱 功能說(shuō)明
wxacode.createQRCode 獲取小程序二維碼,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景
wxacode.get 獲取小程序碼现喳,適用于需要的碼數(shù)量較少的業(yè)務(wù)場(chǎng)景
wxacode.getUnlimited 獲取小程序碼凯傲,適用于需要的碼數(shù)量極多的業(yè)務(wù)場(chǎng)景

前兩個(gè)都有數(shù)量限制犬辰,無(wú)法滿足一些類似詳情分享的場(chǎng)景,所以留給我們的道路只有wxacode.getUnlimited接口了冰单。

先來(lái)看一下這個(gè)接口的主要參數(shù):

屬性 說(shuō)明
scene 最大32個(gè)可見(jiàn)字符幌缝,只支持?jǐn)?shù)字,大小寫英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~诫欠,其它字符請(qǐng)自行編碼為合法字符(因不支持%涵卵,中文無(wú)法使用 urlencode 處理,請(qǐng)使用其他編碼方式)
page 必須是已經(jīng)發(fā)布的小程序存在的頁(yè)面(否則報(bào)錯(cuò))呕诉,例如 pages/index/index, 根路徑前不要填加 /,不能攜帶參數(shù)(參數(shù)請(qǐng)放在scene字段里)缘厢,如果不填寫這個(gè)字段,默認(rèn)跳主頁(yè)面

其他參數(shù)就不一一列舉了甩挫,有需要可以直接去官方文檔查看贴硫。
根據(jù)上面的參數(shù),我們可以指定任意page伊者,而且還可以傳入頁(yè)面參數(shù)英遭,最終在小程序頁(yè)面加載的時(shí)候,通過(guò)options來(lái)獲取到scene亦渗,從而做數(shù)據(jù)加載挖诸。

實(shí)現(xiàn)

云函數(shù)

先來(lái)看一下云函數(shù)如何配置。
新建一個(gè)云函數(shù)qrcode后法精,在config.json中配置如下:

{
  "permissions": {
    "openapi": [
      "wxacode.getUnlimited"
    ]
  }
}

然后在index.js中加入如下代碼:

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

cloud.init()

// 云函數(shù)入口函數(shù)
exports.main = async(event, context) => {
  try {
    let param = {
      // 小程序傳入的 scene 參數(shù)
      scene: event.scene,
      // 可以換成任意 page
      page: 'pages/index/index',
    };
    // 調(diào)用接口
    var result = await cloud.openapi.wxacode.getUnlimited(param)
    return result
  } catch (err) {
    return err
  }
}

然后部署到云端多律,云函數(shù)部分就完成了。

小程序

再來(lái)看看小程序端如何調(diào)用:

requestQrcode(scene) {
    let that = this;
    wx.cloud.callFunction({
        name: 'qrcode',
        data: {
          scene: scene
        }
      })
      .then((res) => {
        let path = wx.env.USER_DATA_PATH + '/' + res.requestID + '.jpg'
        if (res.result.contentType == 'image/jpeg') {
          // 返回的結(jié)束是 base64 編碼的二進(jìn)制流
          // 這里直接保存到文件
          wx.getFileSystemManager()
            .writeFile({
              filePath: path,
              data: res.result.buffer,
              encoding: 'base64',
              success: (res) => {
              },
              fail: (res) => {
              }
            })
        } else {
          // 異常處理
        }
      })
  },

最終在頁(yè)面的onLoad(options)中可以這樣獲取到小程序碼傳遞的參數(shù)scene

onLoad: function(options) {
  let scene = options.scene;
},

這樣就完成了利用云函數(shù)來(lái)生成特定路徑+參數(shù)的小程序碼了搂蜓,后面就可以利用這個(gè)小程序碼來(lái)繪制海報(bào)狼荞。

問(wèn)題

不知道你是否注意到scene參數(shù)有一個(gè)限制,最大32個(gè)可見(jiàn)字符,有時(shí)候很容易就超出了帮碰,那豈不是就沒(méi)法用了相味?

沒(méi)有什么可以難倒程序員!如果有殉挽,那一定是需求不合理~

短鏈丰涉,一個(gè)很好的方案。把所有的參數(shù)生成一個(gè)唯一的短鏈斯碌,作為scene參數(shù)傳遞一死,最后在加載的時(shí)候先解析短鏈,就可以獲取到超長(zhǎng)參數(shù)啦~

小技巧

如果你不需要給頁(yè)面?zhèn)魅雲(yún)?shù)傻唾,直接在小程序管理平臺(tái)最上方摘符,有個(gè)工具->生成小程序碼,填上頁(yè)面路徑就可以生成小程序碼素材啦~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市逛裤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴抹,老刑警劉巖带族,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蟀给,居然都是意外死亡蝙砌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門跋理,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)择克,“玉大人,你說(shuō)我怎么就攤上這事前普《切希” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵拭卿,是天一觀的道長(zhǎng)骡湖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)峻厚,這世上最難降的妖魔是什么响蕴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮惠桃,結(jié)果婚禮上浦夷,老公的妹妹穿的比我還像新娘。我一直安慰自己辜王,他們只是感情好劈狐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著誓禁,像睡著了一般懈息。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摹恰,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天辫继,我揣著相機(jī)與錄音,去河邊找鬼俗慈。 笑死姑宽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闺阱。 我是一名探鬼主播炮车,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了瘦穆?” 一聲冷哼從身側(cè)響起纪隙,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扛或,沒(méi)想到半個(gè)月后绵咱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熙兔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年悲伶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片住涉。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麸锉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出舆声,到底是詐尸還是另有隱情花沉,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布纳寂,位于F島的核電站主穗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毙芜。R本人自食惡果不足惜忽媒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腋粥。 院中可真熱鬧晦雨,春花似錦、人聲如沸隘冲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)展辞。三九已至奥邮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罗珍,已是汗流浹背洽腺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留覆旱,地道東北人蘸朋。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扣唱,于是被迫代替她去往敵國(guó)和親藕坯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子团南,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,761評(píng)論 0 15
  • 本文主要講解小程序二維碼的基本概念,幫助開(kāi)發(fā)和運(yùn)營(yíng)人員更好的掌握小程序參數(shù)二維碼炼彪,同時(shí)也包含小程序二維碼官方文檔解...
    zhuyuansj閱讀 11,057評(píng)論 0 16
  • 需求 分享活動(dòng)吐根,截圖保存到相冊(cè),圖片上包含小程序碼霹购,掃碼可進(jìn)入該活動(dòng)詳情 實(shí)現(xiàn) 使用小程序云函數(shù)動(dòng)態(tài)生成小程序碼:...
    Yadea前端雜記閱讀 1,714評(píng)論 0 1
  • 因新工作主要負(fù)責(zé)微信小程序這一塊佑惠,最近的重心就移到這一塊,該博客是對(duì)微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點(diǎn)齐疙,初...
    majun00閱讀 7,341評(píng)論 0 9
  • 秋天的中午,陽(yáng)光暖暖的感覺(jué)旭咽。還是打算午飯后出來(lái)遛遛食贞奋,在緊鄰菜地的馬路上走著,一只身披花衣服的貓映入眼簾穷绵,...
    張_57bb閱讀 157評(píng)論 0 1