ionic 앱에 AdMob 삽입
도입으로 꽤 빠져 버렸으므로, 순서를 정리해 둡니다.
환경
AdMob 플러그인 설치
cordova-admob-pro이라는 플러그인을 사용합니다. 다음 명령으로 플러그인을 설치합니다.
$ ionic plugin add cordova-plugin-admobpro
Android SDK Tools 설치
공식 페이지 설치 절차에도 쓰고 있지만 일부 Android SDK Tool이 필요한 것 같습니다. 나는 이런 느낌의 설치 상황에서 갈 수있었습니다. 여기에 들고 있는 것 전부가 필요한지는 모릅니다만, 적어도 Google Play계는 필요할 것 같은 생각이 든다. .
아, 그건 그렇고, 이것은 Mac 버전의 Android Studio 화면입니다.
설정
이쪽도 공식 페이지 에 샘플 코드가 실려 있었습니다만, AngularJS답게 인젝션 하려고 해 보았습니다.
이런 느낌의 코드를 어딘가에 둡니다. banner
및 interstitial
에는 AdMob에서 발행하는 각 광고에 대한 키를 입력해야합니다. (또한 Interstitial 광고를 사용하지 않으면 interstitial
주위의 설명이 필요하지 않습니다.)
admob.coffee'use strict'
@app
.factory 'AdMobManager', ->
admobid =
if /(android)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else if /(ipod|iphone|ipad)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
initApp = ->
if typeof AdMob == 'undefined'
console.log 'AdMob plugin is not ready.', admobid
return
AdMob.createBanner
adId: admobid.banner
isTesting: true # とりあえずテスト用の広告
overlap: false
offsetTopBar: false
position: AdMob.AD_POSITION.BOTTOM_CENTER
bgColor: 'black'
AdMob.prepareInterstitial
adId: admobid.interstitial
autoShow: true
factory =
init: ->
if /(ipad|iphone|ipod|android|windows phone)/i.test(navigator.userAgent)
initApp()
작성한 admob.js
를 index.html
로 로드한 후 이 팩토리를 사용하여 AdMob을 초기화하는 코드를 app.coffee
에 작성합니다.
app.coffee'use strict'
@app = angular.module('MyApp', ['ionic'])
.run ($ionicPlatform, AdMobManager) ->
$ionicPlatform.ready ->
# Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
# for form inputs)
if window.cordova && window.cordova.plugins.Keyboard
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true)
if window.StatusBar
StatusBar.styleDefault()
# ↓↓↓この行を追加↓↓↓
AdMobManager.init()
빌드하지만 오류로 이끼
이것으로 준비는 완료할 것이므로 기세 좋게 빌드해 보았습니다만, 뭔가 에러가 나왔습니다.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':processDebugResources'.
> Error: more than one library with package name 'com.google.android.gms'
You can temporarily disable this error with android.enforceUniquePackageName=false
However, this is temporary and will be enforced in 1.0
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
솔루션은 htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d에 나와 있습니다. 분명히 com.google.android.gms에서 참조되는 패키지가 여러 개 있기 때문입니다.
불필요한 플러그인을 삭제합니다.
$ ionic plugin remove cordova-google-play-services
이것으로 「일단」작업 완료할 것. $ ionic run android
로 실기로 확인해 보면··무사, 테스트용의 광고가 표시되었습니다! (브라우저상에서는 표시되지 않으므로 주의를)
뒤로 키로 돌아왔을 때의 거동이 바뀌었다··?
일반적으로 ionic으로 앱을 만드는 경우 사용자가 기기의 뒤로 키를 누르면 이전 URL로 돌아갈 것입니다. 왠지 앱이 닫혀버리는 것입니다. . .
조사하면, 있었습니다.
htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d
해결책은 현재 platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java
를 열고 다음과 같이 수정할 수밖에 없는 것 같습니다. 잠정 대응이군요. .
CordovaActivity.java// import文が並んでいる箇所に追加
import android.view.KeyEvent;
...
// 最後にこのメソッドを追加
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (this.appView != null) {
View webview = this.appView.getView();
if (webview != null) {
return webview.dispatchKeyEvent(event);
}
return true;
}
return false;
}
다시 빌드하고 실기에 apk를 설치하고 확인한 결과 무사히 돌아가는 키의 거동이 복구되었습니다!
덧붙여서 이 파일은, ionic platform remove android
(을)를 해 버리면(자) 삭제되어 버리므로, 한 번 플랫폼을 파기해 재차 platform add
했을 때에는, 다시 한번 수정할 필요가 있기 때문에 주의를.
상당한 시간이 걸렸지만 최소한의 광고는 게재할 수 있습니다.
Reference
이 문제에 관하여(ionic 앱에 AdMob 삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/itmammoth/items/1a4d6508e9a7e530f766
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ ionic plugin add cordova-plugin-admobpro
공식 페이지 설치 절차에도 쓰고 있지만 일부 Android SDK Tool이 필요한 것 같습니다. 나는 이런 느낌의 설치 상황에서 갈 수있었습니다. 여기에 들고 있는 것 전부가 필요한지는 모릅니다만, 적어도 Google Play계는 필요할 것 같은 생각이 든다. .
아, 그건 그렇고, 이것은 Mac 버전의 Android Studio 화면입니다.
설정
이쪽도 공식 페이지 에 샘플 코드가 실려 있었습니다만, AngularJS답게 인젝션 하려고 해 보았습니다.
이런 느낌의 코드를 어딘가에 둡니다. banner
및 interstitial
에는 AdMob에서 발행하는 각 광고에 대한 키를 입력해야합니다. (또한 Interstitial 광고를 사용하지 않으면 interstitial
주위의 설명이 필요하지 않습니다.)
admob.coffee'use strict'
@app
.factory 'AdMobManager', ->
admobid =
if /(android)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else if /(ipod|iphone|ipad)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
initApp = ->
if typeof AdMob == 'undefined'
console.log 'AdMob plugin is not ready.', admobid
return
AdMob.createBanner
adId: admobid.banner
isTesting: true # とりあえずテスト用の広告
overlap: false
offsetTopBar: false
position: AdMob.AD_POSITION.BOTTOM_CENTER
bgColor: 'black'
AdMob.prepareInterstitial
adId: admobid.interstitial
autoShow: true
factory =
init: ->
if /(ipad|iphone|ipod|android|windows phone)/i.test(navigator.userAgent)
initApp()
작성한 admob.js
를 index.html
로 로드한 후 이 팩토리를 사용하여 AdMob을 초기화하는 코드를 app.coffee
에 작성합니다.
app.coffee'use strict'
@app = angular.module('MyApp', ['ionic'])
.run ($ionicPlatform, AdMobManager) ->
$ionicPlatform.ready ->
# Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
# for form inputs)
if window.cordova && window.cordova.plugins.Keyboard
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true)
if window.StatusBar
StatusBar.styleDefault()
# ↓↓↓この行を追加↓↓↓
AdMobManager.init()
빌드하지만 오류로 이끼
이것으로 준비는 완료할 것이므로 기세 좋게 빌드해 보았습니다만, 뭔가 에러가 나왔습니다.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':processDebugResources'.
> Error: more than one library with package name 'com.google.android.gms'
You can temporarily disable this error with android.enforceUniquePackageName=false
However, this is temporary and will be enforced in 1.0
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
솔루션은 htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d에 나와 있습니다. 분명히 com.google.android.gms에서 참조되는 패키지가 여러 개 있기 때문입니다.
불필요한 플러그인을 삭제합니다.
$ ionic plugin remove cordova-google-play-services
이것으로 「일단」작업 완료할 것. $ ionic run android
로 실기로 확인해 보면··무사, 테스트용의 광고가 표시되었습니다! (브라우저상에서는 표시되지 않으므로 주의를)
뒤로 키로 돌아왔을 때의 거동이 바뀌었다··?
일반적으로 ionic으로 앱을 만드는 경우 사용자가 기기의 뒤로 키를 누르면 이전 URL로 돌아갈 것입니다. 왠지 앱이 닫혀버리는 것입니다. . .
조사하면, 있었습니다.
htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d
해결책은 현재 platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java
를 열고 다음과 같이 수정할 수밖에 없는 것 같습니다. 잠정 대응이군요. .
CordovaActivity.java// import文が並んでいる箇所に追加
import android.view.KeyEvent;
...
// 最後にこのメソッドを追加
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (this.appView != null) {
View webview = this.appView.getView();
if (webview != null) {
return webview.dispatchKeyEvent(event);
}
return true;
}
return false;
}
다시 빌드하고 실기에 apk를 설치하고 확인한 결과 무사히 돌아가는 키의 거동이 복구되었습니다!
덧붙여서 이 파일은, ionic platform remove android
(을)를 해 버리면(자) 삭제되어 버리므로, 한 번 플랫폼을 파기해 재차 platform add
했을 때에는, 다시 한번 수정할 필요가 있기 때문에 주의를.
상당한 시간이 걸렸지만 최소한의 광고는 게재할 수 있습니다.
Reference
이 문제에 관하여(ionic 앱에 AdMob 삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/itmammoth/items/1a4d6508e9a7e530f766
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
'use strict'
@app
.factory 'AdMobManager', ->
admobid =
if /(android)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else if /(ipod|iphone|ipad)/i.test(navigator.userAgent)
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
else
banner: 'ca-app-pub-xxxxx',
interstitial: 'ca-app-pub-yyyyy'
initApp = ->
if typeof AdMob == 'undefined'
console.log 'AdMob plugin is not ready.', admobid
return
AdMob.createBanner
adId: admobid.banner
isTesting: true # とりあえずテスト用の広告
overlap: false
offsetTopBar: false
position: AdMob.AD_POSITION.BOTTOM_CENTER
bgColor: 'black'
AdMob.prepareInterstitial
adId: admobid.interstitial
autoShow: true
factory =
init: ->
if /(ipad|iphone|ipod|android|windows phone)/i.test(navigator.userAgent)
initApp()
'use strict'
@app = angular.module('MyApp', ['ionic'])
.run ($ionicPlatform, AdMobManager) ->
$ionicPlatform.ready ->
# Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
# for form inputs)
if window.cordova && window.cordova.plugins.Keyboard
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true)
if window.StatusBar
StatusBar.styleDefault()
# ↓↓↓この行を追加↓↓↓
AdMobManager.init()
이것으로 준비는 완료할 것이므로 기세 좋게 빌드해 보았습니다만, 뭔가 에러가 나왔습니다.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':processDebugResources'.
> Error: more than one library with package name 'com.google.android.gms'
You can temporarily disable this error with android.enforceUniquePackageName=false
However, this is temporary and will be enforced in 1.0
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
솔루션은 htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d에 나와 있습니다. 분명히 com.google.android.gms에서 참조되는 패키지가 여러 개 있기 때문입니다.
불필요한 플러그인을 삭제합니다.
$ ionic plugin remove cordova-google-play-services
이것으로 「일단」작업 완료할 것.
$ ionic run android
로 실기로 확인해 보면··무사, 테스트용의 광고가 표시되었습니다! (브라우저상에서는 표시되지 않으므로 주의를)뒤로 키로 돌아왔을 때의 거동이 바뀌었다··?
일반적으로 ionic으로 앱을 만드는 경우 사용자가 기기의 뒤로 키를 누르면 이전 URL로 돌아갈 것입니다. 왠지 앱이 닫혀버리는 것입니다. . .
조사하면, 있었습니다.
htps : // 기주 b. 코 m / f ぉ 아친 g 호 t 포 t / 코 r ゔ ぁ 아 d
해결책은 현재 platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java
를 열고 다음과 같이 수정할 수밖에 없는 것 같습니다. 잠정 대응이군요. .
CordovaActivity.java// import文が並んでいる箇所に追加
import android.view.KeyEvent;
...
// 最後にこのメソッドを追加
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (this.appView != null) {
View webview = this.appView.getView();
if (webview != null) {
return webview.dispatchKeyEvent(event);
}
return true;
}
return false;
}
다시 빌드하고 실기에 apk를 설치하고 확인한 결과 무사히 돌아가는 키의 거동이 복구되었습니다!
덧붙여서 이 파일은, ionic platform remove android
(을)를 해 버리면(자) 삭제되어 버리므로, 한 번 플랫폼을 파기해 재차 platform add
했을 때에는, 다시 한번 수정할 필요가 있기 때문에 주의를.
상당한 시간이 걸렸지만 최소한의 광고는 게재할 수 있습니다.
Reference
이 문제에 관하여(ionic 앱에 AdMob 삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/itmammoth/items/1a4d6508e9a7e530f766
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// import文が並んでいる箇所に追加
import android.view.KeyEvent;
...
// 最後にこのメソッドを追加
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (this.appView != null) {
View webview = this.appView.getView();
if (webview != null) {
return webview.dispatchKeyEvent(event);
}
return true;
}
return false;
}
Reference
이 문제에 관하여(ionic 앱에 AdMob 삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/itmammoth/items/1a4d6508e9a7e530f766텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)