【问题标题】:Trying to use google play services ad feature in unity3D i don't have any errors but i can't see my ads尝试在 unity3D 中使用谷歌播放服务广告功能我没有任何错误但我看不到我的广告
【发布时间】:2014-05-01 11:34:54
【问题描述】:

我正在尝试将 google-play-services 的“com.google.androind.gms.ads”添加到我的统一项目中以加载广告我觉得我已经走了很远,因为我在调用java类。但是我现在有点卡住了,因为我没有错误也没有广告。

这是我的统一 c# 类中的代码。

    Debug.Log("Instantiate STARTED");
    unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    currActivityUnity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
    admobPluginClassAdSize = new AndroidJavaClass("com.google.android.gms.ads.AdSize");
    AndroidJavaObject adSize = admobPluginClassAdSize.GetStatic<AndroidJavaObject>("FULL_BANNER");
    admobPluginClassAdView = new AndroidJavaObject("com.google.android.gms.ads.AdView",
    currActivityUnity);
    admobPluginClassAdListener = new AndroidJavaClass("com.google.android.gms.ads.AdListener");
    admobPluginClassAdRequestBuilder = new AndroidJavaObject("com.google.android.gms.ads.AdRequest$Builder");
    admobPluginClassAdView.Call("setAdSize", adSize);
    admobPluginClassAdView.Call("setAdUnitId", pubID);
    admobPluginClassAdRequestBuilder = admobPluginClassAdRequestBuilder.Call<AndroidJavaObject>("addTestDevice", testDeviceId);
    admobPluginClassAdRequest = admobPluginClassAdRequestBuilder.Call<AndroidJavaObject>("build");
    currActivityUnity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
        {
            admobPluginClassAdView.Call("loadAd", admobPluginClassAdRequest);
        }));
    Debug.Log("Instantiate FINISHED");

我的 com.google.androind.gms AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms"
    android:versionCode="4323030"
    android:versionName="4.3.23 (1069729-030)" >

    <uses-sdk android:minSdkVersion="9"/>
  <application android:icon="@drawable/icon" android:label="@string/app_name"
               android:debuggable="true">
    <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/>
    <activity android:label="@string/app_name" android:name="BannerExample">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
    <activity android:name="com.google.android.gms.ads.AdActivity"
             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
  </application>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

我的 com.unity3d.player AndroidManifest.XML

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    android:installLocation="preferExternal"
    android:versionCode="1"
    android:versionName="1.0">
    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"/>

    <application
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:debuggable="true">
        <activity android:name="com.unity3d.player.UnityPlayerProxyActivity"
                  android:label="@string/app_name"
                  android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
                  <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:label="@string/app_name"
                  android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
        </activity>
        <activity android:name="com.unity3d.player.UnityPlayerNativeActivity"
                  android:label="@string/app_name"
                  android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
            <meta-data android:name="android.app.lib_name" android:value="unity" />
            <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
        </activity>
        <activity android:name="com.unity3d.player.VideoPlayer"
                  android:label="@string/app_name"
                  android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
</manifest>

【问题讨论】:

    标签: android unity3d admob google-play-services


    【解决方案1】:

    看来你做的比你需要的要多。您查看过 Google 最新的 Admob Unity3D 版本吗?

    https://github.com/googleads/googleads-mobile-plugins

    使用他们存储库中的自述文件,您应该能够加载/显示广告而无需接触任何 Java 类。他们提供的示例包含您需要的所有代码。

    干杯,

    【讨论】:

      【解决方案2】:

      这是我的 Unity 端代码

      public static void Init()
      {
          AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
          AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
          AndroidJavaClass pluginClass = new AndroidJavaClass("com.google.android.gms.samples.ads.GoogleAdsSampleActivity");
          pluginClass.CallStatic("Init",
                                 new object[1] {activity});
      }
      
      // Show the banner view on the screen.
      public static void ShowBannerAds() {
          Debug.Log ("AdmobPlugin ShowBannerAds ");
          AndroidJavaClass pluginClass = new AndroidJavaClass("com.google.android.gms.samples.ads.GoogleAdsSampleActivity");
          pluginClass.CallStatic("ShowBannerAds");
      }
      
      // Hide the banner view from the screen.
      public static void HideBannerView()
      {
          AndroidJavaClass pluginClass = new AndroidJavaClass("com.google.android.gms.samples.ads.GoogleAdsSampleActivity");
          pluginClass.CallStatic("hideBannerView");
      }
      

      还有你创建一个 jar 并将其保存在 Plugins/Android 文件夹中的 Java 插件

       public class GoogleAdsSampleActivity {
      private static GoogleAdsSampleActivity instance;
      private Activity activity;
      private AdView adView;
      public static GoogleAdsSampleActivity instance()
      {
          if (instance == null) {
            instance = new GoogleAdsSampleActivity();
          }
          return instance;
      }
      
      
      public static void Init(final Activity activity)
      {
          final GoogleAdsSampleActivity plugin = instance();
          plugin.activity = activity;
          plugin.activity.runOnUiThread(new Runnable()
          {
              public void run() {
                //Intent main= new Intent(plugin.activity, BannerCodeActivity.class);
      
                Log.d("GoogleAdsSampleActivity stat11 = ", status);
      
                plugin.adView = new AdView(plugin.activity);
                plugin.adView.setAdUnitId("XYZ");  // Your Admob key
                plugin.adView.setAdSize(AdSize.BANNER);
      
                LinearLayout layout = new LinearLayout(plugin.activity);
                FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
                  -1, -2);
                layoutParams.gravity = (false ? 48 : 80);
                plugin.activity.addContentView(layout, layoutParams);
                LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(
                  -1, -1);
                layout.addView(plugin.adView, adParams);
                plugin.adView.loadAd(new AdRequest.Builder().build());
              }
          });
      }
      public static void ShowBannerAds () {
          final GoogleAdsSampleActivity plugin = instance();
          plugin.activity.runOnUiThread(new Runnable()
          {
              public void run() {
                plugin.adView.setVisibility(0);
      
              }
          });
      
      }
      public static void hideBannerView () {
          final GoogleAdsSampleActivity plugin = instance();
          plugin.activity.runOnUiThread(new Runnable()
          {
              public void run() {
                  plugin.adView.setVisibility(8);
      
              }
          });
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-06
        • 1970-01-01
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-16
        相关资源
        最近更新 更多