這里寫自定義目錄標題
- 實作步驟分析
- 具體操作
- 1.開發工具中,打開云開發面板,開通靜態網頁托管
- 2.下載騰訊提供的資源包
- 3.編輯上傳jump-mp.html
- 4. 部署云函式
- 5. 部署發短信的云函式sendmsg
- 6. 呼叫云函式發短信
- 綜述:
- 發短信
- 用戶跳轉
網頁教程一般不步及帶參打開頁面,只能自己改造一個
實作步驟分析
- 發送短信,短信內容包含網址
- 打開網頁,跳轉到小程式
具體操作
1.開發工具中,打開云開發面板,開通靜態網頁托管
2.下載騰訊提供的資源包
(https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/staticstorage/msg-miniprogram.html)
里面包括一個HTML頁面jump-mp.html,一個云函式代碼cloudfunctions
3.編輯上傳jump-mp.html
有 6 處要修改的地方(通過“replace”搜索可以快速定位修改的地方)填入自己的環境引數
因為要實作動態傳參,所以有些地方要改一下, 本例傳引數為id,如
xxxxxxxxxxxx.com/jump_mp.html?id=1564664
<script>
//加一個取URL引數的函式
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
//,,,,,,,,,,
//下面這個在普通瀏覽器中呼叫的JS函式,功能是呼叫云函式獲取跳轉的小程式地址
async function openWeapp(onBeforeJump) {
var c = window.c
const res = await c.callFunction({
name: 'public',
data: {
action: 'getUrlScheme',
id:getQueryVariable("id") //此處加上這個動態引數,就可以把id傳給云函式了
},
})
........
}
</script>
......
//下面修改在微信中打開網頁時的動態引數設定法
//path=""即可,然后是JS動態賦值
<wx-open-launch-weapp id="launch-btn" username="gh_fa6d8ee08101" path="">
<template>
<button style="....">打開小程式</button>
</template>
</wx-open-launch-weapp>
<script>
//將小程式路徑動態給wx-open-launch-weapp標簽的path屬性
document.getElementById("launch-btn").setAttribute("path","/pages/feed/feed?id="+getQueryVariable("id"));
</script>
</body>
</html>
上傳至靜態托管空間,如/jump.mp.html
4. 部署云函式
資源包中的 cloudfunctions 檔案夾下面有個 public 檔案夾,拖到自己專案的云開發函式中,然后替換自己小程式的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.id) //event.id可以取到jump_mp.html傳來的id引數
}
}
return 'action not found'
}
async function getUrlScheme(idnumb) {
return cloud.openapi.urlscheme.generate({
jumpWxa: {
path: '/pages/feed/feed',
query: 'id='+idnumb //將引數附在小程式path后面
},
isExpire: false,
expireTime: parseInt(Date.now() / 1000 + 60),
})
}
5. 部署發短信的云函式sendmsg
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.cloudbase.sendSms({
"env": 'env_id', //填自己的云環境ID
"phoneNumberList": [
"+86"+event.phone //動態接收要發送的手機號
],
"smsType": 'Notification',
"templateId": '844110', //小程式跳轉的固定模板ID
"templateParamList": [
"打開小程式查看精彩",
"/jump-mp.html?id="+event.id //靜態空間的跳轉頁地址,同時傳id引數
]
})
return result
} catch (err) {
return err
}
}
6. 呼叫云函式發短信
sendMsg(e) {
var myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
if (!myreg.test(this.data.basicinfo.companyPhone)) {
wx.showToast({ title: "手機號不合法" })
return
}
//把手機號與id引數做成物件
let params = { phone: this.data.Phone, id: this.data.id }
wx.cloud.callFunction({
name: 'sendmsg',
data: params //傳給發短信云函式
}).then(res => {
wx.showToast({ title: res.result.errCode == 'ok' ? "發送成功" : "發送失敗" })
console.log(res)
}).catch(e => { console.log(e) })
},
綜述:
流程是這樣:
發短信
1、在頁面JS中觸發發短信的函式 sendMsg()
2、sendMsg函式呼叫發短信的云函式sendmsg,把手機號與動態id發給它,
3、sendmsg云函式獲取到手機號與動態id,呼叫cloud.openapi.cloudbase.sendSms,根據手機號把短信發出去,短信中包括靜態托管頁的地址和ID引數,如xxxxxx.com/jump_mp.html?id=1111111
用戶跳轉
4、用戶收到短信,點擊鏈接,打開網頁,
5、網頁jump_mp.html中的openWeapp函式,遠程呼叫云函式public,并把id傳過去,
6、public云函式將代碼中指定的小程式地址和傳來的id用cloud.openapi.urlscheme.generate合成一個小程式跳轉地址如:weixin://dl/business/?t=gNDxuDpy9il,回傳給jump_mp.html
7、jump_mp.html根據跳轉地址進行跳轉小程式
如果在第三步中生成的地址在微信中打開,會觸發微信網頁跳轉功能,根據wx-open-launch-weapp標簽的path進行跳轉,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295385.html
標籤:其他
上一篇:Mockito 實戰
下一篇:微信小程式支付(java后端)
