I am using rewarded ads of admob and using Action<bool> parameter to return true or false but the given reward increases 1 every time.
public void showRewarded(Action<bool> giveReward)
{
if (rewardedAd.IsLoaded())
{
rewardedAd.Show();
rewardedAd.OnUserEarnedReward += delegate(object sender, Reward reward)
{
giveReward(true);
};
}
else
{
giveReward(false);
}
requestRewarded();
}
I call this method in different places :
public void watchAdUpgradeFactory()
{
AdsController.Instance.showRewarded(delegate(bool b)
{
if (b)
{
SoundManager.PlaySomeSoundOnce?.Invoke(SoundType.ButtonClick);
playerStorageSO.ConcretePlayer.GetResource(ResourceType.Coin, 0);
concreteFactory.Upgrade();
ConfigureButton();
checkdAdButton();
}
});
}
public void watchAdUpgradeTower()
{
AdsController.Instance.showRewarded(delegate(bool b)
{
if (b)
{
upgradeTower();
ConfigureButton();
checkdAdButton();
}
});
}
This works as intended for the first time but the giveReward(true) stacks up after every time and player gets 1,2,3,4,5... rewards after consequent claims of reward. How can I fix this or is there a better method of achieving the same goal?