@ohos.advertising (广告服务框架)

本模块提供广告操作能力,包括请求广告、展示广告。

说明: 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

import advertising from '@ohos.advertising';

AdLoader

提供加载广告的功能

系统能力: SystemCapability.Advertising.Ads

constructor

constructor(context: common.Context);

构造函数。

系统能力: SystemCapability.Advertising.Ads

参数:

参数名 类型 必填 说明
context common.Context ability或application的上下文环境。

示例:

其中context的获取方式参见各类Context的获取方式

import advertising from '@ohos.advertising';
import common from '@ohos.app.ability.common';

function createConstructor(context: common.Context): void {
  const load: advertising.AdLoader = new advertising.AdLoader(context);
}

loadAd

loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void

请求单广告位广告。

系统能力: SystemCapability.Advertising.Ads

参数:

参数名 类型 必填 说明
adParam AdRequestParams 广告请求参数。
adOptions AdOptions 广告配置。
listener AdLoadListener 请求广告回调监听。

错误码:

以下错误码的详细介绍请参见广告服务框架错误码参考

错误码ID 错误信息
21800001 System internal error.
21800003 Failed to load the ad request.

示例:

其中context的获取方式参见各类Context的获取方式

import advertising from '@ohos.advertising';
import common from '@ohos.app.ability.common';
import hilog from '@ohos.hilog'; 

function requestAd(context: common.Context): void {
  const adRequestParam: advertising.AdRequestParams = {
    // 广告类型
    adType: 3,
    // 测试广告位ID
    adId: "testy63txaom8", 
  };
  const adOptions: advertising.AdOptions = {
    // 设置广告内容分级上限
    adContentClassification: 'A',
    // 可选自定义参数,设置是否允许使用流量下载广告素材 0:不允许,1:允许
    allowMobileTraffic: 0,
  };
  // 广告请求回调监听
  const adLoaderListener: advertising.AdLoadListener = {
    // 广告请求失败回调
    onAdLoadFailure: (errorCode: number, errorMsg: string) => {
      hilog.error(0x0000, 'testTag', '%{public}s', `request single ad errorCode is: ${errorCode}, errorMsg is: ${errorMsg}`);
    },
    // 广告请求成功回调
    onAdLoadSuccess: (ads: Array<advertising.Advertisement>) => {
      hilog.info(0x0000, 'testTag', '%{public}s', 'request single ad success!');
      // 保存请求到的广告内容用于展示
      const returnAds = ads;
    }
  };
  // 创建AdLoader广告对象
  const load: advertising.AdLoader = new advertising.AdLoader(context);
  // 调用广告请求接口
  hilog.info(0x0000, 'testTag', '%{public}s', 'request single ad!');
  load.loadAd(adRequestParam, adOptions, adLoaderListener);
}

loadAdWithMultiSlots

loadAdWithMultiSlots(adParams: AdRequestParams[], adOptions: AdOptions, listener: MultiSlotsAdLoadListener): void

请求多广告位广告。

系统能力: SystemCapability.Advertising.Ads

参数:

参数名 类型 必填 说明
adParams AdRequestParams[] 广告请求参数。
adOptions AdOptions 广告配置。
listener MultiSlotsAdLoadListener 请求广告回调监听。

错误码:

以下错误码的详细介绍请参见广告服务框架错误码参考

错误码ID 错误信息
21800001 System internal error.
21800003 Failed to load the ad request.

示例:

其中context的获取方式参见各类Context的获取方式

import advertising from '@ohos.advertising';
import common from '@ohos.app.ability.common';
import hilog from '@ohos.hilog'; 

function requestMultiAd(context: common.Context): void {
  const adRequestParamArray: advertising.AdRequestParams[] = [{
      // 广告类型
      adType: 3,
      // 测试广告位ID
      adId: "testy63txaom8",
    } as advertising.AdRequestParams,
    {
      // 广告类型
      adType: 3,
      // 测试广告位ID
      adId: "testy63txaom8", 
    } as advertising.AdRequestParams
  ];
  const adOptions: advertising.AdOptions = {
    //设置广告内容分级上限
    adContentClassification: 'A',
    // 可选自定义参数,设置是否允许使用流量下载广告素材 0:不允许,1:允许
    allowMobileTraffic: 0,
  };
  // 广告请求回调监听
  const multiSlotsAdLoaderListener: advertising.MultiSlotsAdLoadListener = {
    // 广告请求失败回调
    onAdLoadFailure: (errorCode: number, errorMsg: string) => {
      hilog.error(0x0000, 'testTag', '%{public}s', `request multi ads errorCode is: ${errorCode}, errorMsg is: ${errorMsg}`);
    },
    // 广告请求成功回调
    onAdLoadSuccess: (ads: Map<string, Array<advertising.Advertisement>>) => {
      hilog.info(0x0000, 'testTag', '%{public}s', 'request multi ads success!');
      // 保存请求到的广告内容为数组用于展示
      let returnAds: Array<advertising.Advertisement> = [];
      ads.forEach((adsArray) => returnAds.push(...adsArray));
    }
  };
  // 创建AdLoader广告对象
  const load: advertising.AdLoader = new advertising.AdLoader(context);
  // 调用广告请求接口
  hilog.info(0x0000, 'testTag', '%{public}s', 'request multi ads!');
  load.loadAdWithMultiSlots(adRequestParamArray, adOptions, multiSlotsAdLoaderListener);
}

