반응형
안녕하세요 개발자 망고 입니다.
지난 배너 광고 넣기 Post에 이어 전면 광고를 post 해보겠습니다.
기본 설정은 배너 광고 할때와 완전 동일하므로 설정이 궁금하신 분은 아래 post 확인 부탁드립니다.
1. 전면 광고
버튼을 누르면 전면광고가 나오게 할 예정입니다.
2. 버튼 만들기
activity 실행 될때 바로 보여주게 할 수도 있지만 저는 그냥 버튼을 만들었습니다.
이부분은 다르게 해도 됩니다.
xml에 버튼 추가
<Button
android:id="@+id/btn_show_front_ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="전면광고 보여주기"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
코드에 버튼 로직 추가
- 코드에 버튼 눌렀을때 loadFrontAd() 함수 호출 되도록 작업
- loadFrontAd() : 전면광고를 뛰우는 작업하려고 만든 함수
// 버튼 눌렀을때 event
findViewById(R.id.btn_show_front_ad).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadFrontAd();
}
});
3. 전면 광고 코드
서버에서 광고를 load
- 로드를 성공해야 보여줄 수 있음
- load 함수에서 "ca-app-xxxxxx" 부분은 마켓에 올릴때 자기것으로 변경해줘야함
- onAdLoaded가 호출되면 보여줄 수 있는 상태임
- onAdLoaded가 될때 showFrontAd 호출, 해당 api는 아래에 설명
private void loadFrontAd() {
AdRequest adRequest = new AdRequest.Builder().build();
// ca-app-pub 부분은 나중에 마켓등록시 변경하면 된다.
InterstitialAd.load(this, "ca-app-pub-3940256099942544/1033173712", adRequest,
new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull InterstitialAd interstitialAd) {
// 광고 로드가 성공하면 보여 주는 로직을 타면 된다.
mInterstitialAd = interstitialAd;
showFrontAd();
Log.i(TAG, "onAdLoaded");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error
Log.d(TAG, loadAdError.toString());
mInterstitialAd = null;
}
});
}
로드한 광고를 화면에 보여주기
- setFullScreenContentCallback 는 광고를 show 하기전에 설정해서 광고의 상태를 알 수 있는 listener이다
- 필요하다면 해당 callback에서 추가 처리를 해주면 된다.
- mInterstitialAd.show(context) 를 하면 화면에 출력이 된다.
private void showFrontAd() {
if (mInterstitialAd == null) {
Log.d("TAG", "The interstitial ad wasn't ready yet.");
return;
}
// callback을 통해 광고의 상태를 확인 해서 추가적인 동작을 할 수 있다.
mInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback(){
@Override
public void onAdClicked() {
// Called when a click is recorded for an ad.
Log.d(TAG, "Ad was clicked.");
}
@Override
public void onAdDismissedFullScreenContent() {
// Called when ad is dismissed.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.");
mInterstitialAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.");
mInterstitialAd = null;
}
@Override
public void onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when ad is shown.
Log.d(TAG, "Ad showed fullscreen content.");
}
});
// show 호출
mInterstitialAd.show(MainActivity.this);
}
결과화면
4. 소스코드
Sample code와 다른 post 입니다.
감사합니다.
반응형
댓글