💡Tips
- 开屏通过
ATSplashAd实例接入:一个 placementId 对应一个实例。- 开屏
load()支持设置拉取超时(fetchAdTimeout,毫秒);加载失败 / 超时经监听器回调上报。- 开屏无自动加载模式(仅插屏 / 激励支持 AutoLoad)。
- 开屏默认全屏展示;半屏 / 自定义高度依赖原生侧配置(公开 TS 类型暂未开放高度字段,详见 §5)。
- 展示前可调用
ATSplashAd.entryAdScenario(placementId, scenarioId)上报进入广告场景(用于场景化统计)。
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) => {
// 关闭(在此跳转主页面)
},
};
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();
}, []);
// 直接加载
adRef.current?.load();
// 带拉取超时(毫秒)与请求参数
adRef.current?.load({ channelSource: 1 }, 5000);
💡 开屏对时效敏感,建议在闪屏页一进入就
load(),并通过fetchAdTimeout设定兜底超时,避免长时间白屏。
const ready = await adRef.current?.isAdReady();
show() 支持三种入参形态:
// ① 直接展示(默认全屏)
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 技术支持。
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;
}
| 回调 | 入参 | 说明 |
|---|---|---|
onSplashAdLoaded |
boolean(isTimeout) |
加载成功 |
onSplashAdLoadFail |
AdError |
加载失败 |
onSplashAdTimeout |
— | 加载超时 |
onSplashAdShow |
ATAdInfo |
展示成功 |
onSplashAdShowFailed |
AdError |
展示失败 |
onSplashAdClick |
ATAdInfo |
点击 |
onSplashAdClose |
ATAdInfo |
关闭 |
onDeeplinkCallback |
ATAdInfo, boolean |
DeepLink 跳转结果 |
onDownloadConfirm |
ATAdInfo |
下载二次确认 |