showAd

showAd(ad: Advertisement, options: AdDisplayOptions, context?: common.UIAbilityContext): void

展示全屏广告。

系统能力: SystemCapability.Advertising.Ads

参数:

参数名 类型 必填 说明
ad Advertisement 广告对象。
options AdDisplayOptions 广告展示参数。
context common.UIAbilityContext UIAbility的上下文环境,不设置从api: @ohos.app.ability.common中获取。

错误码:

以下错误码的详细介绍请参见广告服务框架错误码参考

错误码ID 错误信息
21800001 System internal error.
21800004 Failed to display the ad.

示例:

import advertising from '@ohos.advertising';
import hilog from '@ohos.hilog'; 
import common from '@ohos.app.ability.common';

@Entry
@Component
export struct ShowAd {
  private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
  // 请求到的广告内容
  private ad?: advertising.Advertisement;
  // 广告展示参数
  private adDisplayOptions: advertising.AdDisplayOptions = {
    // 是否静音,默认不静音
    mute: false,
  }

  build() {
    Column() {
        Button('展示广告')
          .onClick(() => {
            try {
              // 调用全屏广告展示接口
              advertising.showAd(this.ad, this.adDisplayOptions, this.context);
            } catch (err) {
              hilog.error(0x0000, 'testTag', '%{public}s', `show ad catch error: ${err.code} ${err.message}`);
            }
          });
    }
    .width('100%')
    .height('100%')
  }
}

AdOptions

广告配置参数。

系统能力: SystemCapability.Advertising.Ads

名称 类型 必填 说明
tagForChildProtection number 设置儿童保护标签。
- -1:您不希望表明您的广告内容是否需要符合COPPA的规定。
- 0:表明您的广告内容不需要符合COPPA的规定。
- 1:表明您的广告内容需要符合COPPA的规定(该广告请求无法获取到任何广告)。
adContentClassification string 设置广告内容分级上限。
- W:适合幼儿及以上年龄段观众的内容。
- PI:适合少儿及以上年龄段观众的内容。
- J:适合青少年及以上年龄段观众的内容。
- A:仅适合成人观众的内容。
nonPersonalizedAd number 设置是否只请求非个性化广告。
- 0:请求个性化广告与非个性化广告。
- 1:只请求非个性化广告。
[key: string] number | boolean | string | undefined 自定义参数。
- totalDuration:类型number,单位:s。贴片广告必填自定义参数,用于设置贴片广告展示时长。
- placementAdCountDownDesc:类型string。贴片广告可选自定义参数,用于设置贴片广告倒计时文案,该参数需要使用encodeURI()方法编码。填写了该参数,则展示倒计时文案,否则只展示倒计时。
- allowMobileTraffic:类型number。可选自定义参数,设置是否允许使用流量下载广告素材。0:不允许,1:允许

AdRequestParams

广告请求参数。

系统能力: SystemCapability.Advertising.Ads

名称 类型 必填 说明
adId string 广告位ID。
adType number 请求的广告类型。
- 1:开屏广告。
- 3:原生广告。
- 7:激励广告。
- 8:banner广告。
- 12:插屏广告。
- 60:贴片广告。
adCount number 请求的广告数量。
adWidth number 广告位宽度。
adHeight number 广告位高度。
adSearchKeyword string 广告关键字。
[key: string] number | boolean | string | undefined 自定义参数。

AdLoadListener

单广告位广告请求回调。

系统能力: SystemCapability.Advertising.Ads

onAdLoadFailure

onAdLoadFailure(errorCode: number, errorMsg: string): void

广告请求失败回调。

系统能力: SystemCapability.Advertising.Ads

参数名 类型 必填 说明
errorCode number 广告请求失败的错误码。
errorMsg string 广告请求失败的错误信息。

onAdLoadSuccess

onAdLoadSuccess(ads: Array<advertising.Advertisement>): void

广告请求成功后回调。

系统能力: SystemCapability.Advertising.Ads

参数名 类型 必填 说明
ads Array<advertising.Advertisement> 广告数据。

示例:

import advertising from '@ohos.advertising';

