반응형
admob에서 메소드를 변화시켰다.
기존 com.google.android.gms:play-services-ads 19버전일 때와 많이 달라졌다.
나는 com.google.android.gms:play-services-ads:20.6.0 을 사용하고 있으니 20버전이상부터 달라진 기준을 얘기하겠다.
참고자료는 아래 소스를 보고 했다.
https://developers.google.com/admob/android/rewarded?hl=ko
1) RewardedAd 선언하기
RewardedAd rewardedAd = new RewardedAd(getContext(), adUnitId);
RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback ~~
rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
구버전은 위와 같았다. 그런데 신규버전으로 고치자 모든 곳에서 에러가 났다.
다음과 같이 바꿔야 한다. 본인의 경우 여러개의 보상형 광고 변수값이 존재해 조건식을 뒀다.
물론 메쏘드도 RewardAd변수 반환에서 void로 바꿔줘야만 했다.
RewardedAd.load(getContext(), adUnitId, new AdRequest.Builder().build(), new RewardedAdLoadCallback() {
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
super.onAdFailedToLoad(loadAdError);
if(option == 1) {
oilRewardedAd = null;
}else if(option == 2) {
againMiniAd = null;
}else if(option == 3) {
againPigAd = null;
}
}
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
super.onAdLoaded(rewardedAd);
if(option == 1) {
oilRewardedAd = rewardedAd;
}else if(option == 2) {
againMiniAd = rewardedAd;
}else if(option == 3) {
againPigAd = rewardedAd;
}
}
});
2) 보상형광고 조건 설정
이게 가장 당황스러웠다.
if (againMiniAd.isLoaded()) {
//Activity activityContext = MainActivity.this
RewardedAdCallback adCallback = new RewardedAdCallback() {
@Override
public void onRewardedAdOpened() {
// Ad opened.
}
@Override
public void onRewardedAdClosed() {
// Ad closed.
set_popup(false, "", "");
createAndLoadRewardedAd(againMiniAdID, 2); //다시 로딩 준비
}
@Override
public void onUserEarnedReward(@NonNull RewardItem reward) {
//재시도 버튼 무조건 안보이게 하기
btn_again_1.setVisibility(View.GONE);
btn_again_2.setVisibility(View.GONE);
// User earned reward.
Toast.makeText(getContext(), "미니게임에 다시 도전해보세요.", Toast.LENGTH_LONG).show();
// 0. 효과음 초기화
prev_effect = -1;
// 1. 센터샷, 글내용 등 화면 재설정
setResourceId_crop(center_shot_curr, "img_finish_him");
center_shot_curr.setVisibility(View.VISIBLE);
story_curr.setText("미니게임에 다시 도전해보세요.");
// 2-1. 게임 초기화
finish_timer.setText("10.00 초");
start_spin = false; //스핀을 돌렸냐 안돌렸냐 여부 체크
is_end_stage = 0; //해당 스테이지의 최종까지 했냐
is_pigwoman = 0; //여자악당 리셋
get_score = false; //현재 스테이지에서 점수를 땄냐
finish_score_val= 0; //미니게임의 점수
click_cnt = 0; //미니게임 변수
//2-2. seek_bar 초기화
int res_src = myCtx.getResources().getIdentifier("jojul_bar_thum1", "drawable", myCtx.getPackageName());
Drawable tmpThumb = getResources().getDrawable(res_src);
finish_progress.setThumb(tmpThumb);
finish_progress.setProgress(0);
// 3. 게임 시작
goMiniGame("start", SESSION_stage%4);
}
@Override
public void onRewardedAdFailedToShow(AdError adError) {
// Ad failed to display.
Toast.makeText(getContext(), "광고 시청을 완료하지 못해 기름 충전을 못하게 되었습니다.", Toast.LENGTH_LONG).show();
}
};
againMiniAd.show(getActivity(), adCallback);
} else {
Log.d("TAG", "The rewarded ad wasn't loaded yet.");
}
하나의 콜백함수(RewardedAdCallback)로 성공조건, 실패조건 다 넣었었는데
신버전에선 RewardedAdCallback메소드를 아예 없앴다.
그리고 1) 성공했을 때 메소드, 2) 실패와 그외경우 메소드 이렇게 2개로 나눴다.
if(oilRewardedAd != null) {
oilRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdClicked() {
super.onAdClicked();
//광고 클릭시
}
@Override
public void onAdDismissedFullScreenContent() {
super.onAdDismissedFullScreenContent();
//광고 취소됐을 때
set_popup(false, "", "");
createAndLoadRewardedAd(oilRewardedAdID, 1); //다시 로딩 준비
}
@Override
public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
super.onAdFailedToShowFullScreenContent(adError);
//광고 보이는게 실패했을 때
Toast.makeText(getContext(), "광고 시청을 완료하지 못해 기름 충전을 못하게 되었습니다.", Toast.LENGTH_LONG).show();
resetGame("범인 검거 실패!");
}
@Override
public void onAdImpression() {
super.onAdImpression();
}
@Override
public void onAdShowedFullScreenContent() {
super.onAdShowedFullScreenContent();
}
});
oilRewardedAd.show(getActivity(), new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
gauge_car = 1;
Toast.makeText(getContext(), "기름이 가득 충전되었습니다. 원하는 시대로 이동할 수 있습니다.", Toast.LENGTH_LONG).show();
setGaugeImage(true, !isFront);
}
});
} else {
Log.d("TAG", "The rewarded ad wasn't loaded yet.");
}
즉,
- 실패 및 그외 조건 설정 메소드 setFullScreenContentCallback
- 성공조건 메소드 show -> OnUserEarnedRewardListener
이렇게 나타냈다.
반응형
'PHP' 카테고리의 다른 글
[admob, 안드로이드] 특정 확률로 "전면광고" 나오게끔 구현하기 (0) | 2023.08.04 |
---|---|
안드로이드 YOUTUBE API 종료에 따른 WEBVIEW 대처 방법 (0) | 2023.07.25 |
Android Studio - unable to find valid certification path to requested target 해결방법 (0) | 2023.07.23 |
httpd-ssl.conf에서 htaccess등 rewriterule인식하게끔 만들기 (AllowOveride 추가) (0) | 2023.07.17 |
https인증서 적용하기 (sslforfree, apache, httpd버전) (0) | 2023.07.15 |