Я использую 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
, если у меня есть все зависимости.
Я сделал, и я все равно решил, что удалось, но проблема не устранена.