uni-app 開發小程序時會用到推送 前端基于基礎用法做一個封裝
import {
appid,
secret
} from "@/conf/website.js"
/**
* @description 用戶打開訂閱提示
* @param {Array}tmplId 模版id
* */
export const openSubscription = (tmplIds) => {
uni.requestSubscribeMessage({
tmplIds: tmplIds,
success: (res) => {
// 訂閱成功
},
fail: function(err) {
uni.showToast({
title: err,
duration: 2000,
icon: 'error'
});
}
})
}
/**
* @description 獲取微信的access_token
* */
function get_wx_access_token() {
return uni.request({
method: 'get',
url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`,
dataType: 'json',
timeout: 30000
}).then(res => {
let [err, success] = res
if (success.statusCode == 200) {
return success.data.access_token
}
})
}
/**
* @description 發送訂閱消息
* @param {String}miniprogram_state 小程序狀態
* @param {String}openid 用戶openid
* @param {String}tmplId 模版id
* @param {String}params 傳遞參數
* */
export const send_msg = async (miniprogram_state = 'developer', openid, tmplId, params) => {
let wx_access_token = await get_wx_access_token()
return uni.request({
url: `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${wx_access_token}`,
method: "POST",
data: {
access_token: wx_access_token, //access_token
touser: `${openid}`, //用戶openid
template_id: `${tmplId}`, //模板ID
page: "", //進入哪個頁面 非必傳
data: {
...params //自己選擇模版的參數 'key':{value:'...'}
},
miniprogram_state: "developer", //developer為開發版;trial為體驗版;formal為正式版;非必傳
}
})
}