uniapp适配微信隐私协议开发指南[uniapp+vue3+js]

这篇具有很好参考价值的文章主要介绍了uniapp适配微信隐私协议开发指南[uniapp+vue3+js]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

没怎么做过uniapp,找了一些文章做了出来,给大家分享一下

2023.9.15以后需要适配微信的隐私协议开发指南

目前uniapp的说法是微信小程序隐私协议开发指南 | uni-app官网

微信小程序小程序隐私协议开发指南 | 微信开放文档

微信官方提供了几个demo

完整示例demo

demo1: 演示使用 wx.getPrivacySetting 和 <button open-type="agreePrivacyAuthorization"> 在首页处理隐私弹窗逻辑 https://developers.weixin.qq.com/s/gi71sGm67hK0

demo2: 演示使用 wx.onNeedPrivacyAuthorization 和 <button open-type="agreePrivacyAuthorization"> 在多个页面处理隐私弹窗逻辑,同时演示了如何处理多个隐私接口同时调用。 https://developers.weixin.qq.com/s/hndZUOmA7gKn

demo3: 演示 wx.onNeedPrivacyAuthorizationwx.requirePrivacyAuthorize<button open-type="agreePrivacyAuthorization"> 和 <input type="nickname"> 组件如何结合使用 https://developers.weixin.qq.com/s/jX7xWGmA7UKa

demo4: 演示使用 wx.onNeedPrivacyAuthorization 和 <button open-type="agreePrivacyAuthorization"> 在多个 tabBar 页面处理隐私弹窗逻辑 https://developers.weixin.qq.com/s/g6BWZGmt7XK9

此方法是demo2:监听什么时候调用隐私接口,然后弹出隐私弹窗,隐私弹窗会阻碍隐私接口授权(例如授权手机号,地理位置等),直到点击了隐私弹窗的同意/拒绝才会继续执行。

如果拒绝了隐私授权弹窗,那么此时的微信授权中不存在未弹出的授权

也就是

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})

是取不到未弹出隐私授权的弹框的值的。该隐私接口不属于同意,也不属于拒绝

在开发之前,需要在小程序管理后台-设置-基本设置-服务内容声明-用户隐私保护指引中添加用到的隐私接口

uniapp适配微信隐私协议开发指南[uniapp+vue3+js],uni-app

 uniapp适配微信隐私协议开发指南[uniapp+vue3+js],uni-app

审核通过后,才能生效。 

1.添加  "__usePrivacyCheck__": true,

uniapp可以添加在manifest.json,或者编译后的dist/mp-weixin/app.json

 "permission": {
    "scope.userLocation": {
      "desc": "将获取你的具体位置信息"
    }
  },
  "requiredPrivateInfos": [
    "getLocation"
  ],
  "__usePrivacyCheck__": true,
  "usingComponents": {}
2.添加getPrivacy.js
const PrivacyProtocol = {
    needAuthorization: false, 
    privacyContractName: ''
}
//获取微信侧同步的用户隐私协议开关
  export function checkUserPrivacyProtocol() {
    if (wx.getPrivacySetting) {
        wx.getPrivacySetting({
            success: (res) => {
                console.log('协议显示的值',res)
                PrivacyProtocol.needAuthorization = res.needAuthorization
                if (res.needAuthorization) {
                    // 需要弹出隐私协议  
                    PrivacyProtocol.privacyContractName = res.privacyContractName
                }
                uni.setStorageSync("PrivacyProtocol", PrivacyProtocol);
            }
        })
    }
}
3.在App.vue的OnLunch中使用

引入getPrivacy.js的checkUserPrivacyProtocol后

onLaunch() {
        checkUserPrivacyProtocol();
    },
