一、前言
微信小程序近期又迎來了一次改革–9月15日之后如果小程序涉及調(diào)用微信的隱私接口獲取用戶的信息的,需要用戶手動同意協(xié)議后才可正常調(diào)用接口,否則會返回報錯信息。
隱私接口目前常用的有:手機(jī)號快捷獲取、讀取照片、獲取用戶的頭像昵稱(包括快捷填寫能力)等。
本文將實現(xiàn)一個通用的彈窗組件,方便開發(fā)者再新項目或者原有項目中適應(yīng)本次改動。
更多詳細(xì)介紹,可以看一下官方文檔,直達(dá)鏈接官方文檔-小程序隱私協(xié)議開發(fā)指南
二、開發(fā)前的準(zhǔn)備工作(重要)
基礎(chǔ)庫調(diào)整
隱私協(xié)議的相關(guān)接口最低支持庫為2.32.3。因此如果要進(jìn)行本功能的開發(fā)調(diào)試工作,需要先把基礎(chǔ)庫版本調(diào)整為2.32.3以上,我這里調(diào)整為3.0.1。
選擇完成后記得點擊推送。
修改app.json配置文件
根據(jù)文檔的說明,9月15號前需要啟用隱私相關(guān)功能,需要在app.json中配置__usePrivacyCheck__: true
如果你看到這篇文章的時候已經(jīng)是9月15號或之后了,就不需要管這個了,因為不管配不配置,都會啟用。
注意:配置后建議清除IDE的緩存,避免配置不生效的情況。直接全部清除然后重新編譯就行。兩個全部清除選擇其中一個就行。
配置后IDE控制臺會輸出字段無效的警告,不用管它,字段配置能正常生效就行。
修改隱私協(xié)議
如果小程序目前未采集任何用戶隱私,就不需要管這個改動了。
如果隱私協(xié)議中未添加隱私接口但實際上有調(diào)用的,則需要在微信公眾平臺中先配置隱私協(xié)議,在協(xié)議中把你需要調(diào)用的隱私接口配置上去就行。(例如采集手機(jī)號、選擇位置信息等)
三、 組件效果展示
tabbar頁面可根據(jù)組件字段配置進(jìn)行,隱藏tabbar。
四、組件的引入與使用
組件下載地址
組件下載地址:隱私彈窗組件下載鏈接(請使用電腦瀏覽器點擊下載)
組件引入
解壓一下下載的組件壓縮包,然后放到目錄:miniprogram/components下,如果沒有components文件夾,新建一個就行。
引入的話,可以在需要使用彈窗的頁面.json文件引入,如果多個頁面需要用到的話,可以在app.json文件中全局引入。
頁面引入:
全局引入:
組件說明
組件目前一共有三個參數(shù)以及一個回調(diào)事件。
參數(shù)名 | 參數(shù)說明 |
---|---|
showPop(Boolean) | 控制彈窗顯示或者隱藏 |
exitApp(Boolean) | 拒絕是否退出小程序 |
inTabPage(Boolean) | 是否在tabbar頁面 用于隱藏tabbar |
handle(event) | 彈窗按鈕點擊后的回調(diào)事件 返回授權(quán)結(jié)果 {errMsg: “”, result: false/true} |
組件授權(quán)結(jié)果會同時在全局參數(shù)app.json中存儲,開發(fā)者可以自己決定需不需要。
不需要的話,直接注釋組件的代碼。
組件的使用
注意,為了降低組件的耦合性,組件內(nèi)部并不進(jìn)行是否需要隱私接口授權(quán)的判斷。因此彈窗顯示的時機(jī)需要開發(fā)者自己進(jìn)行處理。
使用案例代碼(在頁面onload時展示)
頁面json
局部引入組件
{
"usingComponents": {
"privacyPopup": "../../components/privacyPopup/privacyPopup"
},
"navigationBarTitleText": "彈窗使用案例",
"navigationBarBackgroundColor": "#fff"
}
wxml
<privacyPopup showPop="{{showPop}}" exitApp bind:handle="popBtnTap"></privacyPopup>
頁面JS
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
showPop: false,
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
async onLoad() {
const privacySettingRes = await this.getPrivacySetting();
console.log("privacySettingRes :>> ", privacySettingRes);
this.setData({
showPop: privacySettingRes.needAuthorization,
});
},
/**
* 按鈕點擊回調(diào)
*/
popBtnTap(res) {
console.log("授權(quán)結(jié)果返回數(shù)據(jù) :>> ", res);
console.log("授權(quán)結(jié)果 :>> ", res.detail);
if (res.detail.result) {
wx.showToast({
title: "同意授權(quán)",
icon: "success",
});
} else {
wx.showToast({
title: "拒絕授權(quán)",
icon: "error",
});
}
},
/**
* 獲取隱私協(xié)議授權(quán)信息
* @returns {object} {needAuthorization: true/false, privacyContractName: '《xxx隱私保護(hù)指引》'}
*/
getPrivacySetting() {
const res = {
needAuthorization: false,
privacyContractName: "基礎(chǔ)庫過低,不需要授權(quán)",
};
if (!wx.getPrivacySetting) return res;
return new Promise((resolve, reject) => {
wx.getPrivacySetting({
success(res) {
resolve(res);
},
fail(err) {
reject(err);
},
});
});
},
});
實現(xiàn)效果
用戶拒接授權(quán)
用戶同意授權(quán)
關(guān)于調(diào)試
授權(quán)后需要重新觸發(fā)授權(quán)請求,在IDE中可以清除授權(quán)緩存來實現(xiàn)。如果是真機(jī)的話,可以長按刪除小程序來實現(xiàn)。
五、結(jié)語
最后來一下常規(guī)結(jié)語:
實際開發(fā)中的其他邏輯就不寫了。需要同學(xué)們自己去考慮異常情況處理等問題啦。
有任何疑問可以在評論區(qū)留下。我每天都會進(jìn)行回復(fù),私聊不回。(為了刷積分)
以上均是本人開發(fā)過程中的一些經(jīng)驗總結(jié)與領(lǐng)悟,如果有什么不正確的地方,希望大佬們評論區(qū)斧正。
??最后!??!不管這篇文章對你有沒有用,既然都看到最后了。
??贊一個!?。?br> ??當(dāng)然,順帶收藏就最好了。
??歡迎轉(zhuǎn)載,原創(chuàng)不易,轉(zhuǎn)載請注明出處??。文章來源:http://www.zghlxwxcb.cn/news/detail-709399.html
??如果你對小程序開發(fā)有興趣或者正在學(xué)習(xí)小程序開發(fā),可以關(guān)注我。每一篇都是原創(chuàng),每一篇都是干貨噢~。
————————————————
版權(quán)聲明:本文為CSDN博主「super–Yang」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44702572/article/details/132772791文章來源地址http://www.zghlxwxcb.cn/news/detail-709399.html
到了這里,關(guān)于一文看懂微信小程序新版隱私協(xié)議(附帶彈窗組件)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!