애드몹 광고 중 동영상 보상 광고를 만들어 보자.
동영상 보상 광고는 게임 등에서 동영상 광고를 보면 아이템을 준다 던지, 스테이지를 추가로 진행 할 수 있게 해주는
광고의 형태이다.
그렇기에 무료 게임 방식에서 많이 사용되고 있다.
위 예제의 구현은, 다른 애드몹 광고 타입과 유사하다.
1. 애드몹에서 광고 ID 및 app ID를 생성한다. ( 해당 부분은 생략 )
2. 광고 모듈을 build.gradle 에 추가하기.
dependencies {
implementation 'com.google.android.gms:play-services-ads:19.2.0'
...
3. 소스 구현하기.
...
public class MainActivity extends AppCompatActivity {
private RewardedAd rewardedAd;
Button rewardButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 테스트 광고 객체 생성
// 실제 앱에서는 자신의 광고 ID를 추가하면 된다.
rewardedAd = new RewardedAd(this,
"ca-app-pub-3940256099942544/5224354917");
// 광고 초기화 및 로드 성공 실패 여부를 확인
// 앱을 실행하면 일반적으로 초기화 후 onRewardedAdLoaded()가 호출되면서 동영상 리워드 광고 호출 준비를 마친다.
RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
@Override
public void onRewardedAdLoaded() {
// Ad successfully loaded.
Log.d("TAG", "#### Ad successfully loaded.");
}
@Override
public void onRewardedAdFailedToLoad(int errorCode) {
// Ad failed to load.
Log.d("TAG", "#### Ad failed to load.");
}
};
rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
// 테스트를 위한 버튼
rewardButton = (Button)findViewById(R.id.rewardButton);
rewardButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
if (rewardedAd.isLoaded()) {
Activity activityContext = MainActivity.this;
RewardedAdCallback adCallback = new RewardedAdCallback() {
@Override
public void onRewardedAdOpened() {
// Ad opened. // 동영상 광고가 열렸을때 호출되는 함수
Log.d("TAG", "#### Ad opened.");
rewardButton.setVisibility(View.INVISIBLE);
}
@Override
public void onRewardedAdClosed() {
// Ad closed.// 동영상 광고 창을 중지했거나, 다보고 X 버튼을 눌렀을때
Log.d("TAG", "#### Ad closed.");
// 신규 동영상 광고를 미리 로드 하는 과정이 필요함.
rewardedAd = createAndLoadRewardedAd();
}
@Override
public void onUserEarnedReward(@NonNull RewardItem reward) {
// User earned reward.. // 동영상 광고를 다 본 후 보상을 여기서 처리.
Log.d("TAG", "#### User earned reward.");
}
@Override
public void onRewardedAdFailedToShow(int errorCode) {
// Ad failed to display. // 동영상 광고 재생에 실패시 처리.
Log.d("TAG", "errorCode." + errorCode);
}
};
rewardedAd.show(activityContext, adCallback);
} else {
Log.d("TAG", "#### The rewarded ad wasn't loaded yet.");
}
}
});
}
public RewardedAd createAndLoadRewardedAd() {
RewardedAd rewardedAd = new RewardedAd(this,
"ca-app-pub-3940256099942544/5224354917");
RewardedAdLoadCallback adLoadCallback = new RewardedAdLoadCallback() {
@Override
public void onRewardedAdLoaded() {
// Ad successfully loaded.
Log.d("TAG", "#### createAndLoadRewardedAd " );
// 광고가 정상적으로 로딩 되었을때 버튼을 보여주도록 처리함.
// 이와 같이 광고를 다 로딩하고 나서, UI 작업을 진행해주어야 한다.
rewardButton.setVisibility(View.VISIBLE);
}
@Override
public void onRewardedAdFailedToLoad(int errorCode) {
// Ad failed to load.
Log.d("TAG", "#### errorCode." + errorCode);
}
};
rewardedAd.loadAd(new AdRequest.Builder().build(), adLoadCallback);
return rewardedAd;
}
}
소스 구현의 상세 내용은 하기 구글 개발자 페이지를 참고드린다.
https://developers.google.com/admob/android/rewarded-ads
위 함수들을 활용하면,
유저들이 동영상 광고를 보고 난 후, 보상을 얻어 갈수 있는 구조를 손 쉽게 만들 수 있다.
감사합니다.
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
자바 Package 에 대해서. (2) | 2020.08.18 |
---|---|
자바 배열의 메모리. (2) | 2020.08.13 |
문자열 자르기 split (4) | 2020.07.06 |
랜덤 함수...Random() (6) | 2020.06.25 |
안드로이드 외부 폰트 적용하는 방법-2 (2) | 2020.06.15 |
댓글