Рекламные объявления AdMob не отображаются ни в редакторе, ни на физическом устройстве. - PullRequest
0 голосов
/ 14 апреля 2019

Я использую Unity для создания игры и хочу настроить рекламу с помощью admob. Я скачал плагин из здесь , у меня есть учетная запись Admob, в которую я добавил свое приложение, и я настроил файл AndroidManifest.xml с идентификатором приложения. Код C #, который я использую для реализации рекламы, следующий:

using GoogleMobileAds.Api;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

namespace Assets.Scripts
{
    public class AdManager : MonoBehaviour
    {
        private BannerView bannerView;

        private InterstitialAd interstitial;

        private string appId = null;

#if UNITY_ANDROID
        string testBannerAd = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
        string adUnitId = "unexpected_platform";
#endif

        private void Start()
        {
            string appId = "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxx";
            MobileAds.Initialize(appId);
            bannerView.OnAdLoaded += OnBannerLoaded;
        }

        public void RequestInterstitial()
        {

            // Initialize an InterstitialAd.
            this.interstitial = new InterstitialAd(testBannerAd);

            // Create an empty ad request.
            AdRequest request = new AdRequest.Builder().Build();
            // Load the interstitial with the request.
            this.interstitial.LoadAd(request);
        }

        public void RequestBanner()
        {
            if (bannerView != null)
                bannerView.Destroy();
            bannerView = new BannerView(testBannerAd, AdSize.SmartBanner, AdPosition.Bottom);
            AdRequest request = new AdRequest.Builder().Build();
            // Load the interstitial with the request.
            this.bannerView.LoadAd(request);
        }

        public void ShowInterstitial()
        {
            if (this.interstitial.IsLoaded())
            {
                this.interstitial.Show();
            }
            else
            {
                Debug.Log("Interstitial ain't loaded yet. ");
            }
        }

        public void HideInterstitial()
        {
            this.interstitial.Destroy();
        }

        public void ShowBanner()
        {
            bannerView.Show();
        }

        public void OnBannerLoaded(object sender, EventArgs args)
        {
            Debug.Log("Banner loaded");
            bannerView.Show();
        }

        public void HideBanner()
        {
            bannerView.Hide();
        }
    }
}

Примечание. Я использую идентификатор тестового баннера вместо регистрации тестового устройства.

В редакторе я получаю сообщения типа Dummy ctor или Dummy CreateBannerView или Dummy ShowBannerView. Просто ничего не появляется ни в редакторе, ни в физическом устройстве после сборки.

Редактировать

Подключился к Logcat и получил это:

2019-04-14 19: 14: 59,959 12626-12642 /? E / Unity: AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.AdSize java.lang.ClassNotFoundException: com.google.android.gms.ads.AdSize в java.lang.Class.classForName (собственный метод) в java.lang.Class.forName (Class.java:453) в java.lang.Class.forName (Class.java:378) в com.unity3d.player.UnityPlayer.nativeRender (собственный метод) at com.unity3d.player.UnityPlayer.c (неизвестный источник: 0) at com.unity3d.player.UnityPlayer $ e $ 2.queueIdle (неизвестный источник: 72) на android.os.MessageQueue.next (MessageQueue.java:394) на android.os.Looper.loop (Looper.java:142) at com.unity3d.player.UnityPlayer $ e.run (неизвестный источник: 32) Причина: java.lang.ClassNotFoundException: не найден класс "com.google.android.gms.ads.AdSize" по пути: DexPathList [[zip-файл «/Data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/lib/x86, /data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/base.apk!/lib/x86, / 2019-04-14 19: 14: 59,995 12626-12642 /? E / Unity: AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.MobileAds java.lang.ClassNotFoundException: com.google.android.gms.ads.MobileAds в java.lang.Class.classForName (собственный метод) в java.lang.Class.forName (Class.java:453) в java.lang.Class.forName (Class.java:378) в com.unity3d.player.UnityPlayer.nativeRender (собственный метод) at com.unity3d.player.UnityPlayer.c (неизвестный источник: 0) at com.unity3d.player.UnityPlayer $ e $ 2.queueIdle (неизвестный источник: 72) на android.os.MessageQueue.next (MessageQueue.java:394) на android.os.Looper.loop (Looper.java:142) at com.unity3d.player.UnityPlayer $ e.run (неизвестный источник: 32) Вызвано: java.lang.ClassNotFoundException: не найден класс «com.google.android.gms.ads.MobileAds» по пути: DexPathList [[zip-файл «/Data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/lib/x86, /data/app/com.mycompany.mytestapp-i1g6KcCN125pL34LmxAIeQ==/base.apk!/l

Поэтому я искал это в Интернете и обнаружил, что должен проверить папку Assets/Plugins/Android, если у меня есть все зависимости. Я сделал, и я все равно решил, что удалось, но проблема не устранена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...