菜单

开屏广告

开屏广告

💡Tips

  • 开屏通过 ATSplashAd 实例接入:一个 placementId 对应一个实例
  • 开屏 load() 支持设置拉取超时fetchAdTimeout,毫秒);加载失败 / 超时经监听器回调上报。
  • 开屏无自动加载模式(仅插屏 / 激励支持 AutoLoad)。
  • 开屏默认全屏展示;半屏 / 自定义高度依赖原生侧配置(公开 TS 类型暂未开放高度字段,详见 §5)。
  • 展示前可调用 ATSplashAd.entryAdScenario(placementId, scenarioId) 上报进入广告场景(用于场景化统计)。

1. 设置回调监听

tsx 复制代码
import {
  ATSplashAd,
  type ATSplashListener,
} from '@anythink/react-native-sdk';

const listener: ATSplashListener = {
  onSplashAdLoaded: (isTimeout) => {
    // 加载成功;isTimeout 表示是否为超时后兜底返回
  },
  onSplashAdLoadFail: (error) => {
    console.log('load fail:', error.fullErrorInfo);
  },
  onSplashAdTimeout: () => {
    // 加载超时(可在此跳过开屏直接进主页)
  },
  onSplashAdShow: (info) => {
    // 展示成功
  },
  onSplashAdShowFailed: (error) => {
    // 展示失败
  },
  onSplashAdClick: (info) => {
    // 点击
  },
  onSplashAdClose: (info) => {
    // 关闭(在此跳转主页面)
  },
};

2. 创建实例并注册监听

tsx 复制代码
import { useEffect, useRef } from 'react';
import { ATSplashAd } from '@anythink/react-native-sdk';

const adRef = useRef<ATSplashAd | null>(null);

useEffect(() => {
  const ad = new ATSplashAd('your placement id');
  ad.setAdListener(listener);
  adRef.current = ad;
  return () => ad.removeAdListener();
}, []);

3. 加载广告

tsx 复制代码
// 直接加载
adRef.current?.load();

// 带拉取超时(毫秒)与请求参数
adRef.current?.load({ channelSource: 1 }, 5000);

💡 开屏对时效敏感,建议在闪屏页一进入就 load(),并通过 fetchAdTimeout 设定兜底超时,避免长时间白屏。


4. 判断广告是否就绪

tsx 复制代码
const ready = await adRef.current?.isAdReady();

5. 展示广告

show() 支持三种入参形态:

tsx 复制代码
// ① 直接展示(默认全屏)
adRef.current?.show();

// ② 带广告场景 ID
adRef.current?.show('your_scenario_id');

// ③ 带展示配置(场景 ID + 自定义透传)
adRef.current?.show({
  scenarioId: 'your_scenario_id',
  showCustomExt: 'your_custom_ext',
});

💡 开屏默认全屏展示。SplashShowConfig 当前在 TS 类型上仅暴露 scenarioId / showCustomExt(高度相关字段未在公开类型中开放)。如需半屏 / 预留底部 Logo 区的开屏,请参考原生侧配置或联系 Taku 技术支持。


6. 完整示例

tsx 复制代码
import { useEffect, useRef } from 'react';
import {
  ATSplashAd,
  type ATSplashListener,
} from '@anythink/react-native-sdk';

export function SplashDemo({ onFinish }: { onFinish: () => void }) {
  const adRef = useRef<ATSplashAd | null>(null);

  const listener: ATSplashListener = {
    onSplashAdLoaded: () => adRef.current?.show(),
    onSplashAdLoadFail: () => onFinish(),
    onSplashAdTimeout: () => onFinish(),
    onSplashAdClose: () => onFinish(),
  };

  useEffect(() => {
    const ad = new ATSplashAd('your placement id');
    ad.setAdListener(listener);
    adRef.current = ad;
    ad.load(undefined, 5000); // 5s 兜底超时
    return () => ad.removeAdListener();
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

  return null;
}

7. 监听器字段速查

回调 入参 说明
onSplashAdLoaded boolean(isTimeout) 加载成功
onSplashAdLoadFail AdError 加载失败
onSplashAdTimeout 加载超时
onSplashAdShow ATAdInfo 展示成功
onSplashAdShowFailed AdError 展示失败
onSplashAdClick ATAdInfo 点击
onSplashAdClose ATAdInfo 关闭
onDeeplinkCallback ATAdInfo, boolean DeepLink 跳转结果
onDownloadConfirm ATAdInfo 下载二次确认
上一个
激励视频广告
下一个
原生广告
最近修改: 2026-07-03Powered by