1# @ohos.advertising.AdsServiceExtensionAbility (广告扩展服务)(系统接口)
2
3
4本模块为设备厂商提供广告扩展能力,设备厂商可自主实现单广告位请求和多广告位请求的业务逻辑。
5
6
7> **说明:**
8> 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
9> 本模块接口为系统接口。
10
11
12## 导入模块
13
14```ts
15import { AdsServiceExtensionAbility } from '@kit.AdsKit';
16```
17
18
19## AdsServiceExtensionAbility.onLoadAd
20
21onLoadAd(adParam: advertising.AdRequestParams, adOptions: advertising.AdOptions, respCallback: RespCallback);
22
23单广告位请求业务实现方法,设备厂商需在该方法中实现广告请求业务逻辑并将结果回调给媒体。
24
25**系统接口:** 此接口为系统接口。
26
27**系统能力:** SystemCapability.Advertising.Ads
28
29**起始版本:** 11
30
31**参数:**
32
33| **参数名** | **类型** | 必填 | 说明 |
34| -------- | -------- | -------- | -------- |
35| adParam | advertising.[AdRequestParams](js-apis-advertising.md#adrequestparams) | 是 | 广告请求参数。 |
36| adOptions | advertising.[AdOptions](js-apis-advertising.md#adoptions) | 是 | 广告配置。 |
37| respCallback | [RespCallback](js-apis-adsserviceextensionability#adsserviceextensionabilityrespcallback) | 是 | 广告请求回调。 |
38
39**示例:**
40```ts
41import { AdsServiceExtensionAbility, advertising, RespCallback } from '@kit.AdsKit';
42
43export default class AdsExtensionAbility extends AdsServiceExtensionAbility {
44  onLoadAd(adParam: advertising.AdRequestParams, adOptions: advertising.AdOptions, respCallback: RespCallback) {
45    const adType: number | undefined = adParam.adType;
46    const ads: Array<advertising.Advertisement> = [];
47    const rewardVerifyConfig: Map<string, string> = new Map();
48    ads.push({
49      adType: adType as number,
50      uniqueId: '111111',
51      rewardVerifyConfig: rewardVerifyConfig,
52      rewarded: false,
53      shown: false,
54      clicked: false
55    });
56    ads.push({
57      adType: adType as number,
58      uniqueId: '222222',
59      rewardVerifyConfig: rewardVerifyConfig,
60      rewarded: false,
61      shown: false,
62      clicked: false
63    });
64    const slot: string = 'test';
65    const resMap: Map<string, Array<advertising.Advertisement>> = new Map();
66    resMap.set(slot, ads);
67    respCallback(resMap);
68  }
69}
70```
71
72
73## AdsServiceExtensionAbility.onLoadAdWithMultiSlots
74
75onLoadAdWithMultiSlots(adParams: advertising.AdRequestParams[], adOptions: advertising.AdOptions, respCallback: RespCallback);
76
77多广告位请求业务实现方法,设备厂商需在该方法中实现广告请求业务逻辑并将结果回调给媒体。
78
79**系统接口:** 此接口为系统接口。
80
81**系统能力:** SystemCapability.Advertising.Ads
82
83**起始版本:** 11
84
85**参数:**
86
87| **参数名** | **类型** | 必填 | 说明 |
88| -------- | -------- | -------- | -------- |
89| adParams | advertising.[AdRequestParams](js-apis-advertising.md#adrequestparams)[] | 是 | 广告请求参数。 |
90| adOptions | advertising.[AdOptions](js-apis-advertising.md#adoptions) | 是 | 广告配置。 |
91| respCallback | [RespCallback](js-apis-adsserviceextensionability#adsserviceextensionabilityrespcallback) | 是 | 广告请求回调。 |
92
93**示例:**
94```ts
95import { AdsServiceExtensionAbility, advertising, RespCallback } from '@kit.AdsKit';
96
97export default class AdsExtensionAbility extends AdsServiceExtensionAbility {
98  onLoadAdWithMultiSlots(adParams: advertising.AdRequestParams[], adOptions: advertising.AdOptions,
99    respCallback: RespCallback) {
100    const adType1: number = adParams[0].adType as number;
101    const ads1: Array<advertising.Advertisement> = [];
102    const rewardVerifyConfig: Map<string, string> = new Map();
103    ads1.push({
104      adType: adType1,
105      uniqueId: '111111',
106      rewardVerifyConfig: rewardVerifyConfig,
107      rewarded: false,
108      shown: false,
109      clicked: false
110    });
111    ads1.push({
112      adType: adType1,
113      uniqueId: '222222',
114      rewardVerifyConfig: rewardVerifyConfig,
115      rewarded: false,
116      shown: false,
117      clicked: false
118    });
119    const slot1: string = 'test1';
120    const adType2: number = adParams[1].adType as number;
121    const ads2: Array<advertising.Advertisement> = [];
122    ads2.push({
123      adType: adType2,
124      uniqueId: '333333',
125      rewardVerifyConfig: rewardVerifyConfig,
126      rewarded: false,
127      shown: false,
128      clicked: false
129    });
130    ads2.push({
131      adType: adType2,
132      uniqueId: '444444',
133      rewardVerifyConfig: rewardVerifyConfig,
134      rewarded: false,
135      shown: false,
136      clicked: false
137    });
138    const slot2: string = 'test2';
139    const resMap: Map<string, Array<advertising.Advertisement>> = new Map();
140    resMap.set(slot1, ads1);
141    resMap.set(slot2, ads2);
142    respCallback(resMap);
143  }
144}
145```