【快应用】adbutton如何直接下载广告而不跳落地页再下载

 【关键词】

原生广告、adbutton、下载

【问题背景】

快应用中的原生广告推出了adbutton组件来直接下载广告app,在使用的时候,点击adbutton按钮的安装文案,不是直接下载广告app,而是跳转到落地页后直接下载,这种情形该如何解决?

相关代码:

<template>

  <!-- Only one root node is allowed in template. -->

  <div class="container">

    <div class="item-container">

      <input class="input-text" placeholder="请输入slotid" onchange="setProductIdValue"></input>

      <input type="button" class="btn" value="加载并展示原生广告" onclick="showNativeAd()" />

      <ad-button if="native.isShowImg" class="adbutton" adunitid="{{native.adUnitId}}" adid="{{native.adData.adId}}" open-type="1" valuetype="1" onclick="onAdButtonClick()"></ad-button>

      <div if="native.isShow" class="container">

        <stack>

          <video id="video" if="native.isShowVideo" src="{{native.adVideoSrc}}" autoplay="true" onclick="reportNativeClick()" class="ad-video"></video>

          <image if="native.isShowImg" src="{{native.adImgSrc}}" onclick="reportNativeClick()"></image>

        </stack>

        <text if="native.isShowData">{{ native.adData }}</text>

        <text if="native.errStr">{{ native.errStr }}</text>

        <text if="native.isShowDesc">{{ native.desc }}</text>

      </div>

    </div>

  </div>

</template>

 

<style>

  .container {

    flex: 1;

    flex-direction: column;

  }

  .input-text {

    height: 80px;

    line-height: 80px;

    padding-left: 30px;

    padding-right: 30px;

    margin-left: 30px;

    margin-right: 30px;

    border-top-width: 1px;

    border-bottom-width: 1px;

    border-color: #999999;

    font-size: 30px;

    background-color: #ffffff;

  }

  .adbutton {

    height: 100px;

    width: 600px;

    text-align: center;

    margin-right: 60px;

    margin-left: 60px;

    margin-bottom: 50px;

    font-size: 30px;

    background-color: rgba(176, 14, 136, 0.6);

    color: rgba(52, 92, 65, 0.945);

    border-radius: 88;

    opacity: 0.9;

    progressbar-color: rgba(51, 10, 89, 0.931415926);

    progressbar-text-color: #8b0000;

    progressbar-background-color: hsl(001, 65%, 075%);

  }

  .btn {

    height: 80px;

    text-align: center;

    border-radius: 5px;

    margin-right: 60px;

    margin-left: 60px;

    margin-bottom: 50px;

    color: #ffffff;

    font-size: 30px;

    background-color: #0faeff;

  }

  .item-container {

    margin-top: 50px;

    margin-right: 60px;

    margin-left: 60px;

    flex-direction: column;

    align-items: center;

  }

  image {

    width: 100%;

  }

  .ad-video {

    object-fit: contain;

    width: 100%;

    height: 415px;

  }

</style>

 

<script>

  import ad from '@service.ad'

  let nativeAd

  export default {

    componentName: 'ad',

    provider: '',

    data: {

      native: {

        adUnitId: 'testb65czjivt9',

        isShow: 'false',

        adData: {},

        isShowImg: false,

        isShowVideo: false,

        isShowData: false,

        isShowDesc: false,

        errStr: '',

        adImgSrc: '',

        adImgSrc1: '',

        adImgSrc2: '',

        adVideoSrc: ''

      }

    },

    hideAll() {

      this.native.isShow = false

      this.native.isShowImg = false

      this.native.isShowVideo = false

      this.native.isShowDesc = false

    },

    showNativeAd() {

      nativeAd = ad.createNativeAd({ adUnitId: this.native.adUnitId })

      nativeAd.onLoad((data) => {

        console.info('ad data loaded: ' + JSON.stringify(data))

        this.native.adData = data.adList[0]

        if (this.native.adData) {

          if (this.native.adData.imgUrlList) {

            this.native.adImgSrc = this.native.adData.imgUrlList[0]

            this.native.isShowImg = true

          } else {

            this.native.isShowImg = false

            this.native.adImgSrc = ''

          }

          if (this.native.adData.desc) {

            this.native.desc = this.native.adData.desc

            this.native.isShowDesc = true

          }

          let showVideoFlag = false

          if (this.native.adData.videoUrlList && this.native.adData.videoUrlList[0]) {

            this.native.adVideoSrc = this.native.adData.videoUrlList[0]

            showVideoFlag = true

          } else {

            this.native.isShowVideo = false

            this.native.adVideoSrc = ''

          }

          if (this.native.isShowImg && showVideoFlag) {

            setTimeout(() => {

              this.native.isShowVideo = true

              this.native.isShowImg = false

            }, 1000)

          }

        }

        this.native.isShow = true

        this.native.errStr = ''

      })

      nativeAd.onError((e) => {

        console.error('load ad error:' + JSON.stringify(e))

        this.native.isShowImg = false

        this.native.isShowVideo = false

      })

      nativeAd.load()

    },

    reportNativeClick() {

      nativeAd.reportAdClick({

        'adId': this.native.adData.adId

      })

    },

    setProductIdValue: function (e) {

      this.native.adUnitId = e.value

    },

    onAdButtonClick(event) {

      console.error('result code is : ', event.resultCode)

      nativeAd.reportAdClick({

        'adId': this.native.adData.adId

      })

    }

  }

