uniapp实现微信小程序隐私协议组件封装

简介: uniapp实现微信小程序隐私协议组件封装

uniapp实现微信小程序隐私协议组件封装

<template>
  <view class="diygw-modal basic" v-if="showPrivacy" :class="showPrivacy?'show':''" style="z-index: 1000000">
    <view class="diygw-dialog diygw-dialog-modal basis-lg">
      <view class="justify-end diygw-bar">
        <view class="content"> {{title}} </view>
      </view>
      <view>
        <view class="flex diygw-dialog-content flex-direction-column privacy-content">
          <view class="diygw-col-24"> {{contentstart}}<text :style="{color:agreebg}"  @tap="handleOpenPrivacyContract">{{privacy}}</text>。{{contentend}} </view>
          <view class="flex diygw-col-24">
            <button id="agree-btn" :style="{background:agreebg,color:agreecolor}" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgree" class="diygw-btn  radius flex-sub margin-xs">同意并继续</button>
          </view>
          <view class="flex diygw-col-24">
            <button id="disagree-btn" :style="{background:disagreebg,color:disagreecolor}" class="diygw-btn  radius flex-sub margin-xs" @tap="handleDisagree">不同意</button>
          </view>
        </view>
      </view>
    </view> 
  </view> 
</template>
 
<script>
  export default {
    props: {
      title: {
        type: String,
        default: '用户隐私保护提示'
      },
      contentstart:{
        type: String,
        default:'亲爱的用户,感谢您信任并使用本小程序。请您在点击同意之前仔细阅读并充分理解',
      },
      privacy:{
        type: String,
        default:'《用户隐私保护指引》',
      },
      contentend:{
        type: String,
        default:'当点击同意并继续时,即表示您已理解并同意该条款内容,该条款将对您产生法律约束力;如您不同意,将无法继续使用小程序相关功能。',
      },
      agreebg:{
        type: String,
        default:'#07c160',
      },
      agreecolor:{
        type: String,
        default:'#fff',
      },
      disagreebg:{
        type: String,
        default:'#aaaaaa',
      },
      disagreecolor:{
        type: String,
        default:'#fff',
      },
      isexit:{
        type:Boolean,
        default:true
      },
    },
    data() {
      return {
        showPrivacy: false,
        resolvePrivacyAuthorization: null,
        privacyResolves: new Set()
      }
    },
    mounted() {
      this.init()
    },
    methods: {
      // 监听何时需要提示用户阅读隐私政策
      init() {
        let thiz = this;
        // #ifdef MP-WEIXIN
        if (wx.onNeedPrivacyAuthorization) {
          wx.requirePrivacyAuthorize({
            success: (e) => {
              // 用户同意授权
              // 继续小程序逻辑
              console.log(e)
              // 用户同意授权
              // 继续小程序逻辑
            },
            fail: (e) => {
              console.log(e)
            }, // 用户拒绝授权
            complete: () => {}
          })
          wx.onNeedPrivacyAuthorization((resolve) => {
            thiz.resolvePrivacyAuthorization = resolve
            thiz.openPrivacy()
          })
        }
        // #endif
      },
      //打开隐私协议
      openPrivacyContract() {
        wx.openPrivacyContract({
          success(res) {
            console.log('打开隐私协议', res);
          },
          fail(err) {
            console.error('打开隐私协议失败', err)
          }
        });
      },
      // 不同意
      handleDisagree() {
        this.resolvePrivacyAuthorization({
            event: 'disagree',
            buttonId: 'disagree-btn'
        });
        //关闭弹窗
        this.disopenPrivacy()
        if(this.isexit){
          //退出小程序
          wx.exitMiniProgram();
        }
        
      },
      // 同意并继续
      handleAgree() {
        this.resolvePrivacyAuthorization({
            event: 'agree',
            buttonId: 'agree-btn'
        });
        //关闭弹窗
        this.disopenPrivacy()
      },
      //打开弹窗
      openPrivacy() {
        if (this.showPrivacy === false) {
          this.showPrivacy = true
        }
      },
      //关闭弹窗
      disopenPrivacy() {
        if (this.showPrivacy === true) {
          this.showPrivacy = false
        }
      },
    }
  }
</script>
 
<style>
  .privacy-content{
    padding:10px;
    line-height: 1.5;
    font-size: 28rpx;
  }
</style>

隐私协议封装组件后快速调用。

<diy-privacy></diy-privacy>


