💡Tips
- 各广告类型(手动模式)都提供统一的状态查询接口:
isAdReady/checkAdStatus/checkValidAdCaches。- 广告收益走独立回调通道,通过
setAdRevenueListener注册,与展示 / 点击回调分流。
isAdReady() 返回 Promise<boolean>,展示前用它判断是否有缓存广告:
const ready = await ad.isAdReady();
if (ready) {
ad.show();
}
⚠️ 横幅(
ATBannerView)与原生(ATNative)没有isAdReady,改用下方的checkAdStatus()读取isReady。
自动加载模式的isAdReady(pid)为同步方法,详见自动加载模式。
checkAdStatus() 返回 Promise<ATAdStatusInfo>,提供更细的状态:
const status = await ad.checkAdStatus();
console.log('isReady =', status.isReady, 'isLoading =', status.isLoading);
ATAdStatusInfo 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
isLoading |
boolean |
是否正在加载 |
isReady |
boolean |
是否有缓存广告可展示 |
atTopAdInfo |
ATAdInfo? |
当前置顶(最优)缓存广告信息 |
横幅 / 原生用它判断就绪:
const status = await bannerView.checkAdStatus();
if (status.isReady) {
// 挂载视图组件展示
}
checkValidAdCaches() 返回当前所有有效缓存广告的信息列表 Promise<ATAdInfo[]>,常用于查看缓存深度 / 比价:
const caches = await ad.checkValidAdCaches();
console.log('有效缓存数:', caches.length);
各广告样式(含开屏)的手动模式均支持
checkValidAdCaches;自动加载模式(ATXxxAutoAd)无此方法。
为广告实例注册收益监听,广告展示产生收益时回调。info 为 ATAdInfo(snake_case 开放字典),含 publisher_revenue / currency / adsource_price 等字段:
ad.setAdRevenueListener((info) => {
const revenue = Number(info['publisher_revenue'] ?? 0);
const currency = String(info['currency'] ?? '');
const adsourcePrice = Number(info['adsource_price'] ?? 0);
// 上报到你自己的数据系统(如 AppsFlyer / 自建 BI)
reportAdRevenue({ revenue, currency, adsourcePrice });
});
💡 收益字段集与原生
ATAdInfo一致,具体键名以原生实际回调为准;取值时建议做空值与类型保护。字段含义详见回调信息说明。
| 广告样式 | isAdReady |
checkAdStatus |
checkValidAdCaches |
|---|---|---|---|
| 激励视频 | ✓ | ✓ | ✓ |
| 插屏 | ✓ | ✓ | ✓ |
| 开屏 | ✓ | ✓ | ✓ |
| 横幅 | ✗(用 checkAdStatus) |
✓ | ✓ |
| 原生 | ✗(用 checkAdStatus) |
✓ | ✓ |