Callback Events
Events are broken up into 3 interfaces. The NimbusAdsManager automatically attempts to subscribe any GameObjects that implement any of the below interfaces on Start
public interface IAdEvents {
void OnAdLoaded(NimbusAdUnit nimbusAdUnit);
void OnAdWasRendered(NimbusAdUnit nimbusAdUnit);
void OnAdClicked(NimbusAdUnit nimbusAdUnit);
void OnAdCompleted(NimbusAdUnit nimbusAdUnit, bool skipped);
void OnAdError(NimbusAdUnit nimbusAdUnit);
}
public interface IAdEventsExtended : IAdEvents {
void OnAdImpression(NimbusAdUnit nimbusAdUnit);
void OnAdDestroyed(NimbusAdUnit nimbusAdUnit);
}
public interface IAdEventsVideoExtended : IAdEvents {
void OnVideoAdPaused(NimbusAdUnit nimbusAdUnit);
void OnVideoAdResume(NimbusAdUnit nimbusAdUnit);
}
Manually subscription of Events can be done via the NimbusManager.Instance.NimbusEvents
Manual Subscriptions should not be done on Awake. It is recommended to subscribe to events on OnEnable
. Remember unsubscribe OnDisable
to avoid any memory leaks.
Example of Rewarding A User on Trigger (from Demo Scene In Sample Project)
/// <summary>
/// This demonstrates how to call for a rewarded ad by implementing the IAdEvents interface which the NimbusManager
/// auto subscribes to
/// </summary>
public class RewardedVideoExample : MonoBehaviour, IAdEventsExtended {
public GameObject cloud;
// keep a reference of the returned ad so that it can be safely cleaned up
private NimbusAdUnit _ad;
private bool _alreadyTriggered;
private void Awake() {
// UnityThread is a helper package so that coroutines can be called within
// ad callbacks. See Line #85
UnityThread.InitUnityThread();
}
private void OnDestroy() {
_ad?.Destroy();
}
private void OnTriggerEnter2D(Collider2D other) {
var player = other.gameObject.GetComponent<NimbusPlayerController>();
if (player == null || _alreadyTriggered) return;
_ad = NimbusManager.Instance.RequestRewardVideoAdAndLoad("unity_demo_rewarded_video_position");
_alreadyTriggered = true;
}
public void OnAdLoaded(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad was returned and loaded into memory ad instance {nimbusAdUnit.InstanceID}, " +
$"bid value: {nimbusAdUnit.BidResponse.BidRaw}, " +
$"bid value in cents: {nimbusAdUnit.BidResponse.BidInCents}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
}
public void OnAdWasRendered(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad was rendered for ad instance {nimbusAdUnit.InstanceID}, " +
$"bid value: {nimbusAdUnit.BidResponse.BidRaw}, " +
$"bid value in cents: {nimbusAdUnit.BidResponse.BidInCents}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
}
public void OnAdImpression(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad impression was fired {nimbusAdUnit.InstanceID}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
}
public void OnAdClicked(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad was clicked {nimbusAdUnit.InstanceID}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
}
public void OnAdDestroyed(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad was destroyed/removed from the scene {nimbusAdUnit.InstanceID}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
}
public void OnAdCompleted(NimbusAdUnit nimbusAdUnit, bool skipped) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
if (skipped) return;
Debug.unityLogger.Log(
$"RewardedVideoExample Ad was completed and the use can be rewarded {nimbusAdUnit.InstanceID}, " +
$"network: {nimbusAdUnit.BidResponse.Network}, " +
$"placement_id: {nimbusAdUnit.BidResponse.PlacementId}, " +
$"auction_id: {nimbusAdUnit.BidResponse.AuctionId}");
UnityThread.ExecuteInUpdate(RewardUser);
}
public void OnAdError(NimbusAdUnit nimbusAdUnit) {
if (_ad?.InstanceID != nimbusAdUnit.InstanceID) return;
Debug.unityLogger.Log($"RewardedVideoExample Err {nimbusAdUnit.ErrResponse.Message}");
}
private IEnumerator MakeItRain() {
cloud.SetActive(true);
yield return new WaitForSeconds(4);
ScoreUI.Instance.UpdateScore(100);
}
private void RewardUser() {
StartCoroutine(MakeItRain());
}
}
Last updated