HarmonyOS 鸿蒙Next中banner广告无法监听到任何点击事件

HarmonyOS 鸿蒙Next中banner广告无法监听到任何点击事件

AutoAdComponent({
  adParam:this.params.adRequestParams,
  adOptions:this.params.adOptions,
  displayOptions:this.params.adDisplayOptions,
  interactionListener:{
    onStatusChanged:(status: string, ad: advertising.Advertisement, data: string)=>{
      switch (status) {
        case 'onAdOpen':
          break;
        case 'onAdClick':
          break;
        case 'onAdClose':
          this.isRemoved = true
          break;
        case 'onAdLoad':
          break;
        case 'onAdFail':
          break;
      }
    }
  }
})
  .aspectRatio(this.params.ratio)

更多关于HarmonyOS 鸿蒙Next中banner广告无法监听到任何点击事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

开发者您好,使用以下demo可以监听到onAdClick事件未能复现问题,请提供能复现问题的最小demo和当前开发工具版本(Help->About DevEco Studio)、运行时API版本(File->Project Structure->Project->Basic Info->Compatible SDK)、手机系统版本信息 (设置->关于本机)、hilog日志信息(1.打开cmd 2.清除:hdc shell hilog -r 3.监听抓日志:hdc shell hilog >log.txt)。感谢您的理解与支持。

示例代码:

import { advertising, AutoAdComponent } from '@kit.AdsKit';

@Entry
@Component
struct AutoAdComponentPage {
  // 广告请求参数
  private adRequestParams: advertising.AdRequestParams = {
    // 广告位ID
    adId: 'testw6vs28auh3',
    // 广告类型
    adType: 8,
    // 广告位宽
    adWidth: 360,
    // 广告位高
    adHeight: 57
  };
  // 广告配置参数
  private adOptions: advertising.AdOptions = {};
  // 广告展示参数
  private adDisplayOptions: advertising.AdDisplayOptions = {
    // 广告轮播的时间间隔,单位ms,取值范围[30000, 120000]
    refreshTime: 10000
  };

  build() {
    Column() {
      AutoAdComponent({
        adParam: this.adRequestParams,
        adOptions: this.adOptions,
        displayOptions: this.adDisplayOptions,
        interactionListener: {
          onStatusChanged: (status: string, ad: advertising.Advertisement, data: string) => {
            switch (status) {
              case 'onAdOpen':
                break;
              case 'onAdClick':
                break;
              case 'onAdClose':
                // this.isRemoved = true
                break;
              case 'onAdLoad':
                break;
              case 'onAdFail':
                break;
            }
          }
        }
      })
        .width('100%')
        .visibility(Visibility.Visible)
    }
    .width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next中banner广告无法监听到任何点击事件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我解决了这个问题.主要原因在
adRequestParams 的广告key和类型设置有误,导致 case 里面所有事件没有响应,感谢大家

在onAdClick里写你的业务逻辑:

case 'onAdClick':

case里打印日志看看,会不会是广告没有加载成功

在HarmonyOS Next中,banner广告点击事件监听失败通常与广告组件的生命周期或事件绑定方式有关。请检查广告组件是否已正确初始化并添加到页面,确保在onPageShow生命周期中注册监听器。使用ArkTS的@Watch装饰器或事件回调函数来捕获点击事件,避免在组件未挂载时进行绑定。

在HarmonyOS Next中,Banner广告的点击事件监听确实需要正确的配置。从您提供的代码片段来看,您使用了interactionListener并监听了onAdClick状态,这是一个正确的方向。

但问题可能出在以下几个方面:

  1. 广告容器交互性:确保承载AutoAdComponent的容器(或其父组件)没有设置enabled(false)或拦截了触摸事件。广告组件本身需要能够接收用户的触摸输入。

  2. 广告位与素材状态onAdClick回调的触发,依赖于广告SDK成功拉取到可点击的广告素材。请先确认onAdLoad成功触发,并且广告素材正常展示。如果广告未成功加载或加载的是纯展示类素材,则可能无点击事件。

  3. 监听器绑定时机:请确保interactionListener在广告组件初始化时已正确传入,并且没有在后续被覆盖或置空。

  4. API使用差异:HarmonyOS Next的广告API可能与旧版存在差异。请再次核对官方文档中关于AutoAdComponentBannerAdinteractionListener定义,确认onAdClick状态字符串的拼写完全一致(大小写敏感)。

一个常见的排查步骤是,在onAdLoadonAdFail回调中添加日志,确认广告加载阶段的状态。如果广告加载成功但仍无点击回调,则需重点检查第1点关于组件交互性的设置。

由于您已基本按照监听事件的方式编写代码,问题更可能源于运行时环境或配置,而非语法本身。

回到顶部