GoogleAdMobを間違って理解していました(何回目でしょう?)
まだまだ誤ったことを書いたようで恐縮です。
内容としては、
・GoogleAdMobはブランクタイプのひな型でも実装できる
という事です。(誤解の原因はあるのですがTabs型のひな型でしか出来ないと思っていました)
参考にしたのは以下のリンクです。
capacitor-community /admob
https://github.com/capacitor-community/admob
ただ、この方法、ごく一部ですがjavaのソースもいじります。
(設定ファイル関係は結構いじっていますので今更?)
また、GoogleAdMob関係を別ファイルにしてみました。初期化と表示関数を実行するだけになったので、何かと判りやすくなった気もします。
大した量では無いので、こちらにソースも記載
android/app/src/main/java/**/**/MainActivity.java
**の部分はappIDに同じです。appIDが"a.b.c.d"ならば
android/app/src/main/java/a/b/c/d/MainActivity.java
になります
---------------------------------------------------------------
package a.b.c.d;
import com.getcapacitor.BridgeActivity;
//ここから下のみコピーです(上はいじらない事)
//test admob start
import android.os.Bundle;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerPlugin(com.getcapacitor.community.admob.AdMob.class);
}
}
//public class MainActivity extends BridgeActivity {}
//test admob end
---------------------------------------------------------------
android\app\src\main\AndroidManifest.xmlの11行目から(テスト用のadmobアプリIDです)
---------------------------------------------------------------
android:theme="@style/AppTheme">
<!--for admob start-->
<!-- 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"/>
<!--for admob end-->
<activity
---------------------------------------------------------------
android\variables.gradleの2行目から
---------------------------------------------------------------
minSdkVersion = 21
//test admob start
compileSdkVersion = 31
// compileSdkVersion = 30
//test admob end
targetSdkVersion = 30
---------------------------------------------------------------
AdMob用の外部TSファイル。初期化とバナー表示の関数を用意
src\assets\MyCode\admob.ts
---------------------------------------------------------------
import { AdMob, BannerAdOptions, BannerAdSize, BannerAdPosition, BannerAdPluginEvents, AdMobBannerSize } from '@capacitor-community/admob';
export async function admob_initialize(): Promise<void> {
const { status } = await AdMob.trackingAuthorizationStatus();
if (status === 'notDetermined') {
/**
* If you want to explain TrackingAuthorization before showing the iOS dialog,
* you can show the modal here.
* ex)
* const modal = await this.modalCtrl.create({
* component: RequestTrackingPage,
* });
* await modal.present();
* await modal.onDidDismiss(); // Wait for close modal
**/
}
AdMob.initialize({
requestTrackingAuthorization: true,
testingDevices: ['2077ef9a63d2b398840261c8221a0c9b'],
initializeForTesting: true,
});
}
export async function admob_banner(): Promise<void> {
AdMob.addListener(BannerAdPluginEvents.Loaded, () => {
// Subscribe Banner Event Listener
});
AdMob.addListener(BannerAdPluginEvents.SizeChanged, (size: AdMobBannerSize) => {
// Subscribe Change Banner Size
});
const options: BannerAdOptions = {
adId: 'ca-app-pub-3940256099942544/15453xxxxxx',
adSize: BannerAdSize.LARGE_BANNER,
position: BannerAdPosition.TOP_CENTER,
margin: 0,
isTesting: true
// npa: true
// // adId: 'ca-app-pub-3940256099942544/6300978111',//for Test テスト専用広告ユニット ID
// adId: 'ca-app-pub-8497871144212260/8154728510',//本番用
// adSize: BannerAdSize.LARGE_BANNER,
// // adSize: BannerAdSize.BANNER,
// position: BannerAdPosition.TOP_CENTER,
// margin: 0,
// isTesting: false
};
AdMob.showBanner(options);
}
---------------------------------------------------------------
src\app\home\home.page.ts
---------------------------------------------------------------
import { Component } from '@angular/core';
import {admob_initialize,admob_banner} from '../../assets/MyCode/admob'
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage {
constructor() {
admob_initialize();
}
ionViewDidEnter(){
admob_banner();
// AdMob.addListener(BannerAdPluginEvents.Loaded, () => {
// // Subscribe Banner Event Listener
// console.log('loaded');
// });
// AdMob.addListener(BannerAdPluginEvents.SizeChanged, (size: AdMobBannerSize) => {
// // Subscribe Change Banner Size
// console.log('size changed');
// });
// const options: BannerAdOptions = {
// adId: 'ca-app-pub-3940256099942544/15453xxxxxx',//test
// adSize: BannerAdSize.BANNER,
// position: BannerAdPosition.BOTTOM_CENTER,
// margin: 100,
// isTesting: true
// // npa: true
// };
// AdMob.showBanner(options);
}
}
---------------------------------------------------------------
広告バナーを表示するだけのコードですが、広告関係の関数を外部ファイルにしたので扱いやすくなったかもしれません。
Ionic:
Ionic CLI : 6.19.0 (C:\Users\aticltd\AppData\Roaming\npm\node_modules\@ionic\cli)
Ionic Framework : @ionic/angular 6.1.7
@angular-devkit/build-angular : 13.2.6
@angular-devkit/schematics : 13.2.6
@angular/cli : 13.2.6
@ionic/angular-toolkit : 6.1.0
Capacitor:
Capacitor CLI : 3.5.1
@capacitor/android : 3.5.1
@capacitor/core : 3.5.1
@capacitor/ios : not installed
Utility:
cordova-res : 0.15.4
native-run : 1.6.0
System:
NodeJS : v16.14.0 (C:\Program Files\nodejs\node.exe)
npm : 8.3.1
OS : Windows 10