이 가이드에서는 보상형 광고를 Android 앱에 통합하는 방법을 설명합니다.
시작하기 전에
계속하기 전에 다음 단계를 따르세요.
- 설정 GMA Next-Gen SDK.
- 테스트 보상형 광고 단위 ID
ca-app-pub-3940256099942544/5224354917을 사용합니다.- 앱을 빌드하고 테스트할 때는 운영 중인 실제 광고 대신 테스트 광고를 사용하세요. 테스트 광고 단위 ID를 사용하지 않으면 Google에서 계정을 정지할 수 있습니다.
- 앱을 게시하기 전에 이 ID를 광고 단위 ID로 바꿔야 합니다.
- GMA Next-Gen SDK 테스트 광고에 관한 자세한 내용은 테스트 광고 사용 설정을 참고하세요.
광고 로드
다음 예에서는 단일 광고를 로드합니다.
Kotlin
// Load ads after you initialize MobileAds. RewardedAd.load( AdRequest.Builder(adUnitId).build(), object : AdLoadCallback<RewardedAd> { override fun onAdLoaded(ad: RewardedAd) { // Rewarded ad loaded. rewardedAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: ${adError.message}") rewardedAd = null } }, )
자바
// Load ads after you initialize MobileAds. RewardedAd.load( new AdRequest.Builder(adUnitId).build(), new AdLoadCallback<RewardedAd>() { @Override public void onAdLoaded(@NonNull RewardedAd ad) { // Rewarded ad loaded. rewardedAd = ad; } @Override public void onAdFailedToLoad(@NonNull LoadAdError adError) { // Rewarded ad failed to load. Log.e(TAG, "Rewarded ad failed to load: " + adError.getMessage()); rewardedAd = null; } });
테스트할 때는 테스트 광고 단위 ID ca-app-pub-3940256099942544/5224354917을 사용하세요.
광고 표시
보상형 광고를 표시하려면show 메서드를 호출합니다. 보상 이벤트를 처리하려면 OnUserEarnedRewardListener 객체를 사용합니다.
다음 예에서는 광고를 표시합니다.
Kotlin
private fun showAd(rewardedAd: RewardedAd, activity: Activity) { // Show the ad. rewardedAd.show( activity, object : OnUserEarnedRewardListener { override fun onUserEarnedReward(rewardItem: RewardItem) { // User earned the reward. val rewardAmount = rewardItem.amount val rewardType = rewardItem.type } }, ) }
자바
private void showAd(RewardedAd rewardedAd, Activity activity) { // Show the ad. rewardedAd.show( activity, new OnUserEarnedRewardListener() { @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { // User earned the reward. int rewardAmount = rewardItem.getAmount(); String rewardType = rewardItem.getType(); } }); }
광고 이벤트 수신 대기
광고를 표시하기 전에 광고 수명 주기 이벤트를 수신 대기합니다. 다음 예에서는 광고 이벤트의 콜백을 등록합니다.
Kotlin
private fun listenToAdEvents() { // Listen for ad events. val ad = rewardedAd if (ad == null) { Log.e(TAG, "Rewarded ad is not ready yet.") return } ad.adEventCallback = object : RewardedAdEventCallback { override fun onAdShowedFullScreenContent() { // Rewarded ad did show. } override fun onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null } override fun onAdFailedToShowFullScreenContent( fullScreenContentError: FullScreenContentError ) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: ${fullScreenContentError.message}") } override fun onAdImpression() { // Rewarded ad did record an impression. } override fun onAdClicked() { // Rewarded ad did record a click. } } }
자바
private void listenToAdEvents() { // Listen for ad events. if (rewardedAd == null) { Log.e(TAG, "Rewarded ad is not ready yet."); return; } rewardedAd.setAdEventCallback( new RewardedAdEventCallback() { @Override public void onAdShowedFullScreenContent() { // Rewarded ad did show. } @Override public void onAdDismissedFullScreenContent() { // Rewarded ad did dismiss. rewardedAd = null; } @Override public void onAdFailedToShowFullScreenContent( FullScreenContentError fullScreenContentError) { // Rewarded ad failed to show. Log.e(TAG, "Rewarded ad failed to show: " + fullScreenContentError.getMessage()); } @Override public void onAdImpression() { // Rewarded ad did record an impression. } @Override public void onAdClicked() { // Rewarded ad did record a click. } }); }
선택사항: 서버 측 확인 (SSV) 콜백 검사
서버 측 확인 (SSV) 콜백에서 사용자 및 애플리케이션 컨텍스트를 전달하려면 광고를 표시하기 전에 광고 객체에서 확인 옵션을 설정합니다. SSV 콜백은 세션 상태 없이 Google에서 서버로 도착하므로 다음 선택적 문자열을 연결합니다. Google은 이러한 문자열을 변경하지 않고 SSV 콜백에서 서명된 쿼리 매개변수로 전달합니다.
user_id쿼리 매개변수: 크레딧을 제공할 사용자(예: 내부 계정 ID)를 식별합니다.custom_data쿼리 매개변수: 보상 게재위치, 게임 레벨 또는 서버에서 생성된 nonce와 같은 앱 데이터를 전달합니다.
값을 설정하지 않으면 Google에서 SSV 콜백에서 해당 쿼리 매개변수를 생략합니다.
다음 예에서는 광고를 표시하기 전에 광고 객체에서 맞춤 데이터를 설정합니다.
Kotlin
자바
SAMPLE_CUSTOM_DATA_STRING을 맞춤 데이터로 바꿉니다.
핵심사항: custom_data 쿼리 매개변수는
퍼센트 인코딩됩니다. 값을 파싱하기 전에 서버에서 문자열을 URL 디코딩하고 user_id 또는 custom_data 쿼리 매개변수를 신뢰하기 전에 콜백 서명을 확인합니다.