facebook twitter hatena line email

「Unity/GoogleMobileAds/初期設定」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の23版が非表示)
行1: 行1:
 +
==GoogleMobileAds-3.18以後==
 +
3.18(2019/6/21)からはデフォでadmob/admanager判定コードが入ってた。
 +
 +
一度androidでbuildするとAssets/GoogleMobileAds/Resources/GoogleMobileAdsSettingsが作成され、それを選択するとフォーム上からAndroidとiOSのappIdを入力できる
 +
 +
MobileAds.Initializeの初期化は以下のようにする。
 +
<pre>
 +
using GoogleMobileAds.Api;
 +
public class GoogleMobileAdsDemoScript : MonoBehaviour
 +
{
 +
    public void Start()
 +
    {
 +
        MobileAds.Initialize(initStatus => { });
 +
    }
 +
}
 +
</pre>
 +
参照:https://developers.google.com/admob/unity/start?hl=ja
 +
 
==GoogleMobileAds-3.16以後==
 
==GoogleMobileAds-3.16以後==
 
GoogleMobileAds-3.16以後は以下設定が必要。
 
GoogleMobileAds-3.16以後は以下設定が必要。
行25: 行43:
  
 
MobileAds.Initialize(appId);は不要となる。
 
MobileAds.Initialize(appId);は不要となる。
 +
 
参考:https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml
 
参考:https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml
  
行55: 行74:
 
</pre>
 
</pre>
 
===iosの場合(Google AdManager)===
 
===iosの場合(Google AdManager)===
`Assets/GoogleMobileAds/Editor/PListProcessor.cs` のGADApplicationIdentifier行を削除して、GADIsAdManagerApp行を追加。
+
Assets/GoogleMobileAds/Editor/PListProcessor.cs のGADApplicationIdentifier行を削除して、GADIsAdManagerApp行を追加。
 
<pre>
 
<pre>
 
public static void OnPostProcessBuild(BuildTarget buildTarget, string path)
 
public static void OnPostProcessBuild(BuildTarget buildTarget, string path)
行63: 行82:
 
     PlistDocument plist = new PlistDocument();
 
     PlistDocument plist = new PlistDocument();
 
     plist.ReadFromFile(plistPath);
 
     plist.ReadFromFile(plistPath);
    plist.root.SetString("GADApplicationIdentifier", appId);
+
//    plist.root.SetString("GADApplicationIdentifier", appId);
 
     plist.root.SetBoolean("GADIsAdManagerApp", true);
 
     plist.root.SetBoolean("GADIsAdManagerApp", true);
 
     File.WriteAllText(plistPath, plist.WriteToString());
 
     File.WriteAllText(plistPath, plist.WriteToString());
 
}
 
}
 
</pre>
 
</pre>
 +
 +
=="AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener"エラー==
 +
unity/Build Settings/Player Setting/Publishing Settings/user proguard fileをon
 +
 +
Assets/Plugins/Android/proguard-user.txt に以下を記述
 +
<pre>
 +
-keep class com.google.unity.** {
 +
  *;
 +
}
 +
-keep public class com.google.android.gms.ads.**{
 +
  public *;
 +
}
 +
-keep public class com.google.ads.**{
 +
  public *;
 +
}
 +
-keepattributes *Annotation*
 +
-dontobfuscate
 +
</pre>
 +
 +
参考:https://stackoverflow.com/questions/53977246/unity-admob-classnotfound-com-google-unity-ads-unityadlistener
 +
 +
==広告が出ない==
 +
* Assets/Plugins/AndroidGoogleMobileAdsPlugin/AndroidManifest.xml があれば、そのApplicationIdが正しく入力されてるか確認。
 +
 +
* Assets/Plugins/Android/AndroidManifest.xml があれば、そのApplicationIdが正しく入力されてるか確認。
 +
 +
* Asset/GoogleMobileAds/Editor/PListProcessor.cs があれば、appIdが正しく入力されてるか確認。
 +
 +
* AdManagerでなく、AdmobなのにAsset/GoogleMobileAds/Editor/PListProcessor.cs に plist.root.SetBoolean("GADIsAdManagerApp", true);があればその行は削除する。
 +
 +
* TestDeviceIdを入れる
 +
 +
==TestDevice例==
 +
AdRequest request =  new AdRequest.Builder()
 +
                              .AddTestDevice("YOUR_TEST_DEVICE_ID") // YOUR_TEST_DEVICE_IDはlogに出てるので各自それを入れる。
 +
                              .Build();
 +
 +
==以下のようなエラーが出る場合==
 +
HandleRewardBasedVideoFailedToLoad event received with message:
 +
Failed to receive ad with error: (null)
 +
支払い情報に不備がある可能性があり。ios側の場合はios側のbuildにゴミが混じってる可能性があるので、xcodeを一旦閉じる。unityで出力されたxcodeプロジェクトを一旦削除して作り直せば良い。再インストールに失敗してる可能性もあるので、前回のアプリを削除しておく。
 +
 +
https://support.google.com/admob/thread/1755290?hl=en
 +
 +
==AndroidのBuild設定==
 +
*CustomMainGradleTemplateにチェック
 +
*CustomGradlePropertiesTemplateにチェック
 +
 +
参考:https://developers.google.com/admob/unity/quick-start?hl=ja
 +
 +
==GoogleMobileAdsSettingsファイルの作成==
 +