let adLoaderListener: advertising.AdLoadListener = {
  onAdLoadFailure: (errorCode: number, errorMsg: string) => {

  },
  onAdLoadSuccess: (ads: Array<advertising.Advertisement>): void {

  }
}

MultiSlotsAdLoadListener

多广告位广告请求回调。

系统能力: SystemCapability.Advertising.Ads

onAdLoadFailure

onAdLoadFailure(errorCode: number, errorMsg: string): void

多广告位广告请求失败回调。

系统能力: SystemCapability.Advertising.Ads

参数名 类型 必填 说明
errorCode number 广告请求失败的错误码。
errorMsg string 广告请求失败的错误信息。

onAdLoadSuccess

onAdLoadSuccess(adsMap: Map<string, Array<advertising.Advertisement>>): void

多广告位广告请求成功后回调。

系统能力: SystemCapability.Advertising.Ads

参数名 类型 必填 说明
adsMap Map<string, Array<advertising.Advertisement>> 广告数据。

示例:

import advertising from '@ohos.advertising';

let adLoaderListener: advertising.MultiSlotsAdLoadListener = {
  onAdLoadFailure: (errorCode: number, errorMsg: string) => {

  },
  onAdLoadSuccess: (ads: Map<string, Array<advertising.Advertisement>>): void {

  }
}

请求的广告内容。

系统能力: SystemCapability.Advertising.Ads

名称 类型 必填 说明
adType number 广告类型。
uniqueId string 广告唯一标识。
rewarded boolean 广告是否获得奖励。
- true:获得奖励。
- false:没有获得奖励。
shown boolean 广告是否展示。
- true:展示。
- false:未展示。
clicked boolean 广告是否被点击。
- true:被点击。
- false:未被点击。
rewardVerifyConfig Map<string, string> 服务器验证参数。
{
customData: "test",
userId: "12345"
}
[key: string] Object 自定义参数。
- isFullScreen:类型boolean。开屏广告自定义参数,用于标识返回的广告是否为全屏,true为全屏广告,false为半屏广告。

AdDisplayOptions

广告展示参数。

系统能力: SystemCapability.Advertising.Ads

名称 类型 必填 说明
customData string 媒体自定义数据。用于服务端通知媒体服务器某位用户因为与激励视频广告互动而应予以奖励,从而规避欺骗的行为。
userId string 媒体自定义用户id。用于服务端通知媒体服务器某位用户因为与激励视频广告互动而应予以奖励,从而规避欺骗的行为。
useMobileDataReminder boolean 使用移动数据播放视频或下载应用时是否弹框通知用户。
- true:弹框通知。
- false:不弹框通知。
mute boolean 广告视频播放是否静音。
- true:静音播放。
- false:非静音播放。
audioFocusType number 视频播放过程中获得音频焦点的场景类型。
- 0:视频播放静音、非静音时都获取焦点。
- 1:视频静音播放时不获取焦点。
- 2:视频播放静音、非静音时都不获取焦点。
[key: string] number | boolean | string | undefined 自定义参数。
- refreshTime:类型number,单位:ms,取值范围[30000, 120000]。AutoAdComponent组件可选自定义参数,用于控制广告的轮播时间间隔。填写了该参数,则广告按照参数配置的时间间隔轮播,否则广告不会轮播,只会展示广告响应中的第一个广告内容。

AdInteractionListener

广告状态变化回调。

系统能力: SystemCapability.Advertising.Ads

onStatusChanged

onStatusChanged(status: number, ad: advertising.Advertisement, data: string)

广告状态回调。

系统能力: SystemCapability.Advertising.Ads

名称 类型 必填 说明
status string status:广告展示状态,取值
onAdOpen(打开广告回调)、onAdClose(关闭广告回调)、onAdClick(点击广告回调)、onVideoPlayBegin(广告视频开始播放回调)、onVideoPlayEnd(广告视频播放结束回调)、onAdLoad(广告加载成功回调)、onAdFail(广告加载失败回调)、onMediaProgress(广告播放进度回调)、onMediaStart(广告开始播放回调)、onMediaPause(广告暂停播放回调)、onMediaStop(广告停止播放回调)、onMediaComplete(广告播放完成回调)、onMediaError(广告播放失败回调)、onLandscape(竖屏状态下点击全屏按钮回调)、onPortrait(全屏状态下点击返回按钮回调)、onAdReward (广告获得奖励回调) 、onMediaCountDown (广告倒计时回调) 、onBackClicked (返回点击广告回调)。
ad advertising.Advertisement 发生状态变化的广告内容。
data string 扩展信息。

示例:

import advertising from '@ohos.advertising';

let adInteractionListener: advertising.AdInteractionListener = {
  onStatusChanged: (status: string, ad: advertising.Advertisement, data: string) => {

  }
}