AdMob - реализация для iOS RewardBasedVideoAd - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь реализовать RewardBasedVideoAd для iOS с использованием C # в Xamarin, и я просто не могу заставить его работать. Это то, что я имею до сих пор, и это не входит ни в одну из функций делегата. Любая помощь или совет высоко ценится. Заранее спасибо.

    public class AdMobImplementation : UIViewController, 
    IRewardBasedVideoAdDelegate
    {
        public AdMobImplementation()
        {
            RewardBasedVideoAd.SharedInstance.Delegate = this;
RewardBasedVideoAd.SharedInstance.LoadRequest(Request.GetDefaultRequest(), "ca-app-pub-3940256099942544/1712485313");
            }
        public void DidRewardUser(RewardBasedVideoAd rewardBasedVideoAd, AdReward reward)
        {
            Console.WriteLine("rewarded");
        }

     public void DidFailToLoad(RewardBasedVideoAd rewardBasedVideoAd, NSError error)
        {
            Console.WriteLine($"Reward based video ad failed to load with error: {error.LocalizedDescription}.");
        }

        public void DidReceiveAd(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad is received.");
        }

        public void DidOpen(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Opened reward based video ad.");
        }

        public void DidStartPlaying(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad started playing.");
        }

        public void DidClose(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad is closed.");
        }

        public void WillLeaveApplication(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad will leave application.");
        }
}

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Проблема окончательно решена!Вам не нужно иметь дело с IRewardBasedVideoAdDelegate.Все, что вам нужно сделать, это унаследовать ваш класс от RewardBasedVideoAdDelegate и переопределить все необходимые методы, такие как:

public class AdMobImplementation : RewardBasedVideoAdDelegate
    {
        public AdMobImplementation()
        {
            RewardBasedVideoAd.SharedInstance.Delegate = this;
RewardBasedVideoAd.SharedInstance.LoadRequest(Request.GetDefaultRequest(), "ca-app-pub-3940256099942544/1712485313");
            }
        public override void DidRewardUser(RewardBasedVideoAd rewardBasedVideoAd, AdReward reward)
        {
            Console.WriteLine("rewarded");
        }

     public override void DidFailToLoad(RewardBasedVideoAd rewardBasedVideoAd, NSError error)
        {
            Console.WriteLine($"Reward based video ad failed to load with error:{error.LocalizedDescription}.");
        }

        public override void DidReceiveAd(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad is received.");
        }

        public override void DidOpen(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Opened reward based video ad.");
        }

        public override void DidStartPlaying(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad started playing.");
        }

        public override void DidClose(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad is closed.");
        }

        public override void WillLeaveApplication(RewardBasedVideoAd rewardBasedVideoAd)
        {
            Console.WriteLine("Reward based video ad will leave application.");
        }
}

Надеюсь, это поможет любому, кто ищет решение:)

0 голосов
/ 09 ноября 2018

Причина: Отличается от BannerView. Поскольку вы использовали testUnitID, предоставленный Google. Поэтому вам нужно установить TestDeviceId. Вы получите информацию об ошибке в выводе, как

Чтобы получить тестовые объявления на этом устройстве, позвоните: request.testDevices = @ [kGADSimulatorID] или @ [@ "xxxxxxxxxxx"], если вы используете реальное устройство;

Решение:

Если вы используете симулятор

var request = Request.GetDefaultRequest();
request.TestDevices = new[] {Request.SimulatorId.ToString() };
RewardBasedVideoAd.SharedInstance.LoadRequest(Request.GetDefaultRequest(), "ca-app-pub-3940256099942544/1712485313");

Если вы используете реальное устройство

var request = Request.GetDefaultRequest();
request.TestDevices = new[] {"xxxxxxxxxxxxx"};
RewardBasedVideoAd.SharedInstance.LoadRequest(Request.GetDefaultRequest(), "ca-app-pub-3940256099942544/1712485313");

Я использовал вышеуказанный код, и он отлично работает.

...