146 lines
4.3 KiB
C#
146 lines
4.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using GoogleMobileAds.Api;
|
|
using System.Threading.Tasks;
|
|
using System;
|
|
using UnityEngine.Events;
|
|
|
|
public class AdsManager : MonoBehaviour
|
|
{
|
|
private static AdsManager _instance;
|
|
public static AdsManager instance => _instance;
|
|
|
|
private BannerView bannerView;
|
|
private InterstitialAd interstitial;
|
|
private RewardedAd rewardedAd;
|
|
|
|
|
|
|
|
[Header("Ids")]
|
|
[SerializeField]private string bannerId;
|
|
[SerializeField]private string interstitialId;
|
|
[SerializeField]private string rewardedId;
|
|
|
|
public UnityEvent onAwardEarned = new UnityEvent();
|
|
|
|
|
|
public bool dontDestroyOnLoad=true;
|
|
void Start()
|
|
{
|
|
_instance =this;
|
|
if(dontDestroyOnLoad){DontDestroyOnLoad(gameObject);}
|
|
|
|
MobileAds.Initialize(OnInit);
|
|
}
|
|
|
|
void OnInit(InitializationStatus initStatus){
|
|
// MessageDialog.instance.ShowMessage("Debug","Ads inited");
|
|
DevLog.Log("Ads initiated, Loading ads now");
|
|
Debug.Log("Google ads init,"+initStatus);
|
|
Debug.Log("Loading ads now");
|
|
rewardedAd = new RewardedAd(rewardedId);
|
|
rewardedAd.OnUserEarnedReward += OnRewardedComplete;
|
|
rewardedAd.OnAdFailedToLoad += OnRewardedFailed;
|
|
rewardedAd.OnAdFailedToShow += OnRewardedFailed;
|
|
rewardedAd.OnAdClosed += OnRewardCanceled;
|
|
RequestBanner();
|
|
LoadInterestitial();
|
|
LoadRewarded();
|
|
}
|
|
|
|
|
|
void RequestBanner(){
|
|
DevLog.Log("Loading Banner");
|
|
try{
|
|
bannerView = new BannerView(bannerId, AdSize.Banner, AdPosition.BottomLeft);
|
|
AdRequest request = new AdRequest.Builder().Build();
|
|
this.bannerView.LoadAd(request);
|
|
}catch(Exception e){
|
|
DevLog.Log(e.Message);
|
|
}
|
|
}
|
|
|
|
public void LoadInterestitial(){
|
|
DevLog.Log("Loading Interestitial");
|
|
try{
|
|
interstitial = new InterstitialAd(interstitialId);
|
|
// Create an empty ad request.
|
|
AdRequest request = new AdRequest.Builder().Build();
|
|
// Load the interstitial with the request.
|
|
interstitial.LoadAd(request);
|
|
}catch(Exception e){
|
|
DevLog.Log(e.Message);
|
|
}
|
|
}
|
|
|
|
public void LoadRewarded(){
|
|
DevLog.Log("Loading Rewarded");
|
|
try{
|
|
|
|
AdRequest request = new AdRequest.Builder().Build();
|
|
this.rewardedAd.LoadAd(request);
|
|
}catch(Exception e){
|
|
DevLog.Log(e.Message);
|
|
}
|
|
}
|
|
|
|
public async void ShowInterestitial(){
|
|
DevLog.Log("Showing Interestitial");
|
|
interstitial.Show();
|
|
await Task.Delay(10000);
|
|
LoadInterestitial();
|
|
}
|
|
public void ShowRewarded(){
|
|
ShowRewarded(()=>{DevLog.Log("I Earned this, Back off");});
|
|
}
|
|
|
|
public async void ShowRewarded(UnityAction OnAwardEarned){
|
|
// MessageDialog.instance.ShowMessage("Debug","Showing rewarded, is rewareded null? : " + (rewardedAd == null).ToString());
|
|
DevLog.Log("Showing Rewarded, Rewarded ad null? : " + (rewardedAd==null).ToString());
|
|
try{
|
|
|
|
onAwardEarned.RemoveAllListeners();
|
|
onAwardEarned.AddListener(OnAwardEarned);
|
|
Debug.Log("Show Reward : is ad null? : " + (rewardedAd == null).ToString());
|
|
|
|
if(!rewardedAd.IsLoaded()){
|
|
Debug.Log("Ad not loaded, Loading now");
|
|
LoadRewarded();
|
|
}else{
|
|
|
|
}
|
|
while(!rewardedAd.IsLoaded()){
|
|
await Task.Delay(500);
|
|
}
|
|
Debug.Log("Ad ready, showing now");
|
|
|
|
this.rewardedAd.Show();
|
|
Debug.Log("Ad shown");
|
|
}catch(Exception e){
|
|
DevLog.Log(e.Message);
|
|
}
|
|
|
|
}
|
|
|
|
void OnRewardedComplete(object sender, EventArgs args){
|
|
onAwardEarned.Invoke();
|
|
LoadRewarded();
|
|
}
|
|
|
|
void OnRewardedFailed(object sender, EventArgs args){
|
|
DevLog.Log("Ad failed to load");
|
|
// MessageDialog.instance.ShowMessage("Sorry", "We couldn't Load the Ad right now. Please try again later.");
|
|
LoadRewarded();
|
|
|
|
}
|
|
|
|
void OnRewardCanceled(object sender, EventArgs args){
|
|
DevLog.Log("User canceled the ad");
|
|
|
|
// MessageDialog.instance.ShowMessage("Failed", "You closed the Ad. Please watch the full ad to receive the gift");
|
|
LoadRewarded();
|
|
}
|
|
|
|
}
|