harmonyos next AdComponent?

@ohos.advertising.AdComponent 如何使用

阅读 603
avatarAI BotBETA
# 如何使用 @ohos.advertising.AdComponent 在 HarmonyOS

在 HarmonyOS 中,`@ohos.advertising.AdComponent` 是用于集成和管理广告组件的 API。以下是如何使用 `@ohos.advertising.AdComponent` 的基本步骤:

1. **引入必要的模块**:
   首先,在你的 JavaScript 文件中引入广告模块。

import ad from '@ohos.advertising';


2. **创建 AdComponent 实例**:
创建 `AdComponent` 的实例,并配置广告参数(如广告位 ID、广告类型等)。

let adComponent = new ad.AdComponent({

   adSlotId: 'your_ad_slot_id',  // 替换为你的广告位 ID
   // 其他配置参数,如广告类型、尺寸等

});


3. **设置广告组件的视图**:
将广告组件添加到你的页面视图中。这通常涉及将广告组件的视图容器添加到页面的 DOM 树中。

let adContainer = document.getElementById('ad-container'); // 获取页面中的广告容器元素
if (adContainer) {

   adContainer.appendChild(adComponent.getElement()); // 将广告组件的视图添加到容器中

}


4. **加载和显示广告**:
调用 `load()` 方法来加载广告。加载成功后,广告会自动显示。

adComponent.load().then(() => {

   console.log('广告加载成功');

}).catch((error) => {

   console.error('广告加载失败: ', error);

});


5. **处理广告事件**:
你可以监听广告组件的事件,如广告加载成功、加载失败、点击等,以执行相应的逻辑。

adComponent.on('loadSuccess', () => {

   console.log('广告加载成功事件');

});

adComponent.on('loadFail', (error) => {

   console.error('广告加载失败事件: ', error);

});

adComponent.on('click', () => {

   console.log('广告点击事件');

});


确保你已经正确配置了广告位 ID 和其他必要的参数,并且你的应用已经获得了显示广告的权限。

注意:以上代码是一个基本的示例,实际使用中可能需要根据具体的广告平台和 API 文档进行调整。
1 个回答

AdComponent具体使用方式可参考文档,文档中有相关的实现代码:

import { advertising, identifier } from '@kit.AdsKit';
import { router } from '@kit.ArkUI';
import { common } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Componentstruct LoadAd {
  private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
  private oaid: string = '';

  aboutToAppear() {
    try {
      // 使用Promise回调方式获取OAID
      identifier.getOAID().then((data: string) => {
        this.oaid = data;
        hilog.info(0x0000, 'testTag', '%{public}s', 'Succeeded in getting adsIdentifierInfo by promise');
      }).catch((error: BusinessError) => {
        hilog.error(0x0000, 'testTag', '%{public}s',
          `Failed to get adsIdentifierInfo, error code: ${error.code}, message: ${error.message}`);
      })
    } catch (error) {
      hilog.error(0x0000, 'testTag', '%{public}s', `Catch err, code: ${error.code}, message: ${error.message}`);
    }
  }

  build() {
    Column() {
      Column() {
        // 跳转到原生广告展示页面
        Button("请求原生广告", { type: ButtonType.Normal, stateEffect: true }).onClick(() => {
          this.requestAd();
        })
      }.width('100%').height('80%').justifyContent(FlexAlign.Center)
    }
    .width('100%')
    .height('100%')
  }

  private requestAd(): void {
    // 广告展示参数
    const adDisplayOptions: advertising.AdDisplayOptions = {
      // 是否静音,默认不静音
      mute: false
    }
    // 原生广告配置
    const adOptions: advertising.AdOptions = {
      // 设置是否请求非个性化广告
      nonPersonalizedAd: 1,
      // 是否允许流量下载0:不允许,1:允许,不设置以广告主设置为准
      allowMobileTraffic: 0,
      // 是否希望根据 COPPA 的规定将您的内容视为面向儿童的内容: -1默认值,不确定 0不希望 1希望
      tagForChildProtection: -1,
      // 是否希望按适合未达到法定承诺年龄的欧洲经济区 (EEA) 用户的方式处理该广告请求: -1默认值,不确定 0不希望 1希望
      tagForUnderAgeOfPromise: -1,
      // 设置广告内容分级上限: W: 3+,所有受众 PI: 7+,家长指导 J:12+,青少年 A: 16+/18+,成人受众
      adContentClassification: 'A'
    }
    // 原生广告请求参数
    const nativeVideoAdReqParams: advertising.AdRequestParams = {
      // 'testu7m3hc4gvm'为测试专用的广告位ID,App正式发布时需要改为正式的广告位ID
      adId: 'testu7m3hc4gvm',
      adType: 3,
      adCount: 1,
      // 原生广告自定义扩展参数。等所有广告素材下载完后再回调
      enableDirectReturnVideoAd: true,
      oaid: this.oaid
    }
    // 广告请求回调监听
    const adLoaderListener: advertising.AdLoadListener = {
      // 广告请求失败回调
      onAdLoadFailure: (errorCode: number, errorMsg: string) => {
        hilog.error(0x0000, 'testTag', '%{public}s',
          `Failed to request ad, message: ${errorMsg}, error code: ${errorCode}`);
      },
      // 广告请求成功回调
      onAdLoadSuccess: (ads: Array<advertising.Advertisement>) => {
        hilog.info(0x0000, 'testTag', '%{public}s', 'Succeeded in requesting ad');
        // 调用原生广告展示页面
        routePage('pages/NativeAdPage', ads, adDisplayOptions);
      }
    };
    // 创建AdLoader广告对象
    const load: advertising.AdLoader = new advertising.AdLoader(this.context);
    // 调用广告请求接口
    load.loadAd(nativeVideoAdReqParams, adOptions, adLoaderListener);
  }
}

async function routePage(pageUri: string, ads: Array<advertising.Advertisement | null>,
  displayOptions: advertising.AdDisplayOptions) {
  let options: router.RouterOptions = {
    url: pageUri,
    params: {
      ads: ads,
      displayOptions: displayOptions
    }
  }
  try {
    router.pushUrl(options);
  } catch (error) {
    hilog.error(0x0000, 'testTag', '%{public}s',
      `Failed to routePage callback, code: ${error.code}, msg: ${error.message}`);
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进