App open ads는 interstitial ads와 유사하지만, 사용자가 앱을 soft launch하거나 cold start할 때 표시됩니다.
Fire OS 애플리케이션은 지원되지 않습니다.
App Open Ad 포맷을 구현할 때는 항상 retention을 고려해야 합니다.
App open ads의 경우 다양한 구현 전략 중에서 선택할 수 있습니다.
AppLovin은 아래에 설명된 기술 중 하나 이상을 사용하여 테스트할 것을 권장합니다. 각 애플리케이션은 retention이나 앱 내 체류 시간에 영향을 주지 않으면서 수익을 극대화할 수 있는 고유한 구성을 가지고 있습니다. 사용자 행동과 인게이지먼트는 변경될 수 있으므로, AppLovin은 App Open Ads 전략을 자주 재테스트할 것을 권장합니다. App Open Ads를 테스트하기 위해 사용할 수 있는 몇 가지 구현 기술은 다음과 같습니다:
사용자가 애플리케이션을 포그라운드로 가져올 때 바로 준비될 수 있도록 app open ad를 미리 로드(preload)해 두세요. 광고를 표시해야 하기 전에 광고 요청을 수행할 수 있도록 유틸리티 클래스를 구현하세요. 광고가 준비되었을 때 광고를 표시하는 메서드를 만드세요. 사용자가 앱을 포그라운드로 가져올 때 해당 메서드를 호출하세요.
그러면 앱은 앱이 열릴 때 광고 표시를 시도하거나, 미리 로드된 광고가 없는 경우 광고를 로드합니다.
광고를 요청하는 시점과 표시할 광고를 수신하는 시점 사이에는 지연이 존재합니다. 앱을 제대로 설계하지 않으면 사용자가 잠시 앱을 보았다가 맥락에서 벗어난 광고에 깜짝 놀랄 수 있습니다. 이러한 나쁜 사용자 경험을 방지하세요. 앱 콘텐츠가 표시되기 전에 로딩 화면을 보여주고, 로딩 화면 이후에 광고를 보여주는 방식으로 cold starts를 처리할 수 있습니다. 로딩 화면 이후에 앱이 앱 콘텐츠를 표시하는 경우에는 광고를 보여주지 마세요.
App open ad 아래에 로딩 화면을 배치하고, 사용자가 광고를 닫기 전에 해당 로딩 화면이 완료되면 AppOpenAd.addAdHiddenEventListener에서 로딩 화면을 닫을 수 있습니다.
이 코드 예제는 앱이 메모리에 일시 중단된 후 “soft launch” 시에만 app open ads가 표시된다고 가정합니다. 스플래시/로딩 화면은 포함되어 있지 않습니다. 스플래시/로딩 화면은 직접 처리해야 합니다—Best practices를 참조하세요.
const App = () => {
const appState = useRef(AppState.currentState);
useEffect(() => {
AppLovinMAX.initialize('«SDK-key»').then((conf: Configuration) => {
AppOpenAd.addAdLoadedEventListener((adInfo: AdInfo) => {
console.log('AppOpen ad loaded from ' + adInfo.networkName);
});
AppOpenAd.addAdLoadFailedEventListener((errorInfo: AdLoadFailedInfo) => {
console.log('AppOpen ad failed to load with code ' + errorInfo.code);
});
AppOpenAd.addAdFailedToDisplayEventListener((adInfo: AdDisplayFailedInfo) => {
AppOpenAd.loadAd(«ad-unit-ID»);
});
AppOpenAd.addAdHiddenEventListener((adInfo: AdInfo) => {
AppOpenAd.loadAd(«ad-unit-ID»);
});
AppOpenAd.loadAd(«ad-unit-ID»);
});
AppState.addEventListener("change", nextAppState => {
if (appState.current.match(/inactive|background/) && nextAppState === "active") {
showAdIfReady();
}
appState.current = nextAppState;
});
}, []);
const showAdIfReady = async () => {
const isAppOpenAdReady = await AppOpenAd.isAdReady(«ad-unit-ID»);
if (isAppOpenAdReady) {
AppOpenAd.showAd(«ad-unit-ID»);
} else {
AppOpenAd.loadAd(«ad-unit-ID»);
}
}
⋮
}
| Ad network | Minimum adapter version |
|---|---|
| BIGO Ads | 4.5.1.0 (Android), 4.2.1.0 (iOS) |
| Google Bidding and Google AdMob | 22.2.0.2 (Android), 10.9.0.1 (iOS) |
| Liftoff Monetize | 6.12.0.2 (Android), 6.12.0.3 (iOS) |
| Mintegral | 16.6.61.1 (Android), 7.2.3.0.1 (iOS) |
| Pangle | 4.6.0.4.0 (Android), 4.6.2.2.1 (iOS) |