2016-05-10 3 views
1

Я пытаюсь использовать AdMob в своем проекте Xamarin. Я нацелен на отображение награжденного видео в своем приложении. У меня проблемы, которые я не могу решить, и что я хотел бы поделиться с вами. Вот моя среда:Xamarin Admob RewardedVideoAd Code Error 0 & 3

  • Xamarin v4.0.1.96
  • Xamarin Android v6.0.1.10
  • Xamarin.GooglePlayServices.Ads v27.0.0

Я всегда выполнить проект реальное устройство. Если проблема возникает из среды отладки, я опубликовал приложение в магазине, и у меня возникла такая же проблема, как и у локального.

using System; 
using Android.OS; 
using Android.Views; 
using Android.Gms.Ads; 

    public class ReloadCreditActivity : AppCompatActivityBase, IRewardedVideoAdListener 
    { 
     public IRewardedVideoAd RewardedVideoAd { get; set; } 
     public Button DisplayVideoButton { get; set; } 

     private static string AD_UNIT_ID = "ca-app-pub-XXXXXXXXXXXXXX25/XXXXXXXX99"; 
     private bool _isRewardedVideoLoading; 
     private static object _lock = new object(); 
     protected IRewardedVideoAd _rewardedVideoAd; 

     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      SetContentView(Resource.Layout.ReloadCreditLayout); 

      DisplayVideoButton = FindViewById<Button>(Resource.Id.tabCreditFreemieum_DisplayVideo); 

      RewardedVideoAd = MobileAds.GetRewardedVideoAdInstance(this); 
      RewardedVideoAd.RewardedVideoAdListener = this; 
      LoadRewardedVideoAd(); 

      DisplayVideoButton.Click += (o, e) => 
      { 
       ShowRewardedVideo(); 
      }; 
     } 

     public void LoadRewardedVideoAd() 
     { 
      lock (_lock) 
      { 
       if (!_isRewardedVideoLoading && !RewardedVideoAd.IsLoaded) 
       { 
        _isRewardedVideoLoading = true; 
        Bundle extras = new Bundle(); 
        extras.PutBoolean("_noRefresh", true); 
        var adMobAdapter = new AdMobAdapter(); 
        AdRequest adRequest = new AdRequest.Builder() 
         //.AddTestDevice(AdRequest.DeviceIdEmulator) 
         //.AddTestDevice("FE5692B3DAD1B4CE3BE3BDA2FF4B6103") 
         //.AddNetworkExtrasBundle(adMobAdapter.Class, extras) 
         .Build(); 
        RewardedVideoAd.UserId = "pub-74XXXXXXXXXXXXXX"; 
        RewardedVideoAd.LoadAd(AD_UNIT_ID, adRequest); 
       } 
      } 
     } 

     public void ShowRewardedVideo() 
     { 
      if (RewardedVideoAd.IsLoaded) 
      { 
       RewardedVideoAd.Show(); 
      } 
     } 

     public void OnRewarded(IRewardItem reward) 
     { 
      Toast.MakeText(this, string.Format("OnRewarded ! currency: {0} amount: {1}", reward.GetType(), reward.Amount), ToastLength.Short).Show(); 
     } 

     public void OnRewardedVideoAdClosed() 
     { 
      Toast.MakeText(this, "OnRewardedVideoAdClosed", ToastLength.Short).Show(); 
      LoadRewardedVideoAd(); 
     } 

     public void OnRewardedVideoAdFailedToLoad(int errorCode) 
     { 
      lock (_lock) 
      { 
       _isRewardedVideoLoading = false; 
      } 
      Toast.MakeText(this, "OnRewardedVideoAdFailedToLoad Code error : " + errorCode, ToastLength.Short).Show(); 
     } 

     public void OnRewardedVideoAdLeftApplication() 
     { 
      Toast.MakeText(this, "OnRewardedVideoAdLeftApplication", ToastLength.Short).Show(); 
     } 

     public void OnRewardedVideoAdLoaded() 
     { 
      lock (_lock) 
      { 
       _isRewardedVideoLoading = false; 
      } 
      Toast.MakeText(this, "OnRewardedVideoAdLoaded", ToastLength.Short).Show(); 
     } 

     public void OnRewardedVideoAdOpened() 
     { 
      Toast.MakeText(this, "OnRewardedVideoAdOpened", ToastLength.Short).Show(); 
     } 

     public void OnRewardedVideoStarted() 
     { 
      Toast.MakeText(this, "OnRewardedVideoStarted", ToastLength.Short).Show(); 
     } 
    } 