</script>

【问题分析】

可以看到adbutton的点击事件是onAdButtonClick控制的,在点击时进行了一个上报广告点击,看起来是没有任何问题的。实则是不对的因为该接口除了一个上报广告点击的功能外,还有一个额外的作用就是跳转到广告落地页,这个我们可以在原生广告使用时就可以看出来。

再看下adbutton的描述:

cke_1101.png

描述里是用来下载广告主app的,所以当在adbutton点击后调用reportadclick进行上报的时候看到的就是跳转落地页并下载了。

【解决方法】

去掉adbutton中的上报广告点击调用,此按钮是用来进行下载和打开广告主app的。

    onAdButtonClick(event) {

      console.error('result code is : ', event.resultCode)

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/58387.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis主从复制、哨兵机制、集群分片

目录 一.主从复制 1.概述 2.主从架构相比于单点架构的优势 3.主从复制原理和工作流程 第一次同步 第一阶段&#xff1a;建立链接、协商同步 第二阶段&#xff1a;主服务器同步数据给从服务器 第三阶段&#xff1a;主服务器发送新写操作命令给从服务器 基于长连接的命…

vscode 通过mongoose 连接mongodb atlas

了解mongodb 的项目结构 1.代表集群名称 > 2.代表数据库名称>3.代表每个 collection名称 三者范围为从大到小的关系 &#xff08;一对多&#xff09;。每个集群有不同的连接地址、用户信息&#xff08;Database Access&#xff09;、ip配置信息&#xff08;Network Acce…

Modbus TCP转Profinet网关modbus tcp转以太网

大家好&#xff0c;今天我们来聊一聊如何使用捷米特的Profinet转modbusTCP协议转换网关在博图上进行非透传型配置。 1, 首先&#xff0c;我们需要安装捷米特JM-TCP-PN的GSD文件&#xff0c;并根据现场设备情况配置modbusTCP地址。然后&#xff0c;在博图中添加该GSD文件&#x…

应用在测温仪中的数字温度传感芯片

测温仪&#xff08;thermometric indicator&#xff09;&#xff0c;是温度计的一种&#xff0c;用红外线传输数字的原理来感应物体表面温度&#xff0c;操作比较方便&#xff0c;特别是高温物体的测量。应用广泛&#xff0c;如钢铸造、炉温、机器零件、玻璃及室温、体温等各种…

一零六六、线程池、锁

线程池&#xff1a; 管理线程创建&#xff0c;销毁的一系列池子 如何创建线程池&#xff1f; ExecutorService executor Executors.newFixedThreadPool(n); 创建线程有多种方法&#xff0c;为何要用线程池&#xff1f; 减少性能开销,每次执行任务都新建线程造成cpu资源浪费…

Shell脚本学习-MySQL单实例和多实例启动脚本

已知MySQL多实例启动命令为&#xff1a; mysqld_safe --defaults-file/data/3306/my.cnf & 停止命令为&#xff1a; mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown 请完成mysql多实例的启动脚本的编写&#xff1a; 问题分析&#xff1a; 要想写出脚…

MINIO安装(centos7)

步骤1&#xff1a;安装wget 在开始安装MinIO之前&#xff0c;需要安装wget命令行工具。可以使用以下命令在CentOS系统中安装wget&#xff1a; sudo yum install wget 步骤2&#xff1a;下载MinIO wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio 将下…

分布式应用:ELK企业级日志分析系统

目录 一、理论 1.ELK 2.ELK场景 3.完整日志系统基本特征 4.ELK 的工作原理 5.ELK集群准备 6.Elasticsearch部署&#xff08;在Node1、Node2节点上操作&#xff09; 7.Logstash 部署&#xff08;在 Apache 节点上操作&#xff09; 8.Kiabana 部署&#xff08;在 Node1 节点…

常用SQL语句总结

SQL语句 文章目录 SQL语句1 SQL语句简介2 DQL&#xff08;数据查询语句&#xff09;3 DML&#xff08;数据操纵语句&#xff09;4 DDL&#xff08;数据定义语句&#xff09;5 DCL&#xff08;数据控制语句&#xff09;6 TCL&#xff08;事务控制语句&#xff09; 1 SQL语句简介…

面试热题(最长回文子串)

给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 最长回文子串以前的博客已经讲过KMP算法以及比较不常见的Manacher算法…

使用数字陷波器滤除工频信号

使用数字陷波器滤除工频信号 在实际测量时经常会受到工频信号&#xff08;交流50Hz&#xff09;的干扰&#xff0c;有时干扰还很大&#xff0c;有用信号完全被淹没了。可以应用数字陷波器来消除工频信号的干扰。 数字陷波器函数如下函数&#xff1a;iirnotch功能&#xff1a;数…

【JVM】(二)深入理解Java类加载机制与双亲委派模型

文章目录 前言一、类加载过程1.1 加载&#xff08;Loading&#xff09;1.2 验证&#xff08;Verification&#xff09;1.3 准备&#xff08;Preparation&#xff09;1.4 解析&#xff08;Resolution&#xff09;1.5 初始化&#xff08;Initialization&#xff09; 二、双亲委派…

【go-zero】docker镜像直接部署API与RPC服务 如何实现注册发现?docker network 实现 go-zero 注册发现

一、场景&问题 使用docker直接部署go-zero微服务会发现API无法找到RPC服务 1、API无法发现RPC服务 用docker直接部署 我们会发现API无法注册发现RPC服务 原因是我们缺少了docker的network网桥 2、系统内查看 RPC服务运行正常API服务启动,通过docker logs 查看日志还是未…

寄存器详解(一)

目录 前言&#xff1a; 通用寄存器 示例&#xff1a; 通用寄存器的划分 汇编指令 cpu物理地址的形成 地址加法器运算示例&#xff1a; 1. 相关部件提供段地址和偏移地址 2. 段地址和偏移地址送入地址加法器 3. 段地址*16 4. 求出物理地址 5. 输出物理地址 段的概念 Deb…

在线五子棋对战

目录 数据管理模块&#xff08;数据库设计&#xff09; 前端界面模块 业务处理模块 会话管理模块网络通信模块(session,cookie) 在线管理模块 房间管理模块 用户匹配模块 项目扩展 数据管理模块&#xff08;数据库设计&#xff09; 数据库中有可能存在很多张表&#xf…

MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图

MQTT 概述 MQTT (Message Queue Telemetry Transport) 是一个轻量级传输协议&#xff0c;它被设计用于轻量级的发布/订阅式消息传输&#xff0c;MQTT协议针对低带宽网络&#xff0c;低计算能力的设备&#xff0c;做了特殊的优化。是一种简单、稳定、开放、轻量级易于实现的消息…

APP开发中的性能优化:提升用户满意度的关键

APP开发中的性能优化是需要持续进行的&#xff0c;它不仅能够让用户体验到 APP的使用感受&#xff0c;还能在一定程度上提升用户的满意度&#xff0c;从而提升 APP的粘性和转化率。不过在实际开发中&#xff0c;很多 APP开发公司会存在性能优化上的问题&#xff0c;这就需要了解…

[C++项目] Boost文档 站内搜索引擎(3): 建立文档及其关键字的正排 倒排索引、jieba库的安装与使用...

之前的两篇文章: 第一篇文章介绍了本项目的背景, 获取了Boost库文档 &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…第二篇文章 分析实现了parser模块. 此模块的作用是 对所有文档html文件, 进行清理并汇总 &#x1fae6;[C项目] …

【力扣每日一题】2023.8.4 不同路径3

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 在二维网格之上&#xff0c;让我们模拟从开头走到末尾&#xff0c;并且要经过所有能经过的点&#xff0c;问我们有多少种走法。 看到这道…

c++学习(异常)[28]

c语言处理错误机制 c异常概念 try {//保护的标识代码 }catch(ExceptionName e1) {//catch块 }catch(ExceptionName e2) {//catch块 }catch(ExceptionName eN) {//catch块 }匹配 优先调用链中最近的捕获 异常若不被捕获则报错终止程序 try { }catch ( ... ) //可以捕获任意类…