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

news2024/11/13 15:26:58

 【关键词】

原生广告、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)

    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理) em

​ 工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

cad中的曲线区域是如何绘制的

cad中的曲线区域是如何绘制的 最近需要把cad中的设备锁在区域绘画出来&#xff0c;不同设备放在不同区域 组合工具命令PLPE 步骤&#xff1a; 1.先用pl绘制&#xff0c;把设备都是绘制在pl的曲线范围内 2.用pe命令&#xff0c;选择pl的区域进行曲线&#xff08;s&#xff…

基于SpringBoot+Vue的MOBA类游戏攻略分享平台设计与实现(源码+LW+部署文档等)

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

软考A计划-系统集成项目管理工程师-信息文档和配置管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

华为杯竞赛、高教社杯和数学建模国赛实现逆袭;评奖评优加分冲冲冲!

目录 ⭐ 赛事介绍 ⭐ 参赛好处 ⭐ 辅导比赛 ⭐ 赛事介绍 华为杯全国研究生数学建模竞赛是由华为公司主办的一项面向全国研究生的数学建模竞赛。该竞赛旨在通过实际问题的建模和解决&#xff0c;培养研究生的创新能力和团队合作精神&#xff0c;推动科技创新和应用。华为杯竞…

【超细节】Vue3的属性传递——Props

目录 前言 一、定义 二、使用 1. 在 setup 中&#xff08;推荐&#xff09; 2. 非 setup 中 3. 对象写法的校验类型 4. 使用ts进行类型约束 5. 使用ts时props的默认值 三、注意事项 1. Prop 名字格式 2. 对象或数组类型的默认值 3. Boolean 类型转换 前言 Vue3相较…

代码签名证书是什么?

代码签名证书是什么&#xff1f;有什么作用&#xff1f;代码签名证书是提供软件开发者可以进行代码软件数字签名的认证服务。通过对代码的数字签名可以消除软件在Windows系统被下载安装时弹出的“不明开发商”安全警告&#xff0c;保证代码完整性和不被恶意篡改&#xff0c;使软…

【严重】泛微 e-cology <10.58.3 任意文件上传漏洞

漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微 e-cology 10.58.3之前版本存在任意文件上传漏洞&#xff0c;由于上传接口身份认证缺失&#xff0c;未经过身份验证的攻击者可以构造恶意请求将文件上传至服务器&#xff0c;攻击者可能通过上传jsp…

Python web实战之 Django 的模板语言详解

关键词&#xff1a; Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一&#xff0c;Django 提供了一套完整的 MVC 模式&#xff0c;其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门 Dj…

神策新一代分析引擎架构演进

近日&#xff0c;神策数据已经推出全新的神策分析 2.5 版本&#xff0c;该版本支持分析模型与外部数据的融合性接入&#xff0c;构建全域数据融合模型&#xff0c;实现从用户到经营的全链路、全场景分析。新版本的神策分析能够为企业提供更全面、更有效的市场信息和经营策略&am…

《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品规格

目录 节点类型 节点数量 节点规格 腾讯云向量数据库(Tencent Cloud VectorDB)采用分布式部署架构,每个节点相互通信和协调,实现数据存储与检索。客户端请求通过 Load balance 分发到各节点上。具体信息,请参见 产品架构。 节点类型 腾讯云向量数据库依据存储节点 CPU …

A02_启动测速和切换站点

一 业务功能 二 问题 三 业务流程 1 初始化网络 2 测速选站点 3 拉取站点 4 手动切换站点 四 重点代码 public class StationMeasure {private static final String TEST_STATION_URL "/test/ips";private static final String STATION_URL "/product/ips&…

鸟哥马哥共叙Linux发展

导读北京时间3月28日&#xff0c;由51CTO学院和人民邮电出版社信息技术分社联合举办的[开放见远]“鸟哥”大陆行Linux技术沙龙在位于北京市西三环久凌大厦的51CTO学院举行。 台湾著名Linux网站——“鸟哥的Linux私房菜”站长蔡德明&#xff0c;51CTO学院讲师马哥教育创始人马永…

EasyRecovery15简体中文个人版专业手机数据恢复软件

EasyRecovery15数据恢复软件是一款文件恢复软件&#xff0c;能够恢复内容类型非常多&#xff0c;包括办公文档、文件夹、电子邮件、照片、音频等一些常用文件类型都是可以进行恢复&#xff0c;操作非常简单&#xff0c;只需要将存储设备连接到电脑上&#xff0c;运行EasyRecove…

异常(上)概述,捕捉异常,try-catch语句的详细使用

文章目录 前言一、异常是什么&#xff1f;二、捕捉异常 1.自动捕捉异常2.try-catch语句捕捉异常 a.多重try-catch代码块b.异常的中断机制c.finally代码块恢复机制总结 前言 该文介绍了Java异常的概述&#xff0c;运行代码时&#xff0c;异常的捕捉&#xff0c;及其使用 try-cat…

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 始篇

文章目录 QT图形视图系统介绍开始搭建MainWindow框架设置scene的属性缩放功能的添加加上标尺 QT图形视图系统 介绍 详细的介绍可以看QT的官方助手&#xff0c;那里面介绍的详细且明白&#xff0c;需要一定的英语基础&#xff0c;我这里直接使用一个开源项目来介绍QGraphicsVi…

leetcode 738. 单调递增的数字

2023.8.4 这题用暴力法会超时&#xff0c;我就没试了&#xff0c;采用了个挺巧的方法&#xff0c;为了方便需要先将整数n转换为字符串的形式&#xff0c;然后从后向前遍历&#xff0c;当两个数字非递增时&#xff0c;将前一个数字--&#xff0c;后一个数字的位置记录在index中&…

路由的hash和history模式的区别

目录 ✅ 路由模式概述 一. 路由的hash和history模式的区别 1. hash模式 2. history模式 3. 两种模式对比 二. 如何获取页面的hash变化 ✅ 路由模式概述 单页应用是在移动互联时代诞生的&#xff0c;它的目标是不刷新整体页面&#xff0c;通过地址栏中的变化来决定内容区…

Three.js 创建网格辅助线,坐标轴辅助线,模型骨骼辅助线

three.js中的辅助线使用 1.网格辅助线&#xff08;GridHelper&#xff09; 2.坐标轴辅助线&#xff08;AxesHelper&#xff09; 3.模型骨骼辅助线(SkeletonHelper) 在上一篇 Three.js加载外部glb,fbx,gltf,obj 模型文件 的文章基础上新加入一个创建 辅助线的函数 createHel…

原型链污染例题复现

一、什么是原型链 下面我们通过这个小例子来看看。 可以看到b在实例化为test对象以后&#xff0c;就可以输出test类中的属性a了。这是因为在于js中的一个重要的概念&#xff1a;继承。而继承的整个过程就称为该类的原型链。 在javascript中,每个对象的都有一个指向他的原型(p…