Untitled
unknown
plain_text
4 years ago
9.6 kB
5
Indexable
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;
using UnityEngine.EventSystems;
#if UNITY_STANDALONE || IRON_SRC
public enum ShowResult
{
Finished,
Skipped,
Failed
}
#endif
public class PlayAd : MonoBehaviour
{
System.Action<ShowResult> m_Callback = null;
EventSystem m_EventSystem = null;
//#if IRON_SRC
bool rewardedVideoAvailability;
void OnApplicationPause(bool isPaused)
{
IronSource.Agent.onApplicationPause(isPaused);
}
void Awake()
{
IronSource.Agent.init(GameGlobals.IRON_SOURCE_APP_ID, IronSourceAdUnits.REWARDED_VIDEO, IronSourceAdUnits.INTERSTITIAL);
IronSource.Agent.validateIntegration();
}
void Start()
{
IronSourceEvents.onRewardedVideoAdOpenedEvent += RewardedVideoAdOpenedEvent;
IronSourceEvents.onRewardedVideoAdClosedEvent += RewardedVideoAdClosedEvent;
IronSourceEvents.onRewardedVideoAvailabilityChangedEvent += RewardedVideoAvailabilityChangedEvent;
IronSourceEvents.onRewardedVideoAdStartedEvent += RewardedVideoAdStartedEvent;
IronSourceEvents.onRewardedVideoAdEndedEvent += RewardedVideoAdEndedEvent;
IronSourceEvents.onRewardedVideoAdRewardedEvent += RewardedVideoAdRewardedEvent;
IronSourceEvents.onRewardedVideoAdShowFailedEvent += RewardedVideoAdShowFailedEvent;
IronSourceEvents.onInterstitialAdReadyEvent += InterstitialAdReadyEvent;
IronSourceEvents.onInterstitialAdLoadFailedEvent += InterstitialAdLoadFailedEvent;
IronSourceEvents.onInterstitialAdShowSucceededEvent += InterstitialAdShowSucceededEvent;
IronSourceEvents.onInterstitialAdShowFailedEvent += InterstitialAdShowFailedEvent;
IronSourceEvents.onInterstitialAdClickedEvent += InterstitialAdClickedEvent;
IronSourceEvents.onInterstitialAdOpenedEvent += InterstitialAdOpenedEvent;
IronSourceEvents.onInterstitialAdClosedEvent += InterstitialAdClosedEvent;
}
void OnDestroy()
{
IronSourceEvents.onRewardedVideoAdOpenedEvent -= RewardedVideoAdOpenedEvent;
IronSourceEvents.onRewardedVideoAdClosedEvent -= RewardedVideoAdClosedEvent;
IronSourceEvents.onRewardedVideoAvailabilityChangedEvent -= RewardedVideoAvailabilityChangedEvent;
IronSourceEvents.onRewardedVideoAdStartedEvent -= RewardedVideoAdStartedEvent;
IronSourceEvents.onRewardedVideoAdEndedEvent -= RewardedVideoAdEndedEvent;
IronSourceEvents.onRewardedVideoAdRewardedEvent -= RewardedVideoAdRewardedEvent;
IronSourceEvents.onRewardedVideoAdShowFailedEvent -= RewardedVideoAdShowFailedEvent;
IronSourceEvents.onInterstitialAdReadyEvent -= InterstitialAdReadyEvent;
IronSourceEvents.onInterstitialAdLoadFailedEvent -= InterstitialAdLoadFailedEvent;
IronSourceEvents.onInterstitialAdShowSucceededEvent -= InterstitialAdShowSucceededEvent;
IronSourceEvents.onInterstitialAdShowFailedEvent -= InterstitialAdShowFailedEvent;
IronSourceEvents.onInterstitialAdClickedEvent -= InterstitialAdClickedEvent;
IronSourceEvents.onInterstitialAdOpenedEvent -= InterstitialAdOpenedEvent;
IronSourceEvents.onInterstitialAdClosedEvent -= InterstitialAdClosedEvent;
}
//Invoked when the RewardedVideo ad view has opened.
//Your Activity will lose focus. Please avoid performing heavy
//tasks till the video ad will be closed.
void RewardedVideoAdOpenedEvent()
{
}
//Invoked when the RewardedVideo ad view is about to be closed.
//Your activity will now regain its focus.
void RewardedVideoAdClosedEvent()
{
}
//Invoked when there is a change in the ad availability status.
//@param - available - value will change to true when rewarded videos are available.
//You can then show the video by calling showRewardedVideo().
//Value will change to false when no videos are available.
void RewardedVideoAvailabilityChangedEvent(bool available)
{
//Change the in-app 'Traffic Driver' state according to availability.
rewardedVideoAvailability = available;
}
//Invoked when the video ad starts playing.
void RewardedVideoAdStartedEvent()
{
}
//Invoked when the video ad finishes playing.
void RewardedVideoAdEndedEvent()
{
if (m_EventSystem)
m_EventSystem.enabled = true;
}
//Invoked when the user completed the video and should be rewarded.
//If using server-to-server callbacks you may ignore this events and wait for
//the callback from the ironSource server.
//@param - placement - placement object which contains the reward data
void RewardedVideoAdRewardedEvent(IronSourcePlacement placement)
{
if (m_EventSystem)
m_EventSystem.enabled = true;
CustomCallback(ShowResult.Finished);
}
//Invoked when the Rewarded Video failed to show
//@param description - string - contains information about the failure.
void RewardedVideoAdShowFailedEvent(IronSourceError error)
{
if (m_EventSystem)
m_EventSystem.enabled = true;
CustomCallback(ShowResult.Failed);
}
//#endif
//Invoked when the initialization process has failed.
//@param description - string - contains information about the failure.
void InterstitialAdLoadFailedEvent(IronSourceError error)
{
print("Interstitial ad load failed..... " + error + " or " + error.getDescription());
}
//Invoked when the ad fails to show.
//@param description - string - contains information about the failure.
void InterstitialAdShowFailedEvent(IronSourceError error)
{
print("Interstitial show ad failed..... " + error + " or " + error.getDescription());
}
// Invoked when end user clicked on the interstitial ad
void InterstitialAdClickedEvent()
{
print("clicked Interstitial ad");
}
//Invoked when the interstitial ad closed and the user goes back to the application screen.
void InterstitialAdClosedEvent()
{
}
//Invoked when the Interstitial is Ready to shown after load function is called
void InterstitialAdReadyEvent()
{
print("Interstitial ready");
}
//Invoked when the Interstitial Ad Unit has opened
void InterstitialAdOpenedEvent()
{
}
//Invoked right before the Interstitial screen is about to open. NOTE - This event is available only for some of the networks.
//You should treat this event as an interstitial impression, but rather use InterstitialAdOpenedEvent
void InterstitialAdShowSucceededEvent()
{
}
public void ShowInterstitialAd()
{
if (IronSource.Agent.isInterstitialReady())
{
print("dead ready");
IronSource.Agent.showInterstitial("DefaultInterstitial");
}
else
print("dead not");
}
public void ShowAd(System.Action<ShowResult> callback, string itemName, string placementName, System.Action NoAdsReadyCallBack)
{
if (AnalyticsTracker.Instance)
AnalyticsTracker.Instance.TrackAdButtonClicked();
Debug.Log("[ShowAd] 1. Ad available: " + rewardedVideoAvailability);
rewardedVideoAvailability = IronSource.Agent.isRewardedVideoAvailable();
//Debug.Log("[ShowAd] 2. Ad available: " + rewardedVideoAvailability);
if (rewardedVideoAvailability)
{
m_EventSystem = UnityEngine.EventSystems.EventSystem.current;
if(m_EventSystem !=null)
m_EventSystem.enabled = false;
if (callback != null)
{
Debug.LogError("CALLBACK NOT NULL");
m_Callback = callback;
}
//Debug.Log("UIManager.Instance.CurrentUser.ID: " + UserManager.Instance.CurrentUser.ID);
//IronSource.Agent.clearRewardedVideoServerParams();
//IronSource.Agent.setUserId(UserManager.Instance.CurrentUser.ID);
//Dictionary<string, string> customParams = new Dictionary<string, string>();
//customParams.Add("item", itemName);
//IronSource.Agent.setRewardedVideoServerParams(customParams);
//Debug.Log("[ShowAd] showing reward video..." + placementName);
IronSource.Agent.showRewardedVideo();
/*
if(placementName == "DefaultInterstitial")
IronSource.Agent.showInterstitial(placementName);
else
{
print(placementName);
IronSource.Agent.showRewardedVideo(placementName);
}
*/
}
else
{
print("rewardedVideoAvailability is null");
#if UNITY_EDITOR || UNITY_STANDALONE
if (callback != null)
callback(ShowResult.Finished);
#else
if (NoAdsReadyCallBack!=null)
{
NoAdsReadyCallBack();
}
if(callback != null)
callback(ShowResult.Failed);
#endif
}
}
private void CustomCallback(ShowResult result)
{
if(m_Callback !=null)
m_Callback(result);
}
private void OnApplicationFocus(bool focus)
{
Debug.LogError("OnApplicationFocus Changed to: " + focus);
}
private void OnApplicationQuit()
{
Debug.LogError("OnApplicationQUIT CALLED");
}
}
Editor is loading...