tag:crieit.net,2005:https://crieit.net/tags/adMob/feed 「adMob」の記事 - Crieit Crieitでタグ「adMob」に投稿された最近の記事 2021-03-29T22:12:40+09:00 https://crieit.net/tags/adMob/feed tag:crieit.net,2005:PublicArticle/16716 2021-03-04T10:28:37+09:00 2021-03-29T22:12:40+09:00 https://crieit.net/posts/Flutter-AdMob-SDK Flutterの新しいAdMob SDKを試してみた <p>Google公式で、ネイティブのラッパーではないちゃんとしたFlutterのAdMob SDKがついにベータになったようですので動かしてみました(Android)。AdMob周りはほんとに使いづらくで困っていたので個人的にはかなり朗報です。</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ほらみんな、Flutterの新しいAdMob SDKでバナーがウィジェット化したやつ動かせたぞーーーーー!!!!!!! <a target="_blank" rel="nofollow noopener" href="https://t.co/AH0vhAEd9D">pic.twitter.com/AH0vhAEd9D</a></p>— だら🎄2/22~28開催Webサービス1週間開発イベ (@dala00) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/dala00/status/1367276138226094084?ref_src=twsrc%5Etfw">March 4, 2021</a></blockquote> <p>上記の動画のように、ラッパーライブラリでなくなったことにより(かな?)、ちゃんとスクロールに追従したり、ウィジェットの重なりにも対応するようになりました。</p> <p>Flutter Engageで発表された感じでしょうか? 一緒に公開されたアナウンスに詳細は書かれています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://medium.com/flutter/whats-new-in-flutter-2-0-fe8e95ecc65">What’s New in Flutter 2. by Chris Sells | Mar, 2021 | Medium | Flutter | Flutter</a></p> <h2 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h2> <p>Google Mobile Ads SDK for Flutter自体はこちらです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://pub.dev/packages/google_mobile_ads">https://pub.dev/packages/google_mobile_ads</a></p> <p>以下試したログですが適当に試したので適当です。</p> <h3 id="インストール"><a href="#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">インストール</a></h3> <pre><code class="yaml">dependencies: google_mobile_ads: ^0.11.0+1 </code></pre> <p>AndroidManifestに広告のアプリIDを入れます。</p> <pre><code class="xml"> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-**" /> </application> </manifest> </code></pre> <p>あとGradleのバージョンが3.5.0とかの低いやつだとビルド時に <code>AAPT: error: unexpected element <queries> found in <manifest></code> のようなエラーになるようですのでいい感じのバージョンに上げましょう。僕は3.5.4で試しました。</p> <pre><code class="txt"> dependencies { classpath 'com.android.tools.build:gradle:3.5.4' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } </code></pre> <p>参考<br /> <a target="_blank" rel="nofollow noopener" href="https://stackoverflow.com/questions/62969917/how-to-fix-unexpected-element-queries-found-in-manifest-error">https://stackoverflow.com/questions/62969917/how-to-fix-unexpected-element-queries-found-in-manifest-error</a></p> <h3 id="読み込み"><a href="#%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF">読み込み</a></h3> <p>まずは初期化します。loadを呼ばなきゃいけないのでどこかで初期化します。</p> <pre><code class="dart">class _MyHomePageState extends State<MyHomePage> { BannerAd myBanner; bool isLoaded = false; @override void initState() { super.initState(); initAd(); } void initAd() { myBanner = BannerAd( adUnitId: 'ca-app-pub-****', // size: AdSize.getSmartBanner(Orientation.landscape), size: AdSize.banner, request: AdRequest(), listener: AdListener( onAdLoaded: (Ad ad) { setState(() { isLoaded = true; }); }, ), )..load(); } </code></pre> <p>スマートバナーも試そうとしましたが、取得できる広告サイズが <code>-1</code> になって表示時にエラーになったのでとりあえず普通のバナーで試しました。</p> <h3 id="表示する"><a href="#%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B">表示する</a></h3> <p>下記のような感じでリストの一部に入るようにしてみました。</p> <pre><code class="dart"> List<Widget> _buildChildren() { final children = <Widget>[]; for (int i = 0; i < 50; i++) { if (i == 15) { children.add(isLoaded ? Container( alignment: Alignment.center, child: AdWidget(ad: myBanner), width: myBanner.size.width.toDouble(), height: myBanner.size.height.toDouble(), ) : Container()); } else { children.add(ListTile( title: Text( 'test$i', style: TextStyle(color: Colors.black, fontSize: 18.0), ), )); } } return children; } </code></pre> <h2 id="注意点"><a href="#%E6%B3%A8%E6%84%8F%E7%82%B9">注意点</a></h2> <p>ページをpushする場合、同じ広告オブジェクトを使用するとエラーになります。表示するところ毎にバナーをロードした方が良いっぽいです。(ロードして表示するウィジェットを作ってそれを配置するようにしておくと良いでしょう)</p> <p>あと、僕は動画生成するアプリを作っているのですが、pushしているすべてのページに広告を付けていると何故か動画が真っ白になってしまいました。試しに、pushする際に隠れるページの広告を非表示にしていくとちゃんと生成されるようになりました。謎ですがとりあえず回避方法です。</p> <p>あとは広告を読み込むとコンテンツの位置がずれるので、もしかするとAdMob側から注意が来る可能性もあるかもしれません。サイズ指定の公告の場合は高さを固定するコンテナに入れておいた方が良いのかもしれません。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>とにかくFlutter直でAdMob対応してくれてるのは嬉しいですね。みなさんもどんどん使ってプルリクエストを送って安心して使えるようにしていってください!(人任せ)</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/16059 2020-09-16T22:35:17+09:00 2020-09-16T22:35:17+09:00 https://crieit.net/posts/Godot-iOS-Google-Mobile-Ads-SDK7-65-0 GodotでiOSにてGoogle Mobile Ads SDK7.65.0以上を使う場合 <p>GodotのiOSでAdMobを使う場合に最新のGoogle Mobile Ads SDK7.65.0を使うと下記のようなエラーが出る。</p> <pre><code>ld: warning: Could not find or use auto-linked framework 'FBLPromises' 中略 "_OBJC_CLASS_$_JSContext", referenced from: </code></pre> <p>どうも依存関係がちゃんと解決されていないような感じ。</p> <p>調べてみると下記の解決方法にたどり着いた。</p> <p><a target="_blank" rel="nofollow noopener" href="https://community.clickteam.com/threads/107875-Could-not-find-or-use-auto-linked-framework-FBLPromises">Could not find or use auto-linked framework 'FBLPromises'</a></p> <p>JavaScriptCore.frameworkというフレームワークを追加すればいいらしい。ちなみに使用しているプラグインは下記だが、まだ現時点ではこれが説明に入っていない。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/kloder-games/godot-admob">https://github.com/kloder-games/godot-admob</a></p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15886 2020-05-06T00:18:18+09:00 2020-06-19T22:11:13+09:00 https://crieit.net/posts/Godot-AdMob-iOS GodotでAdMobを使う - iOSの場合 <p>GodotでiOSアプリにAdMobを表示する方法。Androidの場合は下記。</p> <p><a href="https://crieit.net/posts/Godot-AdMob-Android">GodotでAdMobを使う - Androidの場合</a></p> <p>実際にやったのはGodot3.2。Androidの場合とは違い、iOSの場合は自分でGodotのテンプレートをビルドしなければならないのでちょっと面倒くさい。</p> <h2 id="AdMobモジュールの取得"><a href="#AdMob%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E5%8F%96%E5%BE%97">AdMobモジュールの取得</a></h2> <p>AdMobモジュールは下記。まずは下記のリポジトリをcloneしておく。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/kloder-games/godot-admob">https://github.com/kloder-games/godot-admob</a></p> <p>基本的にやり方はこのREADMEに書かれている。そちらの How to use の iOS というところ。この話の前提として、Godotのリポジトリと組み合わせてビルドが必要なため、こちらもcloneしておく必要がある。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/godotengine/godot">https://github.com/godotengine/godot</a></p> <h3 id="AdMobモジュールをGodot側にコピーする"><a href="#AdMob%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92Godot%E5%81%B4%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B">AdMobモジュールをGodot側にコピーする</a></h3> <p>まずはgodot-admobリポジトリのadmobフォルダを、godotリポジトリのmodulesフォルダにコピーする。</p> <h3 id="Google Mobile Ads SDKを配置する(新)"><a href="#Google+Mobile+Ads+SDK%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%EF%BC%88%E6%96%B0%EF%BC%89">Google Mobile Ads SDKを配置する(新)</a></h3> <p>2020/6にUIWebViewを含めたビルドではアップロードできなくなったため最新のSDKを利用できるようになった。README通りにやればよい(僕が書いてPR送った)。下記のファイルを <code>admob/ios/lib</code> に配置する。 <code>put_GoogleMobileAds_framework_here</code> のようなファイルがあるのでわかりやすい。</p> <ul> <li>GoogleMobileAds.framework</li> <li>GoogleAppMeasurement.framework</li> <li>GoogleUtilities.xcframework</li> <li>PromisesObjC.xcframework</li> <li>nanopb.xcframework</li> </ul> <h3 id="Google Mobile Ads SDKを配置する(旧)"><a href="#Google+Mobile+Ads+SDK%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B%EF%BC%88%E6%97%A7%EF%BC%89">Google Mobile Ads SDKを配置する(旧)</a></h3> <p>追記)UIWebView排除のため、既に最新のSDKを使えるようになっているため最新バージョンではこれは不要。(追記終わり)</p> <p>次に公式のGoogle Mobile Ads SDKを配置する。現時点でのバージョン指定は7.41.0以下。ちなみにこのバージョンはもう公式ではダウンロードできないので、CocoaPodsを利用して取得した。</p> <pre><code class="ruby">platform :ios, '9.0' pod 'Google-Mobile-Ads-SDK', '7.41.0' </code></pre> <p>上記のPodfileを作って <code>pod install</code>。</p> <p><code>admob/ios/lib</code> に配置しろと書かれているが、これは先程godot側にコピーした方のフォルダ。godot側でビルドして使うため。<code>put_GoogleMobileAds_framework_here</code> と書かれたフォルダがあるので、そこにGoogleMobileAds.frameworkフォルダをコピーしてくる。</p> <h3 id="Godotをビルドする"><a href="#Godot%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B">Godotをビルドする</a></h3> <p>これで準備ができたので、godotプロジェクト側をビルドする。詳しくはREADMEに貼られている下記リンクの通り。</p> <p><a target="_blank" rel="nofollow noopener" href="http://docs.godotengine.org/en/stable/development/compiling/compiling_for_ios.html">http://docs.godotengine.org/en/stable/development/compiling/compiling_for_ios.html</a></p> <h4 id="sconsをインストールしてビルド"><a href="#scons%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6%E3%83%93%E3%83%AB%E3%83%89">sconsをインストールしてビルド</a></h4> <p>ビルドにはSConsというビルドツールを利用する。これはbrewでインストールできる。</p> <pre><code>brew install scons </code></pre> <p>ビルド方法は書かれている通り、下記の必要な方。</p> <p>開発用</p> <pre><code>scons p=iphone target=debug </code></pre> <p>リリース用</p> <pre><code>scons p=iphone target=release </code></pre> <p>他にも、エミュレータ用や別のアーキテクチャの組み合わせなど、色々指定もできるためそれは必要であれば前述のリンクの解説を参考に。僕は上記の2つだけでやった。</p> <p>これでbinフォルダにaファイルが出来上がるので、これをXcodeプロジェクト側のトップにあるaファイルと差し替えれば完成。</p> <h5 id="エラーが出たパターン1"><a href="#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%9F%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%EF%BC%91">エラーが出たパターン1</a></h5> <p>ちなみに下記のようなエラーが出る場合があった。</p> <pre><code>scons: Reading SConscript files ... xcrun: error: SDK "iphoneos" cannot be located xcrun: error: SDK "iphoneos" cannot be located xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos' Failed to find SDK path while running xcrun --sdk iphoneos --show-sdk-path. </code></pre> <p>よくは分からないけど下記で改善できた。GitHubの方はいいねがいっぱいついてるコメントあたり。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/shouta-dev/items/a8e4914ec4d88cffac10">https://qiita.com/shouta-dev/items/a8e4914ec4d88cffac10</a><br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/facebook/react-native/issues/18408">https://github.com/facebook/react-native/issues/18408</a></p> <h5 id="エラーが出たパターン2"><a href="#%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%81%9F%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%EF%BC%92">エラーが出たパターン2</a></h5> <p>下記のようなエラーが出た。</p> <pre><code>scons: Reading SConscript files ... Checking for C header file mntent.h... (cached) no scons: done reading SConscript files. scons: Building targets ... [Initial build] Compiling ==> platform/iphone/godot_iphone.cpp In file included from platform/iphone/godot_iphone.cpp:33: platform/iphone/os_iphone.h:84:2: error: unknown type name 'VideoMode' [2] VideoMode video_mode; ^ platform/iphone/os_iphone.h:92:33: error: unknown type name 'VideoMode' [2] virtual Error initialize(const VideoMode &p_desired, int p_video_driver, int p_audio_driver); ^ platform/iphone/os_iphone.h:122:2: error: unknown type name 'InputDefault' [2] InputDefault *input; ^ platform/iphone/os_iphone.h:149:48: error: use of undeclared identifier 'InputDefault' [2] void joy_axis(int p_device, int p_axis, const InputDefault::JoyAxis &p_value); ^ platform/iphone/os_iphone.h:166:36: error: unknown type name 'VideoMode' [2] virtual void set_video_mode(const VideoMode &p_video_mode, int p_screen = 0); ^ platform/iphone/os_iphone.h:167:10: error: unknown type name 'VideoMode' [2] virtual VideoMode get_video_mode(int p_screen = 0) const; ^ platform/iphone/os_iphone.h:168:45: error: use of undeclared identifier 'VideoMode' [2] virtual void get_fullscreen_mode_list(List<VideoMode> *p_list, int p_screen = 0) const; ^ 7 errors generated. scons: *** [platform/iphone/godot_iphone.iphone.opt.arm64.o] Error 1 scons: building terminated because of errors. </code></pre> <p>Godot3.2にし、godotもgodot-admobも最新にしたらビルドできるようになった。</p> <p>他にも、iOSの場合はgodot-admobの不具合が原因でだめな場合があった。2020/4月末あたりに解決のPRがマージされたので、それ以降はうまく行った。とにかくうまく行かない場合はissueを見て、改善していれば最新に、不具合発生の真っ最中であればちょっとコミットを戻してみたりして調整したりしなければならない。かなり面倒くさい。僕も何ヶ月も放置していてようやく対処できた。</p> <h2 id="Xcodeの設定"><a href="#Xcode%E3%81%AE%E8%A8%AD%E5%AE%9A">Xcodeの設定</a></h2> <p>さきほどの5つのフレームワークをXcodeプロジェクト側にも追加する必要がある。Xcodeを開いたプロジェクトの中に参照で登録する。frameworkの読み込みパス設定に配置したフォルダの設定を追加する必要がある。xcframeworkの場合は直接Xcodeに登録するのではなく、中のios-armv7_arm64以下等にframeworkフォルダがあるのでそちらを利用する。パスの設定もそこ。</p> <h2 id="Godot側のコード"><a href="#Godot%E5%81%B4%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89">Godot側のコード</a></h2> <p>一応実際のコード。initのところでisRealを指定してあるので、デバッグのテスト広告コードを指定している部分は不要かもしれない。</p> <pre><code class="python">if Engine.has_singleton("AdMob"): admob = Engine.get_singleton("AdMob") if OS.get_name() == 'iOS': # 一般向け(if文とは関係ない) admob.init(!OS.is_debug_build(), get_instance_id()) else: # 子ども向けの例(if文とは関係ない) admob.initWithContentRating(!OS.is_debug_build(), get_instance_id(), true, 'G') if OS.is_debug_build(): admob.loadBanner('ca-app-pub-3940256099942544/6300978111', false) else: if OS.get_name() == 'iOS': admob.loadBanner('iOS用の本番コード', false) else: admob.loadBanner('Android用の本番コード', false) </code></pre> <h2 id="armv7のリンクエラー"><a href="#armv7%E3%81%AE%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%A8%E3%83%A9%E3%83%BC">armv7のリンクエラー</a></h2> <p>ずっとarmv7のリンクエラーが出ていて断念していた時期があるのだが、Godotエディタ側の設定にアーキテクチャの選択があるので、Xcodeプロジェクトをエクスポートする前にそれでarmv7を外しておいたほうが良いかもしれない。このあたりハマると非常に面倒。(これはAdMobすら関係なかったかもしれないが一応メモ)</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15534 2019-11-08T21:29:19+09:00 2020-06-25T22:45:24+09:00 https://crieit.net/posts/Godot-AdMob-Android GodotでAdMobを使う - Androidの場合 <p>追記)Godot3.2以降は簡単になったので下記参照。</p> <p><a href="https://crieit.net/posts/Godot3-2-AdMob">Godot3.2以降でAdMobを使う</a></p> <p>追記終わり。</p> <p>GodotでもAdMobを使うことが出来る。コード自体はGodot上にてGDScriptで書けばいいだけなので簡単だけど、ちょっと仕組み的には複雑かもしれない。ただ、やってみると、あーなるほど、そういう仕組で動いてるのか、と分かる。ちなみにGodot3.1.1現在。</p> <p>iOSの場合はこちら。Godotのビルドの解説をしていたり、Godot3.2を使っていたり、Android、iOS両方に対応したGodotのコードの例もある。(ビルドはもしかしたらAndroid側は関係なくなっているのかもしれないが)</p> <p><a href="https://crieit.net/posts/Godot-AdMob-Android">GodotでAdMobを使う - iOSの場合</a></p> <h2 id="モジュールを追加"><a href="#%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0">モジュールを追加</a></h2> <p>具体的には下記のリポジトリにあるモジュールを利用する。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/kloder-games/godot-admob">kloder-games/godot-admob: Module Admob for Godot engine</a></p> <p>詳しい説明もここに書かれている。2つやり方があって、「Using precompiled templates (Second Option)」と書かれている方が簡単。そこの説明のhereと書かれているリンクをクリックすると下記に遷移する。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/Shin-NiL/godot-custom-mobile-template">Shin-NiL/godot-custom-mobile-template: Godot Game Engine Custom Mobile Template</a></p> <p>ここのReleaseに色々あるので、自分が使っているGodotのバージョンと同じ番号のものをダウンロードする。それを解凍したら、GodotのエクスポートメニューのAndroidの設定のところに、「Custom Package」という設定があるのでそこにDebugとRelease用のパッケージを指定する。</p> <p>あとは説明にあるように下記のパーミッションを有効にしておく。</p> <ul> <li>Access Network State</li> <li>Internet</li> </ul> <h3 id="一体何をやっているのか"><a href="#%E4%B8%80%E4%BD%93%E4%BD%95%E3%82%92%E3%82%84%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B">一体何をやっているのか</a></h3> <p>これは一体何をやっているのかというと、簡単に言えばAndroid Studioで作られたプロジェクトの部分がこのCustom Packageとして提供されている感じなのではないかと思う。なのでAdMobのようにネイティブ側で対応が必要な機能を提供する際にはそういったモジュールを追加してビルドされたCustom Packageを利用することで、Godot側でも利用できるようになる、という感じだと思われる。</p> <p>実際問題Second Optionではない正規の方法では、モジュールを追加して自分でビルドしてくれ、という形になっている。今回はAdMobを使いたいだけなのでビルド済みのもので問題ないが、色々とモジュールを必要に応じて追加したプロジェクトを使う場合には自分でビルドしないといけないと思う。</p> <p>が、Godot3.2からはもっと簡単にできるようになるよ、ということも最初のリポジトリの説明に書かれている。なのでまあとりあえず今はビルド済みのを使っておいたほうが楽かもしれない。</p> <h2 id="Godot側にモジュール追加設定"><a href="#Godot%E5%81%B4%E3%81%AB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E8%BF%BD%E5%8A%A0%E8%A8%AD%E5%AE%9A">Godot側にモジュール追加設定</a></h2> <p>Custom Packageの準備ができたら、今度はGodotのプロジェクト側にモジュールの追加設定を行う。Godotのプロジェクトファイルがテキストファイルになっており、それを直接いじるので恐らくGodotを起動していると勝手に書き換えられて無効になってしまう。そのため一旦Godotを終了してから、下記のテキストをproject.godotに追加する。</p> <pre><code class="ini">[android] modules="org/godotengine/godot/GodotAdMob" </code></pre> <h2 id="AdMobを表示するコードを追加"><a href="#AdMob%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0">AdMobを表示するコードを追加</a></h2> <p>そしたらあとはAdMobを表示するコードをシーンに追加するだけ。僕の場合は下記のようにした。デバッグ時にはテスト広告を表示し、且つAdMobモジュールが正常にロードできているかをLabelに表示して確認している。ちなみに実機でしか動作しない。</p> <pre><code class="python">var admob = null func _ready(): if Engine.has_singleton("AdMob"): admob = Engine.get_singleton("AdMob") # 一般向けの場合 # init(isReal, instance_id) # 子ども向けの場合 admob.initWithContentRating(!OS.is_debug_build(), get_instance_id(), true, 'G') if OS.is_debug_build(): admob.loadBanner('ca-app-pub-3940256099942544/6300978111', false) $UILayer/DebugLabel.set_text('ad initialized') else: admob.loadBanner('本番の広告ユニットID', false) else: if OS.is_debug_build(): $UILayer/DebugLabel.set_text('ad not initialized') </code></pre> <p>ということでちょっと面倒くさい…けどビルド済みCustom Packageだとだいぶ楽。</p> だら@Crieit開発者