1

我正在尝试在 Xamarin 中使用 C# 为 iOS 实现 RewardBasedVideoAd,但我似乎无法让它工作。这是我到目前为止所拥有的,它没有进入任何委托功能。非常感谢任何帮助或建议。提前致谢。

    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.");
        }
}
4

2 回答 2

1

Problem finally solved! You don't need to deal with IRewardBasedVideoAdDelegate. All you have to do is inherit your class from RewardBasedVideoAdDelegate and override all necessary methods like:

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.");
        }
}

Hope this helps to anyone looking for solution :)

于 2018-11-21T10:29:11.420 回答
0

原因: 与 BannerView 不同。因为您使用了 google 提供的 testUnitID。所以您需要设置 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");

我使用了上面的代码,它工作正常。

于 2018-11-09T07:50:17.300 回答