RewardedAd.Show() 已弃用重载
RewardedAd.Show() has deprecated overloads
在我的 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 class。实现接口似乎不是一个合适的解决方案。有没有人成功更新他们的广告代码?
我使用的是最新的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();
}
}
您可以创建一个 class 继承 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,弃用了许多 class 和 API,并重命名了许多 class 为版本 20.0.0 做准备。因此,Xamarin.GooglePlayServices.Ads 版本 119.7.0 并非 100% 稳定。
在我的 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 class。实现接口似乎不是一个合适的解决方案。有没有人成功更新他们的广告代码?
我使用的是最新的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();
}
}
您可以创建一个 class 继承 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,弃用了许多 class 和 API,并重命名了许多 class 为版本 20.0.0 做准备。因此,Xamarin.GooglePlayServices.Ads 版本 119.7.0 并非 100% 稳定。