HarmonyOS开发实战:Ads Kit在美颜相机中的广告集成实践

68 阅读2分钟

开发场景需求

在"拍摄美颜相机"免费版应用中,Ads Kit 用于实现:

收益变现:通过广告展示获取应用收益

智能投放:基于用户画像精准推荐广告

体验平衡:广告展示与用户体验的平衡点控制

 

`// 核心实现与代码示例

// 横幅广告集成

// 广告位初始化:

typescript

 

import ads from '@ohos.ads';

 

// 创建横幅广告实例

const bannerAd = ads.createBannerAd({

  adUnitId: 'your_banner_ad_unit_id',   // 从Ads控制台获取

  size: ads.AdSize.BANNER_320_50,       // 标准横幅尺寸

  position: ads.AdPosition.BOTTOM       // 底部固定位置

});

 

// 加载广告

bannerAd.load()

  .then(() => bannerAd.show())

  .catch(err => console.error(广告加载失败: ${err.code}));

// 广告事件监听:

typescript

 

bannerAd.on('adClosed', () => {

  this.adjustLayout();   // 广告关闭后调整UI

});

 

bannerAd.on('adClicked', () => {

  this.logAdConversion();   // 记录广告转化

});

 

// 激励视频广告

// 观看奖励逻辑:

typescript

 

const rewardAd = ads.createRewardVideoAd({

  adUnitId: 'your_reward_ad_unit_id',

  userId: 'optional_user_id'   // 用于奖励验证

});

 

// 解锁高级滤镜的激励点

async function unlockPremiumFilter() {

  try {

    await rewardAd.load();

    await rewardAd.show();

    

     // 验证奖励发放

    if (rewardAd.verified) {

      this.enableFilter('premium_glow');

    }

  } catch (err) {

    prompt.showToast({ message: '广告加载失败,请重试' });

  }

}

 

// 原生广告定制

// 信息流广告集成:

typescript

 

const nativeAd = ads.createNativeAd({

  adUnitId: 'your_native_ad_unit_id',

  adTypes: [ads.NativeAdType.IMAGE, ads.NativeAdType.VIDEO]

});

 

// 自定义广告UI

nativeAd.on('adLoaded', (adData) => {

  this.renderNativeAd({

    title: adData.title,

    imageUrl: adData.images[0].url,

    callToAction: adData.buttonText

  });

});

 

// 关键优化策略

// 频次控制

typescript

 

// 每15分钟最多展示3次横幅广告

const canShowBanner = rateLimiter.check('banner', {

  maxCount: 3,

  interval: 15 * 60 * 1000

});

 

if (canShowBanner) {

  bannerAd.show();

}

 

// 用户分层投放

typescript

 

// 根据用户价值设置广告密度

const adDensity = this.userValueTier > 2 ? 'LOW' : 'STANDARD';

ads.setTargeting({

  customData: {

    ad_density: adDensity   // 广告平台侧配置对应策略

  }

});

 

// 预加载机制

typescript

 

// 应用启动时预加载广告

onAppLaunch() {

  rewardAd.load();   // 提前加载激励视频

  interstitialAd.load();   // 预加载插屏广告

}

 

// 权限声明

json

 

// module.json5配置

"requestPermissions": [

  {

    "name": "ohos.permission.ADS_ID",

    "reason": "用于广告精准投放"

  },

  {

    "name": "ohos.permission.NETWORK",

    "reason": "加载广告内容"

  }

]

 

// 未成年人保护

typescript

 

// 根据年龄限制广告

if (userProfile.age < 18) {

  ads.setTagForChildDirectedTreatment(true);   // 启用儿童保护模式

  ads.setTagForUnderAgeOfConsent(true);       // 遵守未成年人限制

}

 

// 广告加载失败处理

typescript

 

rewardAd.on('adError', (err) => {

  if (err.code === ads.ErrorCode.NO_FILL) {

    this.showAlternativeContent();   // 展示备用内容

  }

});`