본문 바로가기
스마트폰

안드로이드: 자바(JAVA) 코드에 카카오 애드핏(AdFit) 광고 달기

by G. Hong 2021. 4. 26.
728x90
반응형

안드로이드 어플에 구글 애드몹이 아닌 카카오의 애드핏을 한 번 넣어 보았습니다.

구글의 애드몹은 매우 잘 정리된 공식 가이드 문서들 덕분에 문서에 나온대로만 따라해도 거의 문제 없이 구현이 가능한데요. 

안타깝게도 카카오 애드핏의 문서는 그렇게 잘 정리되지는 않은 것 같습니다. 가이드도 깃허브에 있는 걸보니, 적당히 개발자팀에게 맡긴 느낌이 있네요. 

github.com/adfit/adfit-android-sdk/blob/master/docs/GUIDE.md

나중에도 가끔 참고를 할 수 있을 것 같아서 애드핏 적용 과정을 정리 해 보았습니다.

 

1. gradle 적용

가이드의 가장 첫 단계는 gradle 설정입니다. def(define)이 사용되는 코드만 남겼는데, def 선언 부분이 없는 점이 아쉽습니다. 카카오 adfit:ads-base의 최신버젼 정도는 안내를 해 줄 수도 있지만, 그런게 없습니다. 

애드핏 가이드의 내용

버젼은 아래의 페이지들을 통해서 확인이 가능합니다.

org.jetbrains.kotlin 버젼: kotlinlang.org/docs/gradle.html#targeting-the-jvm
com.google.android:gms:play-services-ads-identifier 버젼: developers.google.com/android/guides/setup
com.kakao.adfit:ads-base 버젼: devrepo.kakao.com:8088/nexus/content/groups/public/com/kakao/adfit/ads-base/

 

위의 방법으로 버젼들을 확인 하여서 적용은 아래와 같이 하였습니다.

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32"
implementation "com.google.android.gms:play-services-ads-identifier:17.0.0"
implementation "com.kakao.adfit:ads-base:3.7.1"

 

Network security config 설정

Network security config 설정 역시 생략된 단계가 있습니다.

애드핏 가이드 내용

먼저 프로젝트 리소스 xml 디렉토리는 프로젝트 창에서 res 폴더에서 오른쪽버튼을 클릭 한 뒤, New - Foler - XML Resource Folder를 선택해서 만들어 줍니다.

 

그리고 생성된 xml 폴더에서 오른쪽 버튼을 클릭한 후, New - XML Resource File 을 클릭한 뒤, 가이드의 내용 대로 network_security_config.xml 파일을 생성 합니다.

 

그리고 생성된 xml 파일에 가이드에 있는 xml의 내용을 붙여넣기를 합니다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true"/>
</network-security-config>

 

다음으로 manifest의 내용은 가이드에 있는 그대로 AndroidManifest.xml의 application 항목에 android:networkSecurityConfig="@xml/network_security_config" 를 추가 해 줍니다. 

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application 
        android:networkSecurityConfig="@xml/network_security_config"
        ... >
        ...
    </application>
</manifest>

 

 

레이아웃 xml 파일에 배너 추가하기

레이아웃 xml 파일에 배너를 추가하는 부분은 어렵지 않으니 가이드 대로 진행을 하시면 됩니다. 어플리케이션의 Layout 타입에 맞춰서 조절을 해주시면 됩니다. 그리고 나중에 자바코드에서 광고요청을 위해서는 android:id 도 추가를 합니다.

<com.kakao.adfit.ads.ba.BannerAdView
	android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

 

자바코드에 광고 설정

자바용 광고 샘플 코드: github.com/adfit/adfit-android-sdk/blob/master/app/src/main/java/com/kakao/adfit/publisher/sample/BannerJavaSampleActivity.java

자바용 광고요청은 샘플코드의 내용을 그대로 적용하시면 됩니다.

1. 아래 내용들을 import 합니다.

import com.kakao.adfit.ads.AdListener;
import com.kakao.adfit.ads.ba.BannerAdView;

 

2. MainActivity나 Fragment class에서 BannerAdView를 추가 합니다.

private BannerAdView adView;

 

3. onCreate 매소드(또는 onCreateView)에서 아래 코드들을 추가합니다. 샘플코드의 toast는 Log.d로 대체 하였습니다. 광고단위 ID는 adfit.kakao.com 에서 할당 받으시면 됩니다.

        adView = findViewById(R.id.adView);  // 배너 광고 뷰
        adView.setClientId("input-your-clientId");  // 할당 받은 광고단위 ID 설정
        adView.setAdListener(new AdListener() {  // 광고 수신 리스너 설정

            @Override
            public void onAdLoaded() {
                Log.d("AdFit: ","Banner is loaded");
            }

            @Override
            public void onAdFailed(int errorCode) {
                Log.d("AdFit: ","Failed to load banner :: errorCode = " + errorCode);
            }

            @Override
            public void onAdClicked() {
                Log.d("AdFit: ","Banner is clicked");
            }

        });

        // lifecycle 사용 가능한 경우
        // 참조 :: https://developer.android.com/topic/libraries/architecture/lifecycle
        getLifecycle().addObserver(new LifecycleObserver() {

            @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
            public void onResume() {
                if (adView != null) {
                    adView.resume();
                }
            }

            @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
            public void onPause() {
                if (adView != null) {
                    adView.pause();
                }
            }

            @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
            public void onDestroy() {
                if (adView != null) {
                    adView.destroy();
                    adView = null;
                }
            }
        });

        adView.loadAd();  // 광고 요청

 

4. 그리고 Override 매소드인 onResume, onPause, OnDestroy에는 다음과 같이 추가를 합니다.

    @Override
    public void onResume() {
        super.onResume();

        // lifecycle 사용이 불가능한 경우
        if (adView != null) {
            adView.resume();
        }
    }

    @Override
    public void onPause() {
        super.onPause();

        // lifecycle 사용이 불가능한 경우
        if (adView != null) {
            adView.pause();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        // lifecycle 사용이 불가능한 경우
        if (adView != null) {
            adView.destroy();
            adView = null;
        }
    }

 

광고요청 결과

자바 코드 단계를 완료하면 카카오 애드핏의 샘플광고가 바로 뜨게 됩니다. logcat에는 아래 로그가 발생하게 됩니다.

2021-04-26 12:45:15.998 29556-29556/com.supersimple.mytestapp I/AdFit3.7.1: Request Banner AD

 

어플에서 설정한 위치에 아래 스크린샷과 같은 광고가 뜨기 시작합니다.

 

728x90
반응형