AdMob

1. 기본 요건

  • ADX Android SDK를 프로젝트에 추가합니다.

  • Rewarded Ad용으로 발급받은 애드몹 Ad Unit ID를 사용합니다.

  • 광고를 요청하기 전에 SDK 초기화를 먼저 진행합니다.

    • SDK 초기화는 앱 실행 시 한 번만 호출하여 주시고, 광고 요청은 초기화가 완료된 후에 이뤄져야 합니다.

  • AndroidManifest.xml 파일에 <meta-data> 태그에 "com.google.android.gms.ads.APPLICATIONID"와 발급된 애드몹 APP ID를 추가합니다.

    <application>
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="YOUR_ADMOB_APP_ID"/>
    </application>
</manifest>

2. 구현

Rewarded Ad load에 시간이 걸릴 수 있으니, 미리 load 해두신 다음 사용하시는 것을 권장드립니다.

  1. AdRequest를 생성합니다.

    • GDPR 관련 규정을 준수하는 경우, 사용자가 개인정보 활용 및 수집을 거부한 상태(ADXConsentStateDenied)일 때 npa1로 추가합니다.

  2. RewardAdload()로 광고를 로드합니다.

  3. 광고 로드가 완료되면 onAdLoaded callback이 호출됩니다.

  4. 표시 할 광고가 있는지 확인 후, show()로 광고를 표시합니다.

  5. 광고 시청을 모두 완료하면 onUserEarnedReward callback을 받은 후 보상을 지급하도록 처리합니다.

public class RewardedVideoAdMobActivity extends AppCompatActivity {
    private RewardedAd rewardedAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rewarded_video_admob);

        loadAd();
    }

    public void loadAd() {
        Bundle extras = new Bundle();

        if (ADXGDPR.ADXConsentState.values()[ADXGdprManager.getResultGDPR(this)] == ADXGDPR.ADXConsentState.ADXConsentStateDenied) {
            extras.putString("npa", "1");
        }
        AdRequest adRequest = new AdRequest.Builder()
                .addNetworkExtrasBundle(AdMobAdapter.class, extras)
                .build();

        RewardedAd.load(this, "<YOUR_ADMOB_AD_UNIT_ID>", adRequest, new RewardedAdLoadCallback() {
            @Override
            public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
                // Ad successfully loaded.
                Log.d(TAG, "onAdLoaded");

                mRewardedAd = rewardedAd;

                mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
                    @Override
                    public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
                        // Ad failed to display.
                        Log.d(TAG, "onRewardedAdFailedToShow : " + adError.getCode());
                    }

                    @Override
                    public void onAdShowedFullScreenContent() {
                        // Ad opened.
                        mRewardedAd = null;
                        Log.d(TAG, "onAdShowedFullScreenContent");
                    }

                    @Override
                    public void onAdDismissedFullScreenContent() {
                        // Ad closed.
                        Log.d(TAG, "onAdDismissedFullScreenContent");
                        loadAd();
                    }

                    @Override
                    public void onAdImpression() {
                        // Ad Impression
                        Log.d(TAG, "onAdImpression");
                    }
                });
            }

            @Override
            public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
                // Ad failed to load.
                Log.d(TAG, "onRewardedAdFailedToLoad : " + loadAdError.getCode());
            }
        });
    }

    public void showAd() {

        if (mRewardedAd != null) {
            mRewardedAd.show(this, new OnUserEarnedRewardListener() {
                @Override
                public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
                    // User earned reward.
                    Log.d(TAG, "onUserEarnedReward");
                }
            });
        } else {
            Log.d(TAG, "The rewarded ad wasn't loaded yet.");
            loadAd();
        }
    }

    @Override
    protected void onDestroy() {
        mRewardedAd = null;

        super.onDestroy();
    }
}

3. Callback

FullScreenContentCallback을 설정하여 특정 이벤트를 수신할 수 있습니다.

RewardedAd일회용 객체로 보상형 광고가 표시된 후에는 다시 표시되지 않습니다.

이전 광고가 닫힌 직후 다음 보상형 광고가 로드될 수 있도록 onAdDidDismissFullScreenContent() 에 다른 보상형 광고를 로드하는 것이 좋습니다.

mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
    @Override
    public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
        // Ad failed to display.
        Log.d(TAG, "onRewardedAdFailedToShow : " + adError.getCode());
    }

    @Override
    public void onAdShowedFullScreenContent() {
        // Ad opened.
        mRewardedAd = null;
        Log.d(TAG, "onAdShowedFullScreenContent");
    }

    @Override
    public void onAdDismissedFullScreenContent() {
        // Ad closed.
        Log.d(TAG, "onAdDismissedFullScreenContent");
        loadAd();
    }

    @Override
    public void onAdImpression() {
        // Ad Impression
        Log.d(TAG, "onAdImpression");
    }
});

4. 테스트 기기 등록

개발 중 상용 광고 키로 광고를 테스트하려는 경우 아래 단계에 따라 테스트 기기를 등록 후 사용해주시기 바랍니다.

테스트 기기 미등록 상태로 테스트할 경우 계정이 정지될 수 있습니다.

1) ADXLibrary를 적용 후 광고를 로드하는 코드가 삽입된 상태로 실행해주시면 콘솔에서 해당 로그를 확인하실 수 있습니다.

 I/Ads: Use RequestConfiguration.Builder.setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE231"))
to get test ads on this device."

2) 출력된 Device ID를 복사하여 아래와 같이 setTestDeviceIds() 를 호출하여 테스트 기기를 등록해주시면 됩니다.

앱을 출시하기 전에 이러한 테스트 기기를 설정하는 코드를 반드시 삭제하세요.

RequestConfiguration configuration = new RequestConfiguration.Builder()
                        .setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE231")).build();
MobileAds.setRequestConfiguration(configuration);

Last updated