안드로이드 cordova admob 적용하기

안드로이드 cordova admob 적용하기
안드로이드 cordova admob 적용하기

Javascript 로 개발을 알아서 잘 하실거라고 생각하고

 

앱을 개발하면서 수익을 내기 위해 admob 을 적용시키는 과정을 공유드립니다.제가 직접 적용했던 소스코드 및 플러그인도 공유드립니다.

 

필요준비물

1. admob 사이트 가입 및 앱 ID 획득 앱 ID ( cordova 플러그인 설치 시 필요 ) 배너광고 ID, 전면광고 ID, 리워드광고 ID ( 소스코드에 적용시 필요 ) 개발을 할 때는 테스트 ID로 개발을 진행해야 합니다 한 번(?)이라도 실계정ID 로 테스트 하면 계정이 약 1달 간 중지됩니다 https://developers.google.com/admob/android/test-ads?hl=ko

네이티브 광고는 cordova로 지원되지 않습니다(직접 개발하면 가능할지도..)

 

2. cordova admob 플러그인 라이브러리

https://github.com/ratson/cordova-plugin-admob-free

 

 

 

 

자 진행해보겠습니다.

1. admob 사이트를 가입합니다. - https://admob.google.com/

 

Google AdMob: 모바일 앱 수익 창출

인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.

admob.google.com

  • 가입을 하고 나면 메인화면에서 좌측에 [앱 - 앱 추가] 클릭하여 본인이 만들 앱 이름을 작성하고 생성해줍니다.
  • 앱을 Google Play 또는 App Store에 게시하셨나요?

    • 우선은 [아니요] 라고 선택해서 다음을 진행합니다 ( 앱 배포를 하고나서 연결이 가능합니다 )
    • 아래의 화면 처럼 앱이름을 적당히 작성하고 [추가]를 선택

 

 

[앱 - 광고 단위 - 광고 단위 추가]로 들어가서 각각의 광고 단위를 생성

ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYYYY 등의 ID가 생성

 

 

 

 

[앱 - 앱 설정] 의 앱 ID를 잘 기억 복사해 줍니다

 

 

 

 

 

 

2. cordova admob 라이브러리

여러 라이브러리를 찾아보던 중 아래의 오픈소스가 가장 적절

다른 cordova admob 라이브러리는 광고로 벌어들인 수입을 원작자에게 공유하게 끔 되어 있고

아래의 라이브러리는 무료입니다

https://github.com/ratson/cordova-plugin-admob-free

 

ratson/cordova-plugin-admob-free

Cordova AdMob Plugin. Contribute to ratson/cordova-plugin-admob-free development by creating an account on GitHub.

github.com

 

설치 가이드에 따라 플러그인 설치

cordova plugin add cordova-plugin-admob-free --save --variable ADMOB_APP_ID="앱 ID 입력"

 

 

 

admob.js 파일 작성

  1. 제가 사용했던 js 파일이고(수정하셔서 사용해도 됩니다)
  2. 앱이 실행될 때 initAd() 를 호출 해주고
  3. 게재가 되어야 할 부분에서 showBanner() 등으로 적절하게 호출하면 됩니다.
  4. 소스파일을 빌드하게 될 때 index.html에 <script src="cordova.js"></script> 파일이 생성되므로
  5. 개발 웹 브라우저에서는 작동이 되지 않고 모바일 디바이스에서만 실행이 됩니다.
  6. 개발시에는 테스트 ID 로만 실행하셔야 합니다. 실제 ID값 테스트하면 계정정지 당합니다.
  1. 아래와 같이 모바일 디바이스에서 이벤트핸들러를 등록해주고 사용
document.addEventListener("deviceready", function() {       initAd(); });

 

 

 

var admob = null;

// 실제 // var admobId = { //   android: { //     banner: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //     interstitial: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //     rewardvideo: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //   }, //   ios: { //     banner: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //     interstitial: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //     rewardvideo: 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyy', //   } // }

// 테스트 var admobId = {   android: {     banner: 'ca-app-pub-3940256099942544/6300978111',     interstitial: 'ca-app-pub-3940256099942544/1033173712',     rewardvideo: 'ca-app-pub-3940256099942544/5224354917',   },   ios: {     banner: 'ca-app-pub-3940256099942544/6300978111',     interstitial: 'ca-app-pub-3940256099942544/1033173712',     rewardvideo: 'ca-app-pub-3940256099942544/5224354917',   } }

export function initAd() {   admob = window.plugins.admob || window.admob;   if (/(android)/i.test(navigator.userAgent) && admob) {     // 배너     admob.banner.config({       id: admobId.android.banner,       autoShow: false,     });     admob.banner.prepare();

    // 전면     admob.interstitial.config({       id: admobId.android.interstitial,       autoShow: false,     });     admob.interstitial.prepare();

    // 리워드     admob.rewardvideo.config({       id: admobId.android.rewardvideo,       autoShow: false,     });     admob.rewardvideo.prepare();

  } else if (/(ipod|iphone|ipad)/i.test(navigator.userAgent) && admob) {     // 배너     admob.banner.config({       id: admobId.ios.banner,       autoShow: false,     });     admob.banner.prepare();

    // 전면     admob.interstitial.config({       id: admobId.ios.interstitial,       autoShow: false,     });     admob.interstitial.prepare();

    // 리워드     admob.rewardvideo.config({       id: admobId.ios.rewardvideo,       autoShow: false,     });     admob.rewardvideo.prepare();   }

  let interstitialEvent = ['LOAD_FAIL', 'CLOSE', 'EXIT_APP'];   interstitialEvent.forEach((v) => {     document.addEventListener(`admob.interstitial.events.${v}`, function () {       admob.interstitial.prepare();     })   })

  let rewardvideoEvent = ['LOAD_FAIL', 'CLOSE', 'EXIT_APP', 'REWARD'];   rewardvideoEvent.forEach((v) => {     document.addEventListener(`admob.rewardvideo.events.${v}`, function () {       admob.rewardvideo.prepare();     })   }) }

export function showBanner() {   if (admob) {     admob.banner.show();   } } export function removeBanner() {   if (admob) {     admob.banner.remove();     setTimeout(() => {       admob.banner.prepare()     }, 100)   } } export function prepareInterstitial() {   if (admob) {     admob.interstitial.prepare();   } } export function showInterstitial() {   if (admob) {     admob.interstitial.show();   } } export function prepareRewardVideo() {   if (admob) {     admob.rewardvideo.prepare();   } } export function showRewardVideo() {   if (admob) {     admob.rewardvideo.show();   } }

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