각 ad unit에 대해 placement 이름을 설정할 수 있습니다 (예: “Rewarded VideoLevels”, “INTER_levelEnd”, 또는 “RewardedVideoCoinStore”). 이를 통해 다양한 placement 카테고리에 대한 통계를 수집할 수 있습니다. 다음 스니펫은 다양한 ad format에 대해 placement 이름을 설정하는 방법을 보여줍니다.
BannerAd.createAd(«ad-unit-ID», «position»);
BannerAd.setPlacement(«ad-unit-ID», «placement»);
import { AdView, AdFormat } from 'react-native-applovin-max';
⋮
<AdView adUnitId={«ad-unit-ID»}
adFormat={AdFormat.BANNER}
placement={«placement»} />
import { MRecAd } from 'react-native-applovin-max';
⋮
MRecAd.createAd(«ad-unit-ID», «position»);
MRecAd.setPlacement(«ad-unit-ID», «placement»);
import { AdView, AdFormat } from 'react-native-applovin-max';
⋮
<AdView adUnitId={«ad-unit-ID»}
adFormat={AdFormat.MREC}
placement={«placement»} />
import { InterstitialAd } from 'react-native-applovin-max';
⋮
InterstitialAd.showAd(«ad-unit-ID», «placement»);
import { RewardedAd } from 'react-native-applovin-max';
⋮
RewardedAd.showAd(«ad-unit-ID», «placement»);
앱을 실행할 때 일부 mediated SDK network에 대해 오디오를 음소거할 수 있습니다. AppLovin SDK를 통해 이 기능을 지원하는 network는 다음과 같습니다.
다른 network의 경우, 해당 network의 담당 팀에 문의하여 이 기능의 지원 여부 및 사용 방법을 확인하십시오.
다음 코드 스니펫은 이 기능을 지원하는 network에서 오디오를 음소거하는 방법을 보여줍니다:
AppLovinMAX.setMuted(true);
AppLovinMAX.setMuted(false);
다음 호출을 통해 상세 로그(verbose logs)를 활성화합니다.
AppLovinMAX.setVerboseLogging(true);
상세 로그가 활성화되었는지 확인하려면 AppLovin SDK 로그의 초기화 섹션에서 Verbose Logging On: true가 포함된 라인을 확인하십시오.
AppLovin SDK
Version: 12.4.2
⋮
Verbose Logging On: true
⋮
AppLovin SDK는 로그에 “/AppLovinSdk: [AppLovinSdk]” 태그를 지정합니다.
mediated network에서 노출된 광고의 creative ID와 network name을 가져올 수 있습니다. 자세한 내용은 Creative Debugger 문서를 참조하십시오.
광고의 dspName 속성을 통해 AppLovin Exchange에서 서빙된 MAX 광고의 DSP 이름을 가져올 수 있습니다.
InterstitialAd.addAdLoadedEventListener((adInfo: AdInfo) => {
console.log("AppLovin Exchange DSP Name: " + adInfo.dspName);
}
클라이언트 측에서 impression-level user revenue 데이터에 액세스할 수 있습니다. 이 데이터를 사용하여 다양한 소스 및 캠페인을 비교할 수 있습니다. 또한 MAX user revenue API를 사용하여 이 데이터에 액세스할 수도 있습니다.
AppLovin 블로그의 “Take Ad-Revenue Attribution to the Next Level With MAX”
지원되는 모든 network에 대해 Adjust 등 원하는 MMP와 impression-level ad revenue 데이터를 공유할 수 있습니다.
모든 광고 라이프사이클 콜백에서 revenue 금액을 가져올 수 있습니다. 다음 예시는 “ad revenue paid” 콜백에서 이를 수행하는 방법을 보여줍니다.
InterstitialAd.addAdRevenuePaidListener((adInfo: AdInfo) => {…});
RewardedAd.addAdRevenuePaidListener((adInfo: AdInfo) => {…});
BannerAd.addAdRevenuePaidListener((adInfo: AdInfo) => {…});
MRecAd.addAdRevenuePaidListener((adInfo: AdInfo) => {…});
AppOpenAd.addAdRevenuePaidListener((adInfo: AdInfo) => {…});
InterstitialAd.addAdRevenuePaidListener((adInfo: AdInfo) => {
const revenue = adInfo.revenue;
// 기타 데이터
const networkName = adInfo.networkName; // 광고를 노출한 network의 표시 이름
const adUnitId = adInfo.adUnitId; // MAX Ad Unit ID
const placement = adInfo.placement; // 이 광고의 포스트백이 연결된 placement
const networkPlacement = adInfo.networkPlacement; // 광고를 노출한 network의 placement ID
});
특정 ad unit으로 SDK를 초기화할 수 있습니다. 그렇게 하면 SDK는 지정한 ad unit에 대해 구성된 network만 초기화합니다. (ad unit을 지정하지 않으면 SDK는 현재 세션에 모든 ad unit이 필요하다고 가정합니다. 이 경우 해당 ad unit에 대해 구성된 모든 network를 초기화합니다.) 다음 예시는 이 기능을 구현하는 방법을 보여줍니다.
AppLovinMAX.setInitializationAdUnitIds([ "«ad-unit-ID-1»", "«ad-unit-ID-2»" ]);
AppLovinMAX.initialize(«SDK-key»).then((conf: Configuration) => { ... });
selective init을 사용하면, MAX는 명시적으로 지정하지 않은 ad unit을 현재 세션의 광고 서빙에서 제외합니다.
테스트 모드를 활성화한 경우에는 selective init이 적용되지 않습니다.
Waterfall Information API는 광고(로드에 성공했거나 실패한 광고)의 현재 waterfall에 대한 정보를 제공합니다. 이 API는 waterfall에 있는 각 광고의 ad load state, latency, 자격 증명(credentials) 및 mediated network 정보를 반환합니다. waterfall의 광고가 로드에 실패하면 API는 에러 정보를 제공합니다.
이 API는 React Native 플러그인 버전 9.x에서는 지원되지 않습니다.
| 값 | 설명 |
|---|---|
| 0 | Ad Load Not Attempted |
| 1 | Ad Loaded |
| 2 | Ad Failed To Load |
InterstitialAd.addAdLoadedEventListener((adInfo: AdInfo) => {
console.log('Waterfall Name: ' + adInfo.waterfall.name + ' and Test Name: ' + adInfo.waterfall.testName);
console.log('Waterfall latency was: ' + adInfo.waterfall.latencyMillis + ' milliseconds');
adInfo.waterfall.networkResponses.forEach((networkResponse: AdNetworkResponseInfo) => {
console.log('Network name:' + networkResponse.mediatedNetwork.name +
' adapterClassName:'+ networkResponse.mediatedNetwork.adapterClassName +
' sdkVersion:' + networkResponse.mediatedNetwork.sdkVersion +
' adapterVersion:' + networkResponse.mediatedNetwork.adapterVersion);
console.log('...adLoadState:' + networkResponse.adLoadState);
console.log('...latency:' + networkResponse.latencyMillis);
});
});
InterstitialAd.addAdLoadFailedEventListener((errorInfo: AdLoadFailedInfo) => {
console.log('Waterfall Name: ' + errorInfo.waterfall.name + ' and Test Name: ' + errorInfo.waterfall.testName);
console.log('Waterfall latency was: ' + errorInfo.waterfall.latencyMillis + ' milliseconds');
errorInfo.waterfall.networkResponses.forEach((networkResponse: AdNetworkResponseInfo) => {
console.log('Network name:' + networkResponse.mediatedNetwork.name +
' adapterClassName:'+ networkResponse.mediatedNetwork.adapterClassName +
' sdkVersion:' + networkResponse.mediatedNetwork.sdkVersion +
' adapterVersion:' + networkResponse.mediatedNetwork.adapterVersion);
console.log('...latency:' + networkResponse.latencyMillis);
console.log('...error code:' + networkResponse.error.code + ' message:' + networkResponse.error.message);
});
});
Waterfall Name: Default Waterfall and Test Name: Control
Waterfall latency was: 2793 milliseconds
Network adapterClassName:com.applovin.mediation.adapters.UnityAdsMediationAdapter name:Unity Ads sdkVersion:4.2.1.0 adapterVersion:4.2.1
...adLoadState:2
...latency:25
...credentials placement_id:BN_0_9
...error code:-5212 message:WebView Error
Network adapterClassName:com.applovin.mediation.adapters.LineMediationAdapter name:LINE Ads sdkVersion:2.4.20211029 adapterVersion:2021.10.29.2
...adLoadState:2
...latency:275
...credentials placement_id:872167
...error code:-5205 message:Ad Not Ready
Network adapterClassName:com.applovin.mediation.adapters.ByteDanceMediationAdapter name:Pangle sdkVersion:4.3.0.9 adapterVersion:4.3.0.9
...adLoadState:1
...latency:337
...credentials placement_id:980034018