您的位置:首页 > 健康 > 美食 > 有创意的大学活动策划_做电子商务平台b2b_站长工具外链查询_娃哈哈软文推广

有创意的大学活动策划_做电子商务平台b2b_站长工具外链查询_娃哈哈软文推广

2025/3/22 0:37:29 来源:https://blog.csdn.net/m0_75219675/article/details/146363321  浏览:    关键词:有创意的大学活动策划_做电子商务平台b2b_站长工具外链查询_娃哈哈软文推广
有创意的大学活动策划_做电子商务平台b2b_站长工具外链查询_娃哈哈软文推广

1. 广告请求服务的实现

首先,你需要创建一个广告请求服务来处理广告的加载和展示。你已经在代码中实现了 requestAd 函数,接下来需要处理广告加载、显示、点击等事件。可以考虑以下结构:

1.1 创建广告加载函数

import { advertising, identifier } from '@kit.AdsKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';// 请求广告的方法
function requestAd(context: common.Context, callback: (ads: Array<advertising.Advertisement>) => void): void {const adRequestParam: advertising.AdRequestParams = {adType: 1, // 广告类型adId: 'testq6zq98hecj' // 测试广告位ID};const adOptions: advertising.AdOptions = {allowMobileTraffic: 0,tagForChildProtection: -1,tagForUnderAgeOfPromise: -1,adContentClassification: 'A'};const adLoaderListener: advertising.AdLoadListener = {onAdLoadFailure: (errorCode: number, errorMsg: string) => {hilog.error(0x0000, 'testTag', '%{public}s', `Request ad failed! ErrorCode: ${errorCode}, ErrorMsg: ${errorMsg}`);},onAdLoadSuccess: (ads: Array<advertising.Advertisement>) => {hilog.info(0x0000, 'testTag', '%{public}s', 'Request ad success!');callback(ads); // 返回广告数据给调用方}};const load: advertising.AdLoader = new advertising.AdLoader(context);load.loadAd(adRequestParam, adOptions, adLoaderListener);
}

1.2 解释说明

  • adRequestParam:广告请求参数,包括广告类型和广告位 ID。
  • adOptions:广告的附加配置项,比如流量使用、广告内容分类等。
  • adLoaderListener:广告加载监听器,用来处理广告请求成功与失败的回调。
    • onAdLoadFailure:请求失败时的处理,记录错误日志。
    • onAdLoadSuccess:请求成功时的处理,执行回调返回广告数据。

1.3 使用广告加载函数

你可以在 aboutToAppear 或其他合适的生命周期函数中调用 requestAd 函数,获取广告数据并传递给广告组件进行显示。

@Entry
@Component
struct Start {private ads: Array<advertising.Advertisement> = [];private displayOptions?: advertising.AdDisplayOptions;aboutToAppear(): void {// 获取广告数据requestAd(getContext(), (ads: Array<advertising.Advertisement>) => {this.ads = ads;  // 将广告数据赋值给组件// 创建广告显示选项,定制广告展示的行为this.displayOptions = {// 可设置显示方式等};});}build() {Column() {// 确保广告已加载再显示广告组件if (this.ads.length > 0) {AdComponent({ads: this.ads,  // 传递广告数据displayOptions: this.displayOptions,interactionListener: {onStatusChanged: (status: string, ad: advertising.Advertisement, data: string) => {switch (status) {case AdStatus.AD_OPEN:hilog.info(0x0000, 'testTag', '%{public}s', '广告打开');break;case AdStatus.AD_CLICKED:hilog.info(0x0000, 'testTag', '%{public}s', '广告点击');break;case AdStatus.AD_CLOSED:hilog.info(0x0000, 'testTag', '%{public}s', '广告关闭');break;}}}}).width('100%').height('100%');}}}
}

1.4 解释说明

  • requestAd(getContext(), ...):调用广告请求函数,获取广告数据并处理成功或失败回调。
  • AdComponent:用于展示广告的组件,传入广告数据和显示选项。
  • interactionListener:用于监听广告状态变化(打开、点击、关闭等),可以添加一些业务逻辑,比如广告点击后的跳转。

2. 广告错误处理和重试机制

在广告加载过程中,可能会发生一些网络错误或广告服务错误。在这种情况下,添加错误处理和重试机制是很重要的。

2.1 添加错误处理

onAdLoadFailure 回调中,可以根据错误代码做更细致的处理,比如网络错误时进行重试:

onAdLoadFailure: (errorCode: number, errorMsg: string) => {hilog.error(0x0000, 'testTag', '%{public}s', `Request ad failed! ErrorCode: ${errorCode}, ErrorMsg: ${errorMsg}`);// 根据错误码进行处理if (errorCode === 21800001) {hilog.error(0x0000, 'testTag', '%{public}s', '广告请求失败,可能是网络问题,进行重试');// 可以在这里实现广告加载的重试逻辑}
}

2.2 重试机制

可以设置一个简单的重试机制,尝试多次加载广告,直到成功为止:

function requestAdWithRetry(context: common.Context, callback: (ads: Array<advertising.Advertisement>) => void, retries: number = 3): void {const tryRequest = (retriesLeft: number) => {requestAd(context, (ads: Array<advertising.Advertisement>) => {callback(ads);});if (retriesLeft > 0) {setTimeout(() => {tryRequest(retriesLeft - 1);}, 2000);  // 延迟2秒后重试} else {hilog.error(0x0000, 'testTag', '%{public}s', '广告加载失败,重试已达到最大次数');}};tryRequest(retries);
}

2.3 解释说明

  • requestAdWithRetry:这是一个带重试机制的广告请求函数。它会尝试加载广告,直到成功或达到最大重试次数。
  • setTimeout:延迟2秒后再重试一次广告加载。

3. 广告展示组件

广告展示组件是用于将加载的广告显示到界面上的。你可以使用 AdComponent 来展示广告,并通过 interactionListener 来监听广告的状态变化(打开、点击、关闭等)。

AdComponent({ads: this.ads,displayOptions: this.displayOptions,interactionListener: {onStatusChanged: (status: string, ad: advertising.Advertisement, data: string) => {switch (status) {case AdStatus.AD_OPEN:hilog.info(0x0000, 'testTag', '%{public}s', '广告打开');break;case AdStatus.AD_CLICKED:hilog.info(0x0000, 'testTag', '%{public}s', '广告点击');break;case AdStatus.AD_CLOSED:hilog.info(0x0000, 'testTag', '%{public}s', '广告关闭');break;}}}
})
.width('100%')
.height('100%');

华为开屏广告集成笔记

1. 开屏广告概述

开屏广告是一种在应用启动时且在应用主界面显示之前展示的广告。它分为以下两种类型:

  • 全屏开屏广告:广告覆盖整个屏幕。
  • 半屏开屏广告:广告占据部分屏幕,并可自定义布局,通常会显示广告的图标和版权信息。
2. 开发步骤

开屏广告的集成分为以下几个主要步骤:

2.1 获取OAID
  • OAID(Open Advertising ID)是设备的唯一广告标识符,用于精准推送广告。建议在请求广告时传递 OAID 以提升广告投放的精准度。
  • 获取 OAID 示例代码:
identifier.getOAID().then((data: string) => {this.oaid = data;
}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'Failed to get OAID');
});
2.2 请求广告
  • 创建一个 AdLoader 对象来请求广告,并通过 AdRequestParams 设置广告请求参数。
  • 广告请求接口如下:
loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void
2.3 设置广告请求参数
  • adType:广告类型(开屏广告类型为 1)。
  • adId:广告位ID。测试阶段使用提供的测试广告位ID(例如:testq6zq98hecj 半屏图片广告)。
  • adCount:广告数量。

示例:

private splashVideoAdReqParams: advertising.AdRequestParams = {adId: 'testd7c5cewoj6',  // 测试广告位IDadType: AdType.SPLASH_AD,adCount: 1,oaid: this.oaid
};
2.4 加载广告并监听回调
  • 通过 AdLoadListener 监听广告加载的回调:

    • onAdLoadFailure:广告加载失败。
    • onAdLoadSuccess:广告加载成功。

示例:

const adLoaderListener: advertising.AdLoadListener = {onAdLoadFailure: (errorCode: number, errorMsg: string) => {hilog.error(0x0000, 'testTag', `Failed to load ad. errorCode: ${errorCode}, errorMsg: ${errorMsg}`);},onAdLoadSuccess: (ads: Array<advertising.Advertisement>) => {hilog.info(0x0000, 'testTag', 'Ad loaded successfully!');// 展示广告}
};
2.5 设置广告展示
  • AdComponent 组件用于展示广告,配置广告展示参数并监听广告交互状态。

示例:

AdComponent({ads: this.ads,displayOptions: this.displayOptions,interactionListener: {onStatusChanged: (status: string, ad: advertising.Advertisement, data: string) => {switch (status) {case AdStatus.AD_OPEN:hilog.info(0x0000, 'testTag', 'Ad opened');break;case AdStatus.AD_CLICKED:hilog.info(0x0000, 'testTag', 'Ad clicked');break;case AdStatus.AD_CLOSED:hilog.info(0x0000, 'testTag', 'Ad closed');break;}}}
});
3. 广告展示页面
  • 全屏广告展示页面
@Component
export struct SplashFullScreenAdPage {private ads: Array<advertising.Advertisement> = [];private displayOptions?: advertising.AdDisplayOptions;aboutToAppear() {const params: Record<string, Object> = router.getParams() as Record<string, Object>;if (params && params.ads as Array<advertising.Advertisement>) {this.ads = params.ads as Array<advertising.Advertisement>;}}build() {Column() {AdComponent({ads: this.ads,displayOptions: this.displayOptions,interactionListener: { ... }}).width('100%').height('100%');}}
}
  • 半屏广告展示页面
@Component
export struct SplashHalfScreenAdPage {private ads: Array<advertising.Advertisement> = [];private displayOptions?: advertising.AdDisplayOptions;aboutToAppear() {const params: Record<string, Object> = router.getParams() as Record<string, Object>;if (params && params.ads as Array<advertising.Advertisement>) {this.ads = params.ads as Array<advertising.Advertisement>;}}build() {Column() {AdComponent({ads: this.ads,displayOptions: this.displayOptions,interactionListener: { ... }}).width('100%').height('87%');}}
}
4. 超时处理
  • 在请求广告时设置超时,如果超过一定时间未加载广告,则跳转到默认首页。

示例:

private timeOutHandler(): void {this.isTimeOut = false;this.timeOutIndex = setTimeout(() => {this.isTimeOut = true;router.pushUrl({url: 'pages/Index',  // 超时后跳转的页面});hilog.error(0x0000, 'testTag', 'Ad load timeout');}, this.timeOutDuration);
}
5. 总结
  • 请求开屏广告时,必须提供广告位 ID、广告类型和 OAID。
  • 通过 AdLoader 请求广告,并通过 AdLoadListener 监听广告加载回调。
  • 通过 AdComponent 展示广告,并根据广告状态进行交互操作(如打开、点击、关闭)。
  • 开屏广告的展示类型(全屏或半屏)可通过广告返回的 isFullScreen 属性判断。
  • 在请求广告时,要处理超时情况,防止应用在等待广告时卡死。

4. 总结

  • 广告请求:通过 AdLoader 请求广告并处理回调。
  • 广告显示:使用 AdComponent 组件展示广告数据,并通过 interactionListener 监听广告状态。
  • 错误处理与重试机制:在广告加载失败时添加错误处理,并实现重试机制以增强稳定性。

这样,就能实现一个完整的广告服务,包括广告的请求、加载、展示、状态监听和错误处理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com