4.新建privacy.vue组件
<template>
    <div>
        <div v-if="showPrivacyPopup" class="popup-container">
            <div class="popup-content">
                <div class="popup-header">{{ AppName }} 申请</div>
                <div class="popup-center">
                    在你使用服务之前,请仔细阅读
                    <span
                        class="privacy-link"
                        @click="onClickPrivacyPopupTitle"
                    >
                        {{ PrivacyProtocol.privacyContractName }}
                    </span>
                    。如果你同意,请点击“允许”开始使用。
                </div>
                <div class="button-container">
                    <button @click="handleRefusePrivacyAuthorization">
                        拒绝
                    </button>
                    <button
                        id="agree-btn"
                        class="btn-agree"
                        open-type="agreePrivacyAuthorization"
                        @agreeprivacyauthorization="
                            handleAgreePrivacyAuthorization
                        "
                    >
                        允许
                    </button>
                </div>
            </div>
        </div>
    </div>
</template>

<script setup>
import { ref } from "vue";
import { onLoad } from "@dcloudio/uni-app";

let resolvePrivacyAuthorization;

const showPrivacyPopup = ref(false); // 是否需要弹出协议授权
const PrivacyProtocol = ref(uni.getStorageSync("PrivacyProtocol"));
const AppName = ref('小程序名字')
// 打开弹窗
const openPrivacyPopup = () => {
    showPrivacyPopup.value = true;
    console.log("PrivacyProtocol", PrivacyProtocol);
};

// 关闭弹窗
const closePrivacyPopup = () => {
    showPrivacyPopup.value = false;
};

// 用户点击同意
const handleAgreePrivacyAuthorization = () => {
    console.log("点击了同意");
    resolvePrivacyAuthorization({
        buttonId: "agree-btn",
        event: "agree"
    });
    closePrivacyPopup();
};

// 用户点击拒绝
const handleRefusePrivacyAuthorization = () => {
    console.log("点击了拒绝", resolvePrivacyAuthorization);
    resolvePrivacyAuthorization({
        event: "disagree"
    });
    // 关闭弹窗
    closePrivacyPopup();
    uni.showToast({
        title: "未同意授权,请重试",
        icon: "none",
        duration: 2500
    });
};

// 打开隐私协议
const onClickPrivacyPopupTitle = () => {
    wx.openPrivacyContract({
        success: () => {
            console.log("已打开");
        } // 打开成功
    });
};

// 监听调用微信api的函数
const saveWXCallBack = () => {
    console.log('111111111');
    if (wx.onNeedPrivacyAuthorization) {
        wx.onNeedPrivacyAuthorization((resolve, eventInfo) => {
            // 真机/预览可以拿到eventInfo,模拟器undefined
            console.log("调用接口/组件:", eventInfo);
            openPrivacyPopup();
            resolvePrivacyAuthorization = resolve;
        });
    }
};

onLoad(async () => {
    await saveWXCallBack();
    
});
</script>

<style scoped>
.popup-container {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.2);
    display: flex;
    justify-content: center;
    align-items: flex-end;
    z-index: 10000;
}

.popup-content {
    background-color: white;
    padding: 40rpx;
    border-radius: 20rpx;
    box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.2);
    text-align: left;
}

.popup-header {
    font-size: 26rpx;
    margin-bottom: 20rpx;
}

.popup-center {
    font-size: 30rpx;
}
.privacy-link {
    color: #3478f7;
    cursor: pointer;
}

.button-container {
    display: flex;
    margin-top: 40rpx;
}

button {
    width: 200rpx;
    height: 70rpx;
    text-align: center;
    line-height: 70rpx !important;
    font-size: 28rpx;
    color: #101010;
    border: 1px solid #eee;
    cursor: pointer;
}

.btn-agree {
    background-color: rgb(7, 193, 96);
    color: #fff;
}
</style>
5.在调用了隐私接口的页面使用该组件
import privacy from "@/pages/components/privacy.vue";

<privacy  />

效果图,弹窗显示在底部,类似于微信默认的授权弹窗,在点击允许后会弹出微信的api授权弹窗,若点击否,则什么都没有。

uniapp适配微信隐私协议开发指南[uniapp+vue3+js],uni-app文章来源地址https://www.toymoban.com/news/detail-732508.html

