Hi,
I'm having a problem with RewardedAd in Admob.
OnUserEarnedReward callback function does not work.
It works when I test it in Unity, but it doesn't work when I build and test it on an Android device.
Do you have any solution suggestions about this issue?
Unity: 2020.3.1f1
Admob: Google Mobile Ads Unity Plugin v5.4.0
Tested Android Device: Redmi Note 9 Pro (Android 10)
Example of the code I use to manage Admob;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
public class AdmobManager : MonoBehaviour
{
public static AdmobManager instance;
// Test IDs
public string InterstitialID = "ca-app-pub-3940256099942544/1033173712";
public string RewardedID = "ca-app-pub-3940256099942544/5224354917";
private InterstitialAd Interstitial;
private RewardedAd Rewarded;
private ButtonController _buttonController;
// Start is called before the first frame update
void Start()
{
MobileAds.Initialize(initStatus => { });
RequestInterstitial();
RequestRewardedAd();
DetectTheButtonController();
}
void Awake()
{
MakeSingleton();
}
#region Public Functions
public void ShowInterstitial()
{
if (Interstitial.IsLoaded())
{
Interstitial.Show();
}
}
public void ShowRewardedAd()
{
if (Rewarded.IsLoaded())
{
Rewarded.Show();
}
}
public void DetectTheButtonController()
{
if (_buttonController == null)
{
_buttonController = FindObjectOfType<ButtonController>();
}
}
#endregion
#region Private Functions
private void RequestInterstitial()
{
Interstitial = new InterstitialAd(InterstitialID);
Interstitial.OnAdClosed += Interstitial_OnAdClosed;
AdRequest request = new AdRequest.Builder().Build();
Interstitial.LoadAd(request);
}
private void Interstitial_OnAdClosed(object sender, System.EventArgs e)
{
RequestInterstitial();
}
private void RequestRewardedAd()
{
Rewarded = new RewardedAd(RewardedID);
Rewarded.OnUserEarnedReward += Rewarded_OnUserEarnedReward;
Rewarded.OnAdClosed += Rewarded_OnAdClosed;
AdRequest request = new AdRequest.Builder().Build();
Rewarded.LoadAd(request);
}
private void Rewarded_OnAdClosed(object sender, System.EventArgs e)
{
RequestRewardedAd();
}
private void Rewarded_OnUserEarnedReward(object sender, Reward e)
{
if (_buttonController != null)
{
_buttonController.GiveRewardedGold();
}
}
private void MakeSingleton()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
DontDestroyOnLoad(gameObject);
}
}
#endregion
}