Assets/GoogleMobileAds/GoogleMobileAdsSettings.assetsがないときは、
 +
Unityメインメニュー/Assets/GoogleMobileAds/Settingsを選択すると、ファイルが作成される

2024年8月25日 (日) 03:02時点における最新版

GoogleMobileAds-3.18以後

3.18(2019/6/21)からはデフォでadmob/admanager判定コードが入ってた。

一度androidでbuildするとAssets/GoogleMobileAds/Resources/GoogleMobileAdsSettingsが作成され、それを選択するとフォーム上からAndroidとiOSのappIdを入力できる

MobileAds.Initializeの初期化は以下のようにする。

using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        MobileAds.Initialize(initStatus => { });
    }
}

参照:https://developers.google.com/admob/unity/start?hl=ja

GoogleMobileAds-3.16以後

GoogleMobileAds-3.16以後は以下設定が必要。

androidの場合(admob)

GoogleMobileAds-v3.16からこのファイルにAPPLICATION_IDが存在する。

Assets/Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xmlの[ADMOB APPLICATION ID]にadmobのAppIDを入れれば良い

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.unity.ads"
    android:versionName="1.0"
    android:versionCode="1">
  <uses-sdk android:minSdkVersion="14"
      android:targetSdkVersion="19" />
  <application>
    <uses-library android:required="false" android:name="org.apache.http.legacy"/>
    <meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="[ADMOB APPLICATION ID]"/>
  </application>
</manifest>


MobileAds.Initialize(appId);は不要となる。

参考:https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml

java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException: Invalid application IDが発生するときは [ADMOB APPLICATION ID]がそのままな可能性がある。

iosの場合(admob)

GoogleMobileAds-v3.16からこのファイルは存在する。

Assets/GoogleMobileAds/Editor/PListProcessor.cs

string appId = "ADMOB_APPLICATION_ID";

ADMOB APPLICATION IDにadmobのAppIDを入れれば良い

iosのprojectをビルドし、Info.plistのADMOB_APPLICATION_IDに値が入っていることを確認する。

これを設定しないと以下が発生する

Thread 1: signal SIGABRT
libc++abi.dylib: terminating with uncaught exception of type NSException

androidの場合(Google AdManager)

Assets/Plugins/Android/GoogleMobileAdsPlugin/AndroidManifest.xml

<manifest>
  <application>
    <meta-data
         android:name="com.google.android.gms.ads.AD_MANAGER_APP"
         android:value="true"/>
 </application>
</manifest>

iosの場合(Google AdManager)

Assets/GoogleMobileAds/Editor/PListProcessor.cs のGADApplicationIdentifier行を削除して、GADIsAdManagerApp行を追加。

public static void OnPostProcessBuild(BuildTarget buildTarget, string path)
{
    string appId = "ADMOB_APPLICATION_ID";
    string plistPath = Path.Combine(path, "Info.plist");
    PlistDocument plist = new PlistDocument();
    plist.ReadFromFile(plistPath);
//    plist.root.SetString("GADApplicationIdentifier", appId);
    plist.root.SetBoolean("GADIsAdManagerApp", true);
    File.WriteAllText(plistPath, plist.WriteToString());
}

"AndroidJavaException: java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener"エラー

unity/Build Settings/Player Setting/Publishing Settings/user proguard fileをon

Assets/Plugins/Android/proguard-user.txt に以下を記述

-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}
-keepattributes *Annotation*
-dontobfuscate

参考:https://stackoverflow.com/questions/53977246/unity-admob-classnotfound-com-google-unity-ads-unityadlistener

広告が出ない

  • Assets/Plugins/AndroidGoogleMobileAdsPlugin/AndroidManifest.xml があれば、そのApplicationIdが正しく入力されてるか確認。
  • Assets/Plugins/Android/AndroidManifest.xml があれば、そのApplicationIdが正しく入力されてるか確認。
  • Asset/GoogleMobileAds/Editor/PListProcessor.cs があれば、appIdが正しく入力されてるか確認。
  • AdManagerでなく、AdmobなのにAsset/GoogleMobileAds/Editor/PListProcessor.cs に plist.root.SetBoolean("GADIsAdManagerApp", true);があればその行は削除する。
  • TestDeviceIdを入れる

TestDevice例

AdRequest request =  new AdRequest.Builder()
                              .AddTestDevice("YOUR_TEST_DEVICE_ID") // YOUR_TEST_DEVICE_IDはlogに出てるので各自それを入れる。
                              .Build();

以下のようなエラーが出る場合

HandleRewardBasedVideoFailedToLoad event received with message:
Failed to receive ad with error: (null)

支払い情報に不備がある可能性があり。ios側の場合はios側のbuildにゴミが混じってる可能性があるので、xcodeを一旦閉じる。unityで出力されたxcodeプロジェクトを一旦削除して作り直せば良い。再インストールに失敗してる可能性もあるので、前回のアプリを削除しておく。

https://support.google.com/admob/thread/1755290?hl=en

AndroidのBuild設定

  • CustomMainGradleTemplateにチェック
  • CustomGradlePropertiesTemplateにチェック

参考:https://developers.google.com/admob/unity/quick-start?hl=ja

GoogleMobileAdsSettingsファイルの作成

Assets/GoogleMobileAds/GoogleMobileAdsSettings.assetsがないときは、 Unityメインメニュー/Assets/GoogleMobileAds/Settingsを選択すると、ファイルが作成される