Когда я перемещаться на этой странице, приложение всегда поднимают OnRewardedVideoAdFailedToLoad() обратного вызова. Я использовал, чтобы получить код ошибки 0, но в настоящее время я получил код ошибки 3.

я проверяю ошибку на Logging Android устройств

05-10 11:45:31.600 I/Ads  (14764): Starting ad request. 
05-10 11:45:31.600 I/Ads  (14764): Use AdRequest.Builder.addTestDevice("FE5692B3DAD1B4CE3BE3BDA2FF4B6103") to get test ads on this device. 
    ... 
05-10 11:45:31.910 W/Ads  (14764): Could not instantiate mediation adapter: com.jirbo.adcolony.AdColonyAdapter. com.jirbo.adcolony.AdColonyAdapter 
05-10 11:45:31.910 W/Ads  (14764): Fail to instantiate adapter com.jirbo.adcolony.AdColonyAdapter 
05-10 11:45:31.910 W/Ads  (14764): android.os.RemoteException 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzag(Unknown Source) 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzae(Unknown Source) 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzem$zza.onTransact(Unknown Source) 
... 
05-10 11:45:31.910 W/Ads  (14764): Could not instantiate mediation adapter: com.fuse.mediation.FuseAdapter. com.fuse.mediation.FuseAdapter 
05-10 11:45:31.910 W/Ads  (14764): Fail to instantiate adapter com.fuse.mediation.FuseAdapter 
05-10 11:45:31.910 W/Ads  (14764): android.os.RemoteException 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzag(Unknown Source) 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzae(Unknown Source) 
... 
05-10 11:45:31.910 W/Ads  (14764): Could not instantiate mediation adapter: com.google.ads.mediation.chartboost.ChartboostAdapter. com.google.ads.mediation.chartboost.ChartboostAdapter 
05-10 11:45:31.910 W/Ads  (14764): Fail to instantiate adapter com.google.ads.mediation.chartboost.ChartboostAdapter 
05-10 11:45:31.910 W/Ads  (14764): android.os.RemoteException 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzag(Unknown Source) 
05-10 11:45:31.910 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzae(Unknown Source) 
... 
05-10 11:45:31.920 W/Ads  (14764): Could not instantiate mediation adapter: com.google.ads.mediation.unity.UnityAdapter. com.google.ads.mediation.unity.UnityAdapter 
05-10 11:45:31.920 W/Ads  (14764): Fail to instantiate adapter com.google.ads.mediation.unity.UnityAdapter 
05-10 11:45:31.920 W/Ads  (14764): android.os.RemoteException 
05-10 11:45:31.920 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzag(Unknown Source) 
05-10 11:45:31.920 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzae(Unknown Source) 
... 
05-10 11:45:31.920 W/Ads  (14764): Could not instantiate mediation adapter: com.vungle.mediation.VungleAdapter. com.vungle.mediation.VungleAdapter 
05-10 11:45:31.920 W/Ads  (14764): Fail to instantiate adapter com.vungle.mediation.VungleAdapter 
05-10 11:45:31.920 W/Ads  (14764): android.os.RemoteException 
05-10 11:45:31.920 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzag(Unknown Source) 
05-10 11:45:31.920 W/Ads  (14764): at com.google.android.gms.internal.zzel.zzae(Unknown Source) 
... 
05-10 11:45:31.920 W/Ads  (14764): Failed to load ad: 3 

Я сказал себе, что, возможно, это проблема на моей конфигурации AdMob с рекламодатель, так вот мои настройки:

enter image description here

Может быть, я сделал что-то неправильно на настройках рекламодателя, так вот мой рекламодатель.

AdColony: enter image description here

Chartboost: enter image description here

Vungle: enter image description here

Пожалуйста, дайте мне вашу обратную связь. Большое спасибо.

+0

Никто не оставил комментария? – user1842258

ответ

1

Я думаю, проблема в том, что в вашем проекте Xamarin у вас нет адаптеров-посредников. Они предоставляются различными рекламными агентствами (например, vUngle) в своих SDK. К сожалению, ни один из них в настоящее время не поддерживает SDK от Xamarin, поэтому вам необходимо выполнить шаги по импорту иностранных сборок в Xamarin. Есть несколько человек, пытающихся это сделать (попробуйте найти форумы Xamarin), но я не видел, чтобы кто-нибудь отправлял рабочее решение.