目录
相关文章
|
3月前
|
小程序 BI Go
当“企业微信协议”遇上旧iPad:一条被遗忘的推送如何撬动千万订单
在618大促中,面对短信退订率高、触达难的问题,运营人员巧妙利用闲置iPad登录企业微信,挖掘其未公开的协议接口,实现高效用户召回,最终提升转化率,保住预算。
146 0
|
2月前
|
JSON 运维 安全
当“企业微信iPad协议”潜入深夜值班室:一段代码引发的零号群风暴
深夜突现群聊异常,运维紧急排查发现:有人利用企业微信iPad协议将群控脚本植入系统,导致用户被反复踢出。追溯根源,为降本增效,团队此前绕开官方接口,自建网关解析iPad协议事件流,实现群自动化。但协议高自由度伴生风险,一次逻辑误判便引发雪崩。经加固幂等性、引入审计队列与双重签名,终控危机。技术无畏,亦需敬畏——能力越强,责任越重。
217 3
|
3月前
|
算法 iOS开发 CDN
“企业微信iPad协议”第 0x04 天:当朋友圈接口在凌晨 2:14 突然返回 404
新品上线紧急任务:300位经销商朋友圈同步海报。突破官方限制,利用企业微信iPad协议私有接口,自动化上传发布。凌晨遭遇404,迅速定位并修复算法版本问题,最终高效完成推送,点赞超4200。技术在文档之外,也在边界之内。
215 0
|
3月前
|
iOS开发 CDN Python
“企业微信iPad协议”沉默72小时后,一条群公告把掉粉率拉回0%
周三社群掉粉12%,因“福利推送”被刷屏折叠。接手后48小时内,发现企微未文档化接口:利用CDN预加载、iPad端特殊流控,拆分推送时段。27行Python脚本实现错峰发送,券核销率反升8%,掉粉率降至0.3%。私域从打扰变精准。
283 1
|
3月前
|
消息中间件 运维 应用服务中间件
“企业微信iPad协议”凌晨断链:当最后一台测试机决定集体沉默
凌晨1:12,三连报警突响:“实例心跳超时”“消息队列堆积”“老板提刀赶来”。问题源于企业微信iPad协议迁移私有化后,因新旧CA根证书不兼容,触发TLS握手失败,导致全量会话中断。苹果严苛的证书校验机制将请求判定为中间人攻击,直接断连。排查抓包定位:客户端内置证书Pin仅认旧根。解决方案简单却关键:F5重导旧根证书,Nginx配置`ssl_trusted_certificate`指向旧链并reload。2:58,系统恢复,演练数据零丢失。教训深刻:文档未提CA白名单,真实逻辑藏于客户端二进制。部署前务必比对证书指纹,否则警报先于用户消息抵达。
179 1
|
3月前
|
监控 iOS开发 CDN
“企业微信iPad协议”凌晨沉默实验:当群发接口只剩心跳声
预热群发遇阻,企业微信iPad协议暗藏静默流控:5分钟超300条即限速,无报错仅返空ID。拆分50人群组,间隔65秒发送,启用CDN直传,终完成2987人触达,折叠率仅0.7%。接口沉默处,亦有信号。
152 0
|
3月前
|
机器人 iOS开发 索引
“企业微信iPad协议”凌晨 2:24:一句自动回复把投诉率从 8% 拉到 0.3%
凌晨1:05,客服告急:发错货、优惠券失效、机器人失灵。问题源于关键词严格匹配机制。我调用企业微信iPad协议的模糊搜索接口,用40行Python实现语义向量匹配,支持错别字与口语化提问。热更新后,响应仅420ms,投诉率降至0.3%,人工接入降62%。一夜改写服务体验,KPI稳了。
266 0
|
3月前
|
iOS开发
“企业微信iPad协议”第0x0B次编译:当朋友圈接口在凌晨悄然返回空数组
新品海报发布失败,排查发现企业微信iPad端因本地时间偏差超60秒,导致`ext_ticket`校验失败。NTP校准后恢复正常。问题根源:独立加签逻辑对时间敏感,且错误不提示。精准时间成合规关键。
247 0
|
3月前
|
传感器 运维 监控
企业微信iPad协议”凌晨回声:一条被@的消息如何阻止了 P0 故障
凌晨告警,运维失联,仅凭一台旧iPad和企业微信测试号,通过私有协议实时捕获@消息,抢先3分钟触发回滚,恢复订单接口。边缘通道成应急“传感器”,9分钟抢回系统稳定,守住绩效。技术有时在主线之外。
295 0
|
10月前
|
JSON 缓存 小程序
微信小程序组件封装与复用:提升开发效率
本文深入探讨了微信小程序的组件封装与复用,涵盖组件的意义、创建步骤、属性与事件处理,并通过自定义弹窗组件的案例详细说明。组件封装能提高代码复用性、开发效率和可维护性,确保UI一致性。掌握这些技能有助于构建更高质量的小程序。

热门文章

最新文章