【Godot 4 】iOSにAdmob導入チュートリアル

2024/08/10
おはこんばんにちは!ギルガメです!

最近「ギルガメジャンパー」をリリースしました!その際にAdmob導入を始めて行ったのですが、Godot 4での情報があまりなく導入に時間がかかってしまいました。

この先も導入することがありそうですが、ゲーム開発してる間に忘れてしまうのでギルガメのメモ用として導入の方法をブログにします!これがあくまでギルガメのやり方なので合っているかは置いといて少しでも参考になればと思います!



ギルガメが参考にしたのは下記の動画です!ぜひ確認してください!

まずはギルガメが広告に使ったの下記の二つの種類です!
  • バナー広告
  • リワード広告

広告のコードが下記になります!

Apple の iOS ATT(App Tracking Transparency: アプリ トラッキングの透明性)アラート設定

func _ready():
var request := ConsentRequestParameters.new() request.tag_for_under_age_of_consent = false UserMessagingPlatform.consent_information.update(request, _on_consent_info_updated_success, _on_consent_info_updated_failure)

func _on_consent_info_updated_success():
if UserMessagingPlatform.consent_information.get_is_consent_form_available():
load_form()

func _on_consent_info_updated_failure(form_error : FormError):
pass

func load_form():
UserMessagingPlatform.load_consent_form(_on_consent_form_load_success, _on_consent_form_load_failure)

func _on_consent_form_load_success(consent_form : ConsentForm):
_consent_form = consent_form
if UserMessagingPlatform.consent_information.get_consent_status() == UserMessagingPlatform.consent_information.ConsentStatus.REQUIRED:
consent_form.show(_on_consent_form_dismissed)

func _on_consent_form_load_failure(form_error : FormError):
pass

func _on_consent_form_dismissed(form_error : FormError):
if UserMessagingPlatform.consent_information.get_consent_status() == UserMessagingPlatform.consent_information.ConsentStatus.OBTAINED:
pass
# Handle dismissal by reloading form
load_form()

バナー広告のコード

var _ad_view : AdView

func _ready(): MobileAds.initialize()

func _create_ad_view() -> void: if _ad_view: destroy_ad_view()

var unit_id : String
if OS.get_name() == "Android":
unit_id = "ca-app-pub-XXXXXXXXXXX/XXXXXXXXXXX"
elif OS.get_name() == "iOS":
unit_id = "ca-app-pub-XXXXXXXXXXX/XXXXXXXXXXX"
var ad_size = AdSize.new(350, 50) #広告の大きさ
_ad_view = AdView.new(unit_id, ad_size, AdPosition.Values.TOP) #広告のポジション
var ad_request = AdRequest.new()
_ad_view.load_ad(ad_request)
func destroy_ad_view() -> void: if _ad_view: _ad_view.destroy() _ad_view = null


リワード広告のコード

var _rewarded_ad : RewardedAd
var on_user_earned_reward_listener := OnUserEarnedRewardListener.new()

func _ready():
on_user_earned_reward_listener.on_user_earned_reward = func(rewarded_item : RewardedItem):
# ここに報酬のコードを書く

# _on_load_pressedを読んで広告を開始する
func _on_load_pressed():
if _rewarded_ad:
_rewarded_ad.destroy()
_rewarded_ad = null

var unit_id : String
if OS.get_name() == "Android":
unit_id = "ca-app-pub-XXXXXXXXXX/XXXXXXXXXX"
elif OS.get_name() == "iOS":
unit_id = "ca-app-pub-XXXXXXXXXX/XXXXXXXXXX"

var rewarded_ad_load_callback := RewardedAdLoadCallback.new()
rewarded_ad_load_callback.on_ad_failed_to_load = func(adError : LoadAdError) -> void:
print(adError.message)

rewarded_ad_load_callback.on_ad_loaded = func(rewarded_ad : RewardedAd) -> void:
print("rewarded ad loaded" + str(rewarded_ad._uid))
_rewarded_ad = rewarded_ad
_rewarded_ad.show(on_user_earned_reward_listener)

RewardedAdLoader.new().load(unit_id, AdRequest.new(), rewarded_ad_load_callback)

次に下記を手順を終わらせておきます。
  1. iOS Plugin フォルダーが res://ios/plugins/ に存在しない場合は作成します。
  1. res://ios/plugins/ ディレクトリに移動し、res://addons/admob/downloads/ios/ にあるダウンロードした .zip から広告フォルダーの内容を抽出します。メディエーションがある場合は、メタ、アドコロニーなどに対しても同じことを行います。


ここまで完了したら、あとはエクスポートだ!ここが一番ややこしかったです!
まずはエクスポート画面でIOSを作成します。下記の画像のように枠を設定します。隠しているところはご自身の内容で設定してください。


「Export Project..」ボタンを押して次の画面では「Export With Debug」をチェックした状態で「Save」ボタンを押してエクスポートを開始します。


あれ?次の画面のようにエラーが出ませんでしたか?

安心してください。大丈夫ですよ!
ギルガメはこのエラーのせいで時間がかかってしまいました.. 動画ではエラーになっても大丈夫ってありましたが、見落としていました😭
エラーは特に気にしないで、プロジェクト自体のエクスポートは完了しています。

エクスポートしたら、{{ ios_xcode_export_folder }}/{{your_project_name}}/ios/plugins/poing-godot-admob/scripts/ フォルダーに移動し、ターミナル (このフォルダー内にある必要があります) を開き、次のコマンドを実行します。
chmod +x update_and_install.sh
./update_and_install.sh

実行して下記のように問題なく完了したらOKです!


先ほど{{ ios_xcode_export_folder }}/{{your_project_name}}/iosに生成された.xcworkspaceを開きます。
アプリケーションのターゲットに移動し、General -> Frameworks, Libraries, and Embedded Contentに移動し、セクションにすべてのPodsを追加します。
追加する際にbundleのファイルまで追加するとビルドするときにエラーになります。bundle以外を追加して「Do Not Embed」に設定します。




ここまできたらAdmob導入は完了です!

始めてiOSでAdmob導入したのですが、失敗したリストを共有します。
  • Admobはapp-ads.txt ファイルが設定する必要があります。必ずApp Store Connectで配信バージョンでマーケティングURLを設定すること
  • Admobkanri管理画面でIDFA(広告識別子)の説明メッセージを設定すること
AppTrackingTransparency 権限をアプリに追加しておく(空だと表示されないので必ずテキストを入れること)


上記を忘れないようにしなきゃ.. 次に導入する時はちゃんとやるんだぞギルガメ!

以上ギルガメなりのAdmob導入方法でした!
引き続きギルガメをよろしくお願いします!
© Copyright 2024 YOSAPPS. Powered with by YOSAPPS