這里我選擇的是全局監(jiān)聽,進(jìn)入小程序就會(huì)監(jiān)控用戶有沒有同意,沒有則進(jìn)行彈窗,不同意則關(guān)閉,這個(gè)邏輯可以根據(jù)自己需要隨便修改。
小程序基礎(chǔ)庫是跟著用戶手機(jī)微信版本走的,不是你的調(diào)試基礎(chǔ)庫?。?!
小程序基礎(chǔ)庫是跟著用戶手機(jī)微信版本走的,不是你的調(diào)試基礎(chǔ)庫?。?!
小程序基礎(chǔ)庫是跟著用戶手機(jī)微信版本走的,不是你的調(diào)試基礎(chǔ)庫?。。?/h2>
發(fā)現(xiàn)有很多人根據(jù)自己調(diào)試基礎(chǔ)庫來排查自己涉不涉及,你的小程序是否涉及隱私協(xié)議整改,還是看有沒有調(diào)用涉及隱私接口,如果有,那你最后還是要改。
開發(fā)者需在「小程序管理后臺(tái)」配置《小程序用戶隱私保護(hù)指引》,詳細(xì)指引可見:https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/
需要注意的是,僅有在指引中聲明所處理的用戶信息,才可以調(diào)用平臺(tái)提供的對(duì)應(yīng)接口或組件。若未聲明,對(duì)應(yīng)接口或組件將直接禁用。隱私接口與對(duì)應(yīng)的處理的信息關(guān)系可見: https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/miniprogram-intro.html
app.js
這里setStorageSync保存的,是用戶當(dāng)前是否同意協(xié)議的狀態(tài)
我們?cè)趏nShow進(jìn)行一個(gè)判斷,每次用戶打開小程序先去判斷是否進(jìn)行隱私授權(quán),否則跳轉(zhuǎn)至授權(quán)頁面(彈窗)
getPrivacy(privacy) {
wx.setStorageSync('privacyStatus', privacy);
},
onShow(object) {
if (wx.getStorageSync('privacyStatus')) {
// 用戶協(xié)議已同意
console.log('用戶協(xié)議已同意');
} else {
// 未同意用戶協(xié)議,則跳轉(zhuǎn)至彈窗頁面或彈出窗口
console.log('用戶協(xié)議未同意');
const url = `/${object.path}`;
if (url !== '/pages/guidePages/index') {
wx.redirectTo({
url: '/pages/guidePages/index',
})
}
}
},
guidePages.js (隱私協(xié)議頁面,或在你的彈窗里寫上事件)
因?yàn)?.32.3以下版本的基礎(chǔ)庫,wx.getPrivacySetting會(huì)直接報(bào)錯(cuò),需要做低版本兼容處理
低版本不會(huì)攔截所以直接跳過就行了
wx.getAppBaseInfo().SDKVersion 獲取當(dāng)前基礎(chǔ)庫版本。
compareVersion 是一個(gè)比較數(shù)字的方法,可以用自己的或者第三方庫,這個(gè)無所謂。
wx.getPrivacySetting 返回值:
needAuthorization: true/false, //授權(quán)狀態(tài)
privacyContractName: '《xxx隱私保護(hù)指引》' //協(xié)議名稱
<view class="btn disagree" bindtap="showPageContainer">不同意</view>
<view class="btn agree head_gradient" bindtap="agree" wx:if="{{ lowVersion }}">同意</view>
<button class="btn agree head_gradient" id="agree-btn" open-type="agreePrivacyAuthorization" bindagreeprivacyauthorization="handleAgreePrivacyAuthorization" wx:if="{{ !lowVersion }}">同意</button>
這里我直接給低版本顯示不同的按鈕了,
低版本是不支持bindagreeprivacyauthorization這些事件的,同意后直接關(guān)閉頁面(彈窗)就可以了。
而且view標(biāo)簽也不支持bindagreeprivacyauthorization這些事件,我當(dāng)時(shí)寫的時(shí)候是不支持,改的button,不知道有沒有再改。。。
const app = getApp()
onShow() {
const _ = this
if (wx.getPrivacySetting) >= 0) {
wx.getPrivacySetting({
success(res) {
if (res.errMsg == "getPrivacySetting:ok") {
_.setData({
privacyContractName: res.privacyContractName,
lowVersion: false
})
app.getPrivacy(!res.needAuthorization)
}
}
})
} else {
console.log('低版本');
app.getPrivacy(true)
this.setData({
lowVersion: true
})
}
},
// 同意隱私協(xié)議
handleAgreePrivacyAuthorization() {
*更改全局狀態(tài)*
app.getPrivacy(true);
*同意后的事件,自己根據(jù)需要寫就可以*
this.agree();
},
// 比較版本號(hào)
compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
},
隱私協(xié)議接口同意一次就不會(huì)再攔截,但是用戶刪除小程序后就需要再次同意。所以我就在app.js直接監(jiān)聽了。
還有一種方法是在調(diào)用隱私相關(guān)接口時(shí)去監(jiān)聽,這個(gè)按自己需求去改一下就行,其實(shí)大同小異,都是查一下用戶需不需要同意協(xié)議,
需要的話就讓用戶去點(diǎn)一下同意觸發(fā)handleAgreePrivacyAuthorization再去調(diào)用隱私接口,而且官方也提供了耦合寫法。
低兼容測(cè)試可以在開發(fā)者工具切換基礎(chǔ)庫來測(cè)試。
調(diào)試前記得在app.json加上
“usePrivacyCheck”: true文章來源:http://www.zghlxwxcb.cn/news/detail-793168.html
官方現(xiàn)在有不需要開發(fā)的彈窗了,但是還是留了一個(gè)很惡心的問題。。。
一旦點(diǎn)擊錯(cuò)誤,用戶將被沉默10s文章來源地址http://www.zghlxwxcb.cn/news/detail-793168.html
到了這里,關(guān)于微信小程序隱私協(xié)議自定義頁面(彈窗)開發(fā)流程以及低版本兼容的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!