c# - Xamarin Admob RewardedVideoAd 代码错误 0 和 3

标签 c# android xamarin xamarin.android

我尝试在我的 Xamarin 项目中使用 AdMob。我的目标是在我的应用程序上显示奖励视频。我有无法解决的问题,想与您分享。这是我的环境:

  • 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。

我检查了 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

也许我在广告商的设置上做错了,所以这是我的广告商。

广告殖民地: enter image description here

图表提升: enter image description here

Vungle : enter image description here

请给我您的反馈。 非常感谢。

最佳答案

我认为问题在于您的 Xamarin 项目中没有定义中介适配器。这些由各种广告代理商(如 vUngle)在其 SDK 中提供。不幸的是,它们目前都没有提供与 Xamarin 兼容的 SDK,因此您必须按照将外部程序集导入 Xamarin 的步骤进行操作。有几个人试图这样做(尝试搜索 Xamarin 论坛),但我没有看到任何人发布有效的解决方案。

关于c# - Xamarin Admob RewardedVideoAd 代码错误 0 和 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37141056/

相关文章:

c# - 如何在 C# 中使用 WMI 查询从 UWF 获取注册表和文件排除项

c# - 如何使用 javascript 将 C# 变量分配给 asp 元素

c# - 在这种情况下我如何不使用 DependencyResolver.Current.GetService(...)

c# xamarin forms 主详细信息页面 MVVM

c# - 如何在 C# 中使用 Bouncy CaSTLe 将 X.509 v.3 谷歌证书添加到项目中

c# - 从后台线程更新时 UI 稍微卡住

java - 无法向覆盖的方法添加 throws 子句导致我必须返回 null

android - 联系人提取需要太多时间

android - 带有子组件的 Dagger 2 绑定(bind)委托(delegate)

android - Xamarin Android 如何更改 ListView 中微调器的高度