到了这里,关于uniapp适配微信隐私协议开发指南[uniapp+vue3+js]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • NDIS协议驱动开发指南

    我们知道,在以太网中所有的数据包都是通过以太网帧来发送的;但是在网络上面的应用程序如果需要通过网络数据包交互,就需要依赖网络协议来保障通信。平时我们用的最多的协议就是TCPIP协议。 其实在Windows中,我们可以注册自己的协议,开发自己的协议解析和封装驱动

    2024年02月03日
    浏览(44)
  • 基于python的EC800物联网mqtt协议开发指南:从入门到实战(1)

    由于工作需要,开启了一个物联网开发的小项目,4G模块是EC800M,由于本人也是从0开始接触物联网开发,所以将会把整个系统的搭建流程分享出来供大家参考,有合作意向的同仁们也可以随时私信我。 1. 开发板           EC800的开发板,网上几十块钱一个,淘宝直接搜索

    2024年04月10日
    浏览(45)
  • 微信小程序-关于新版隐私协议接口wx.onNeedPrivacyAuthorization的适配解读以及实现代码

    代码插件已集成,即插即用, 五分钟集成进项目, 免费下载 ,欢迎大家交流  微信小程序用户隐私保护协议弹窗插件下载 官方公告地址:关于小程序隐私保护指引设置的公告 | 微信开放社区 1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下,否则将会

    2024年02月10日
    浏览(51)
  • 14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序

    Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是 QNetworkRequest、QNetworkReply和QNetworkAccessManager。 QNetworkRequest 类通过一个URL 地址发起网络协议请求,也保存网络请求的信息,目前支持 HTTP、FTP 和局部文件 URLs的下载或上传。 QNe

    2024年02月13日
    浏览(54)
  • 微信小程序-关于新版隐私协议接口wx.onNeedPrivacyAuthorization getPrivacySetting requirePrivacyAuthorize的适配解读以及实现代码

    代码插件已集成,即插即用, 五分钟集成进项目, 免费下载 ,欢迎大家交流  微信小程序用户隐私保护协议弹窗插件下载 官方公告地址:关于小程序隐私保护指引设置的公告 | 微信开放社区 1、首先看一下这个网址,里边包含涉及到的隐私的接口,这些接口都要适配一下,否则将会

    2024年02月10日
    浏览(46)
  • uniapp新版微信小程序用户隐私协议授权

    manifest.json文件中进行配置 App.vue中配置 判断用户有没有进行过隐私授权 编写组件 使用组件

    2024年02月09日
    浏览(59)
  • uniapp实现微信小程序隐私协议组件封装

    uniapp实现微信小程序隐私协议组件封装。 隐私协议封装组件后快速调用。 diy-privacy/diy-privacy

    2024年02月07日
    浏览(45)
  • uniapp微信小程序《隐私保护协议》弹窗处理流程

    背景 《关于小程序隐私保护指引设置的公告》 《小程序隐私协议开发指南》 流程 1.第一步 必须设置且审核通过!!! 2.第二步 uniapp在manifest.json中添加!!! 很多人前两步没做或者做的不对,导致出现needAuthorization一直为false情况 3.第三步 此处需要根据情况决定,在何时弹

    2024年02月08日
    浏览(72)
  • 【微信小程序 uniapp】 ws-wx-privacy 微信隐私保护弹出框 隐私协议弹出框

    插件地址 (https://mp.weixin.qq.com/wxamp/basicprofile/index?token=1956320193lang=zh_CN) 4. 将调试基础库改为 3.0.0以上。 微信开发者工具-详情-本地设置-调试基础库 5. 页面 使用示例 仅有在指引中 声明所处理的用户信息 ,才可以调用平台提供的对应接口或组件。若未声明,对应接口或组件将

    2024年02月08日
    浏览(54)
  • 用户隐私问题小程序审核不通过,微信小程序隐私保护开发指南

    目录 小程序隐私协议开发指南 一、功能介绍 二、接入流程 1. 配置《小程序用户隐私保护指引》 2. 主动查询隐私授权同步状态以及展示隐私协议 3. 被动监听隐私接口需要用户授权事件 4. 清空历史同步状态 三、其他说明 四、完整示例demo 五、常见错误说明 uniapp小程序特别指

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包