質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3209閲覧

[Unity]AdMobのアダプティブバナーのサイズを取得したい

hinatahinata

総合スコア29

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/15 02:23

GoogleAdMobの以下のページを参考にUnityでアダプティブバナーを画面最下部固定で表示させています。
https://developers.google.com/admob/unity/banner/adaptive?hl=ja

ゲーム内の要素が広告と重ならないようにするため
アダプティブバナーの高さを取得し、その高さ分の領域を余白スペースとして確保したいのですが
AdSize adaptiveSize = AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);
上記の処理の後に
adaptiveSize.Width
adaptiveSize.Height
を取得しても0となってしまい高さが取得できませんでした。

正しくアダプティブバナーの高さを取得するにはどうしたらよいでしょうか。

以下、GoogleAdMobの導入例をそのまま試したらダメでした。

private void RequestBanner() { // These ad units are configured to always serve test ads. #if UNITY_EDITOR string adUnitId = "unused"; #elif UNITY_ANDROID string adUnitId = "ca-app-pub-3212738706492790/6113697308"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3212738706492790/5381898163"; #else string adUnitId = "unexpected_platform"; #endif // Clean up banner ad before creating a new one. if (this.bannerView != null) { this.bannerView.Destroy(); } AdSize adaptiveSize = AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth); this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom); ⇒⇒⇒ ここで adaptiveSize.Width adaptiveSize.Heightを取得しても0になってしまう // Register for ad events. this.bannerView.OnAdLoaded += this.HandleAdLoaded; this.bannerView.OnAdFailedToLoad += this.HandleAdFailedToLoad; this.bannerView.OnAdOpening += this.HandleAdOpened; this.bannerView.OnAdClosed += this.HandleAdClosed; this.bannerView.OnAdLeavingApplication += this.HandleAdLeftApplication; AdRequest adRequest = new AdRequest.Builder() .AddTestDevice(AdRequest.TestDeviceSimulator) .AddTestDevice("0123456789ABCDEF0123456789ABCDEF") .Build(); // Load a banner ad. this.bannerView.LoadAd(adRequest); }

###現状の処理
現在アダプティブバナーの高さが取得ができないため、

アンカー型のバナーの高さは、デバイスの高さの 15% 以下、または密度非依存ピクセル 90 以下で、密度非依存ピクセル 50 以上である必要があります。

上記の「デバイスの高さ15%」or「密度非依存ピクセル90」の値が大きい方を計算しその分の余白を確保しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/06/15 04:10

その時点ではロードが完了していないからのような気がします。 HandleAdLoadedメソッド内で各数値を確認してみてください。
hinatahinata

2020/06/15 23:52

コメントありがとうございます。 なるほど、非同期で読み込んでいるため完了後じゃないとサイズが取れないかもですね。 確認次第追記させていただきます。 ありがとうございます。
guest

回答1

0

自己解決

HandleAdLoadedメソッドで広告読み込みの完了を待つことで解決いたしました。

投稿2020/07/02 00:53

hinatahinata

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問