微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RewardedAd.Show() 已弃用重载

如何解决RewardedAd.Show() 已弃用重载

在我的 Android 游戏(Xamarin 应用)中,我在我的应用中实施了 Google 奖励广告:

    public class InternalRewardedAdCallback : RewardedAdCallback
    {
        .
        .
        .
    }

    RewardedAd.Show(Platform.CurrentActivity,new InternalRewardedAdCallback());

但现在已弃用,广告无法加载。查看文档,我们现在必须使用侦听器来奖励用户

    public class InternalOnUserEarnedRewardListener : OnUserEarnedRewardListener
    {

    }

    RewardedAd.Show(Platform.CurrentActivity,new InternalOnUserEarnedRewardListener());

然而这行不通。只存在 IOnUserEarnedRewardListener 和没有 OnUserEarnedRewardListener 类。实现接口似乎不是一个合适的解决方案。有人成功更新了他们的广告代码吗?

我使用的是最新的 Xamarin.GooglePlayServices.Ads 版本 119.7.0

更新

这是尝试实现它时的样子:

private class InternalOnUserEarnedRewardListener : IOnUserEarnedRewardListener
{
    public IntPtr Handle => throw new NotImplementedException();

    public int JniIdentityHashCode => throw new NotImplementedException();

    public JniObjectReference PeerReference => throw new NotImplementedException();

    public JniPeerMembers JniPeerMembers => throw new NotImplementedException();

    public JniManagedPeerStates JniManagedPeerState => throw new NotImplementedException();

    public void dispose()
    {
        throw new NotImplementedException();
    }

    public void disposed()
    {
        throw new NotImplementedException();
    }

    public void disposeUnlessReferenced()
    {
        throw new NotImplementedException();
    }

    public void Finalized()
    {
        throw new NotImplementedException();
    }

    public void OnUserEarnedReward(IRewardItem p0)
    {
        throw new NotImplementedException();
    }

    public void SetJniIdentityHashCode(int value)
    {
        throw new NotImplementedException();
    }

    public void SetJniManagedPeerState(JniManagedPeerStates value)
    {
        throw new NotImplementedException();
    }

    public void SetPeerReference(JniObjectReference reference)
    {
        throw new NotImplementedException();
    }

    public void UnregisterFromruntime()
    {
        throw new NotImplementedException();
    }
}

解决方法

您可以创建一个继承 Java.Lang.Object 并实现 IOnUserEarnedRewardListener 接口的类:

public class CustomOnUserEarnedRewardListener : Java.Lang.Object,IOnUserEarnedRewardListener
{
    public event EventHandler OnRewarded;

    public void OnUserEarnedReward(IRewardItem rewardItem)
    {
        OnRewarded?.Invoke(this,EventArgs.Empty);
    }
}

然后显示 RewardedAd:

var rewardListener = new CustomOnUserEarnedRewardListener();
rewardListener.OnRewarded += (s,e) =>
{
    //Handle the reward
}

_rewardedAd.Show(_currentActivity,rewardListener);

注意:Google 移动广告 SDK 19.7.0 引入了许多新 API,弃用了许多类和 API,并重命名了许多类,为 20.0.0 版做准备。因此,Xamarin.GooglePlayServices.Ads 版本 119.7.0 并非 100% 稳定。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。