我正在尝试使用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.");
}
}
发布于 2018-11-21 18:29:11
问题终于解决了!你不需要和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.");
}
}
希望这对任何寻求解决方案的人都有帮助:)
发布于 2018-11-09 15:50:17
原因:与BannerView不同。因为您使用的是谷歌.So提供的testUnitID,所以需要设置TestDeviceId.You将在输出中获得错误信息,如下所示
若要在此设备上获取测试广告,请拨打: 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");
我使用了上面的代码,它工作得很好。
https://stackoverflow.com/questions/53204429
复制相似问题