본문 바로가기
Programming/Android

AdMob(애드몹) 광고 넣기 (Android)

by web data 2020. 1. 3.

안드로드이드 앱에 AdMob(애드몹) 광고를 넣어보자.

 

아래 정리한 내용은 아래의 링크를 따라가면 잘 나와있으나, 초보자인 내가 처음 해보니 이해하기 어려워, 다른 초보자들을 위해 정리해봤다.

 

참고 : https://developers.google.com/admob/android/quick-start

 

 

[진행 전 확인 사항]

- 안드로이드 스튜디오 3.5.1 기준

- 앱의 이름이 "MyTest

- AdMob 에 가입 후 전면광고 광고단위 등록 완료

  (가입시 앱ID가 기본 발급되고, 이후 광고단뒤 등록 시마다 광고단위ID 가 각각 발급된다.)

- 여기서는 아래의 테스트용 아이디를 사용하고, 실제 앱 배포시에는 자신이 발급받은 아이디를 사용한다.

   * 앱ID : ca-app-pub-3940256099942544~3347511713

   * 전면광고ID : ca-app-pub-3940256099942544/1033173712

- 목표 : 앱에서 backkey 를 누를 시 전면 광고 노출

 

1. build.gradle (Project: MyTest)  수정 - 클릭 시 MyTest 파일이 열림


.
.
allprojects {
    repositories {
        google()
        jcenter()
        
    }
}
.
.

위코드에 google() 부분 이 있는지 확인하고 없으면 추가

 

 

2. build.gradle (Module: app) 수정 - 클릭 시 app 파일이 열림


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.android.gms:play-services-ads:18.3.0'
}

위 코드에 implementation 'com.google.android.gms:play-services-ads:18.3.0' 부분이 있는지 확인하고 없으면 추가

  - 위 버전(18.3.0) 부분은 업데이트 될 수 있으므로 직접 확인할 것

    (https://developers.google.com/admob/android/quick-start 참고)

 

 

3. AndroidManifest.xml 수정


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mytest">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        ... >
        .
        .
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-3940256099942544~3347511713"/>
        .
        .
    </application>
</manifest>

- 위 <meta-data ...  /> 부분을 추가한다. value 부분에는 AdMob 가입시 발급받은 앱ID를 입력한다.

  위 예제소스에 입력되어 있는 아이디는 테스트용이다. 

- <uses-permission android:name="android.permission.INTERNET"/> 부분도 없다면 추가한다.

 

4. MainActivity.java 수정


.
.
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;

public class MainActivity extends AppCompatActivity {
    . 
    . 
    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		.
        .
        .
        //-- admob setting
        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
        mInterstitialAd = new InterstitialAd(this);

        //"ca-app-pub-3940256099942544/1033173712" 는 구글에서 테스트용으로 공개한 Test Ad Id - 배포시 실제 Id 로 변경 해야 함
        /*
            @안드로이드용 테스트광고 ID -- (https://developers.google.com/admob/unity/test-ads?hl=ko)
            - 배너 광고: ca-app-pub-3940256099942544/6300978111
            - 전면 광고: ca-app-pub-3940256099942544/1033173712
            - 보상형 동영상 광고: ca-app-pub-3940256099942544/5224354917
            - 네이티브 광고 고급형: ca-app-pub-3940256099942544/2247696110
        */
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");

        //광고 이벤트리스너 등록
        mInterstitialAd.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                Log.d("TAGHSS", "onAdLoaded");
            }

            @Override
            public void onAdFailedToLoad(int errorCode) {
                Log.d("TAGHSS", "onAdFailedToLoad");
            }

            @Override
            public void onAdOpened() {
                Log.d("TAGHSS", "onAdOpened");
            }

            @Override
            public void onAdClicked() {
                Log.d("TAGHSS", "onAdClicked");
            }

            @Override
            public void onAdLeftApplication() {
                Log.d("TAGHSS", "onAdLeftApplication");
            }

            @Override
            public void onAdClosed() {
                Log.d("TAGHSS", "onAdClosed");
                // Code to be executed when the interstitial ad is closed.
                mInterstitialAd.loadAd(new AdRequest.Builder().build());
            }
        });

        mInterstitialAd.loadAd(new AdRequest.Builder().build());

    }

	/* backkey 누르면 광고 뜨게 처리 */
    @Override
    public void onBackPressed() {
        Toast.makeText(this, "Back button pressed.", Toast.LENGTH_SHORT).show();

        if (mInterstitialAd.isLoaded()) {
            mInterstitialAd.show();
        } else {
            Log.d("TAGHSS", "The interstitial wasn't loaded yet.");
        }

    }

}

- 확인용으로 최초 로드 후 backkey 누르면 광고가 뜨도록 처리했다.

- 광고가 닫히면 새로운 광고를 로드하도록 onAdClosed 이벤트내 mInterstitialAd.loadAd 를 추가했다.

- 광고 닫힌 후 다른 액션이 필요하면 onAdClosed 이벤트내 코드를 추가한다.

 

5. 테스트 : 안드로이드 애뮬레이터 앱을 띄우고, 화면 로딩 완료 후 BackKey 를 누르면 아래와 같이 광고가 뜬다.

   (테스트광고ID를 사용하여 광고페이지도 TEST 페이지가 뜬다.  - 상단에 Test Ad 표기)

 

6. 빌드 : 문제 없이 잘 되면 앱ID 및 광고ID 를 본인의 것으로 변경하여 빌드한다.

   (본인의 ID로 빌드한 뒤 앱에서 광고를 함부로 호출하거나 클릭하면 안된다)