Delegate Usage

Overview

The Mediation SDK’s delegate methods allow you to exercise a greater degree of control over your integration. For example, you can:

  • Log debug messages when your game attempts to load an interstitial
  • Prevent ads from showing the first time a user plays your game
  • Determine whether a user has closed an ad
  • Get the price of the bid that won the auction

Delegates Setup

The Chartboost Mediation Unity SDK implements its delegate functionality using C# style delegates and events. Before using any of the delegate methods, you should first subscribe to the relevant SDK events in your MonoBehaviour as demonstrated:

Subscribing Static Delegates

private void OnEnable() {
    // Start Delegate
    ChartboostMediationSDK.DidStart += DidStart;

    // ILRD Delegate
    ChartboostMediationSDK.DidReceiveImpressionLevelRevenueData += DidReceiveImpressionLevelRevenueData;

    // Partner Initialization Data Delegate
    ChartboostMediation.DidReceivePartnerInitializationData += DidReceivePartnerInitializationData;

    // Error Handling Delegate
    ChartboostMediation.UnexpectedSystemErrorDidOccur += UnexpectedSystemErrorDidOccur;

    // Banner Ad Delegates
    ChartboostMediation.DidLoadBanner += DidLoadBanner;
    ChartboostMediation.DidClickBanner += DidClickBanner;
    ChartboostMediation.DidRecordImpressionBanner += DidRecordImpressionBanner;
}
void SetupDelegates() {
    //Helium Start Delegate
    HeliumSdk.didStart += didStart;
      
    //Helium Interstitial Ad Delegates
    HeliumSdk.didLoadInterstitial += DidLoadInterstitial;
    HeliumSdk.didShowInterstitial += DidShowInterstitial;
    HeliumSdk.didCloseInterstitial += DidCloseInterstitial;
    HeliumSdk.didWinBidInterstitial += DidWinBidInterstitial;
    HeliumSdk.didClickInterstitial += DidClickInterstitial;
      
    //Helium Rewarded Ad Delegates
    HeliumSdk.didLoadRewarded += DidLoadRewarded;
    HeliumSdk.didShowRewarded += DidShowRewarded;
    HeliumSdk.didCloseRewarded += DidCloseRewarded;
    HeliumSdk.didReceiveReward += DidReceiveReward;
    HeliumSdk.didWinBidRewarded += DidWinBidRewarded;
    HeliumSdk.didClickRewarded += DidClickRewarded;
      
    //Helium Banner Ad Delegates
    HeliumSdk.didLoadBanner += DidLoadBanner;
    HeliumSdk.didShowBanner += DidShowBanner;
    HeliumSdk.didWinBidBanner += DidWinBidBanner;
    HeliumSdk.didClickBanner += DidClickBanner;
}

📘

Note

  • Don’t make cache or show calls inside a delegate indicating that an ad has just failed to load.
  • Banner ads do not have a DidCloseBanner delegate.
  • Not all of the partner sdks have support for the DidClick delegate.

Unsubscribing Delegates

Make sure to unsubscribe to those same events when appropriate:

private void OnDisable() {
    // Remove event handlers
    ChartboostMediation.DidStart -= DidStart;

    // ILRD Delegate
    ChartboostMediation.DidReceiveImpressionLevelRevenueData -= DidReceiveImpressionLevelRevenueData;

    // Partner Initialization Data Delegate
    ChartboostMediation.DidReceivePartnerInitializationData -= DidReceivePartnerInitializationData;

    // Error Handling Delegate
    ChartboostMediation.UnexpectedSystemErrorDidOccur -= UnexpectedSystemErrorDidOccur;

    // Banner Ad Delegates
    ChartboostMediation.DidLoadBanner -= DidLoadBanner;
    ChartboostMediation.DidClickBanner -= DidClickBanner;
    ChartboostMediation.DidRecordImpressionBanner -= DidRecordImpressionBanner;
}
void OnDisable() {
    // Remove event handlers
    HeliumSdk.didStart -= didStart;
    HeliumSdk.didLoadInterstitial -= DidLoadInterstitial;
    HeliumSdk.didShowInterstitial -= DidShowInterstitial;
    HeliumSdk.didCloseInterstitial -= DidCloseInterstitial;
    HeliumSdk.didWinBidInterstitial -= DidWinBidInterstitial;
    HeliumSdk.didClickInterstitial -= DidClickInterstitial;
    
  
    HeliumSdk.didLoadRewarded -= DidLoadRewarded;
    HeliumSdk.didShowRewarded -= DidShowRewarded;
    HeliumSdk.didCloseRewarded -= DidCloseRewarded;
    HeliumSdk.didReceiveReward -= DidReceiveReward;
    HeliumSdk.didWinBidRewarded -= DidWinBidRewarded;
    HeliumSdk.didClickRewarded -= DidClickRewarded;
  
    //Helium Banner Ad Delegates
    HeliumSdk.didLoadBanner -= DidLoadBanner;
    HeliumSdk.didWinBidBanner -= DidWinBidBanner;
    HeliumSdk.didClickBanner -= DidClickBanner;
}

Example Delegate Methods

Lifecycle Delegates

// Start Delegate
private void DidStart(string error)
{
    Debug.Log($"DidStart: {error}");
    // Logic goes here
}

// ILRD Delegate
private void DidReceiveImpressionLevelRevenueData(string placement, Hashtable impressionData)
{
    var json =  JsonTools.Serialize(impressionData);
    Debug.Log($"DidReceiveImpressionLevelRevenueData {placement}: {json}");
}

// Partner Initialization Data Delegate
private void DidReceivePartnerInitializationData(string partnerInitializationData)
{
    Debug.Log($"DidReceivePartnerInitializationData: ${partnerInitializationData}");
}

// Error Handling Delegate
private static void UnexpectedSystemErrorDidOccur(string error)
{
    Debug.LogErrorFormat(error);
}
// Helium Start Delegate
void didStart(HeliumError error) {
    Debug.Log(string.Format("didStart with error: {0}", error));
}

Banner Ad Delegates

private void DidLoadBanner(string placementName, string loadId, BidInfo info, string error)
{
    Debug.Log($"DidLoadBanner{placementName}, {placementName}, Price: ${info.Price:F4}, Auction Id: {info.AuctionId}, Partner Id: {info.PartnerId}. {error}");
}

private void DidClickBanner(string placementName, string error)
{
    Debug.Log($"DidClickBanner {placementName}: {error}");
}

private void DidRecordImpressionBanner(string placementName, string error)
{
    Log($"DidRecordImpressionBanner {placementName}: {error}");
}
void DidLoadBanner(string placementName, HeliumError error)
{
    Debug.Log(string.Format("didLoadBanner {0}: {1}", placementName, error));
}
  
void DidWinBidBanner(string placementName, HeliumBidInfo info)
{
    Debug.Log(string.Format("didWinBidBanner {0}: ${1:0.####}", placementName, info.Price));
}
  
void DidClickBanner(string placementName, HeliumError error)
{
    Log(string.Format("didClickBanner {0}: {1}", placementName, error));