아래에서는 개발자가 Android에서 구현하기 위한 몇 가지 통합 모범 사례를 소개합니다. 이러한 코딩 팁과 시나리오는 개발자 팀이 Audience Network SDK에 대해 더욱 잘 이해하고, 통합 프로세스의 효율을 개선하며, 출시 후 솔루션을 최신으로 유지하는 데 도움이 됩니다.
loadAd
를 다시 호출합니다. 단, 배너 광고는 예외입니다.광고가 무시되거나 콜백에서 오류가 발생했을 때 알림을 받더라도 재시도를 무한 반복하지 않도록 최대 재시도 횟수를 설정해야 합니다. 광고를 읽어들이는 데 실패한 원인과 관계없이 onError(Ad, AdError)
가 호출됩니다. 예를 들어 '인터넷 연결이 없는' 경우 최대 재시도 횟수에 도달하면 광고를 읽어들이는 것을 중단해야 합니다.
Audience Network SDK에서는 배너 광고를 제외한 모든 광고 유형에서 loadAd
를 호출할 때 주의를 기울여야 합니다. 광고가 표시되는 중에는 절대 loadAd
를 호출해서는 안 됩니다. AdListener
를 구현하여 광고가 무시되거나, 완료되거나, 닫히거나, 오류가 발생할 때마다 알림을 받는 것이 좋습니다. 이렇게 하면 아무런 문제 없이 loadAd
를 합법적으로 다시 호출할 수 있습니다.
onInterstitialDismissed
콜백에서 loadAd
를 호출합니다.private InterstitialAd mInterstitialAd; private static final MAX_NUMBER_OF_RETRIES = 3; private boolean shouldLoadAd = true; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onCreate super.onCreate(savedInstanceState); ... mInterstitialAd = new InterstitialAd(this, "YOUR_PLACEMENT_ID"); InterstitialAdListener interstitialAdListener = new InterstitialAdListener() { ... @Override public void onInterstitialDismissed(Ad ad) { // Interstitial dismissed callback if (shouldLoadAd) { /* Change shouldLoadAd value to false, or a new interstitial ad will show immediately when previous interstitial ad gets dismissed. */ shouldLoadAd = false; mInterstitialAd.loadAd(); } } @Override public void onError(Ad ad, AdError adError) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if(retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mInterstitialAd.loadAd(); } } ... }; mInterstitialAd.loadAd( mInterstitialAd.buildLoadAdConfig() .withAdListener(interstitialAdListener) .build()); ... }
NativeAd
의 경우 onError
콜백에서 loadAd를 호출합니다.private static final MAX_NUMBER_OF_RETRIES = 3; private NativeAd mNativeAd; private int retryCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Stop retrying when it reaches to MAX_NUMBER_OF_RETRIES if (retryCount < MainActivity.MAX_NUMBER_OF_RETRIES) { retryCount += 1; mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); ... }
private Button showNativeAdButton; @Override public void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... showNativeAdButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Create a native ad request with a placement ID nativeAd = new NativeAd(NativeAdSampleActivity.this, "YOUR_PLACEMENT_ID"); // Create a listener to get notified when the ad was loaded. NativeAdListener nativeAdListener = new AdListener() { ... } // Initiate a request to load an ad. nativeAd.loadAd( nativeAd.buildLoadAdConfig() .withAdListener(nativeAdListener) .build()); } }); ... }
onResume()
또는 onStart()
콜백)에서는 절대 loadAd
를 사용하지 마세요. 메모리에서 마지막 광고를 무시하거나 해제하지 않고 loadAd
를 반복해서 호출하게 될 수도 있습니다.@Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); ... } @Override protected void onResume() { super.onResume(); ... // DON'T DO THIS! mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); }
loadAd
를 무기한 호출하지 않도록 주의하세요. 아래는 반드시 피해야 할 잘못된 예시입니다. '인터넷 연결이 없는' 경우 loadAd
가 반복해서 호출되고, 결국 앱이 충돌하게 됩니다.private NativeAd mNativeAd; private boolean shouldRetry = true; @Override protected void onCreate(Bundle savedInstanceState) { // call the super class onResume super.onCreate(savedInstanceState); ... mNativeAd = new NativeAd(this, "YOUR_PLACEMENT_ID"); NativeAdListener nativeAdListener = new AdListener() { ... @Override public void onError(Ad ad, AdError error) { // Ad error callback // Remember to change shouldRetry to false, or DON'T implement like this! if (shouldRetry) { mNativeAd.loadAd(); } } ... }; mNativeAd.loadAd( mNativeAd.buildLoadAdConfig() .withAdListener(NativeAdSampleActivity.this) .build()); ... }
앱에서 테스트 광고 통합
검수를 위해 앱을 제출합니다.
Facebook은 앱이나 웹사이트에서 광고 요청을 받는 즉시, 광고 요청이 Audience Network 정책 및 Facebook 커뮤니티 규정을 준수하는지 확인하기 위해 검수합니다. 검수 절차에 대해 자세히 알아보세요.