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 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;
// Interstitial Ad Delegates
ChartboostMediation.DidLoadInterstitial += DidLoadInterstitial;
ChartboostMediation.DidShowInterstitial += DidShowInterstitial;
ChartboostMediation.DidCloseInterstitial += DidCloseInterstitial;
ChartboostMediation.DidClickInterstitial += DidClickInterstitial;
ChartboostMediation.DidRecordImpressionInterstitial += DidRecordImpressionInterstitial;
// Rewarded Ad Delegates
ChartboostMediation.DidLoadRewarded += DidLoadRewarded;
ChartboostMediation.DidShowRewarded += DidShowRewarded;
ChartboostMediation.DidCloseRewarded += DidCloseRewarded;
ChartboostMediation.DidReceiveReward += DidReceiveReward;
ChartboostMediation.DidClickRewarded += DidClickRewarded;
ChartboostMediation.DidRecordImpressionRewarded += DidRecordImpressionRewarded;
// 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
orshow
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;
// Interstitial Ad Delegates
ChartboostMediation.DidLoadInterstitial -= DidLoadInterstitial;
ChartboostMediation.DidShowInterstitial -= DidShowInterstitial;
ChartboostMediation.DidCloseInterstitial -= DidCloseInterstitial;
ChartboostMediation.DidClickInterstitial -= DidClickInterstitial;
ChartboostMediation.DidRecordImpressionInterstitial -= DidRecordImpressionInterstitial;
// Rewarded Ad Delegates
ChartboostMediation.DidLoadRewarded -= DidLoadRewarded;
ChartboostMediation.DidShowRewarded -= DidShowRewarded;
ChartboostMediation.DidCloseRewarded -= DidCloseRewarded;
ChartboostMediation.DidReceiveReward -= DidReceiveReward;
ChartboostMediation.DidClickRewarded -= DidClickRewarded;
ChartboostMediation.DidRecordImpressionRewarded -= DidRecordImpressionRewarded;
// 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));
}
Interstitial Ad Delegates
private void DidLoadInterstitial(string placementName, string loadId, BidInfo info, string error)
{
Debug.Log($"DidLoadInterstitial {placementName}, Price: ${info.Price:F4}, Auction Id: {info.AuctionId}, Partner Id: {info.PartnerId}. {error}");
}
private void DidShowInterstitial(string placementName, string error)
{
Debug.Log($"DidShowInterstitial {placementName}: {error}");
}
private void DidCloseInterstitial(string placementName, string error)
{
Debug.Log($"DidCloseInterstitial {placementName}: {error}");
}
private void DidClickInterstitial(string placementName, string error)
{
Debug.Log($"DidClickInterstitial {placementName}: {error}");
}
private void DidRecordImpressionInterstitial(string placementName, string error)
{
Log($"DidRecordImpressionInterstitial {placementName}: {error}");
}
void DidLoadInterstitial(string placementName, HeliumError error) {
Debug.Log(string.Format("didLoadInterstitial {0}: {1}", placementName, error));
}
void DidShowInterstitial(string placementName, HeliumError error) {
Debug.Log(string.Format("didShowInterstitial {0}: {1}", placementName, error));
}
void DidCloseInterstitial(string placementName, HeliumError error) {
Debug.Log(string.Format("didCloseInterstitial {0}: {1}", placementName, error));
}
void DidWinBidInterstitial(string placementName, HeliumBidInfo info) {
AddLog(string.Format("didWinBidInterstitial {0}: ${1:0.####}", placementName, info.Price));
}
void DidClickInterstitial(string placementName, HeliumError error)
{
Log(string.Format("didClickInterstitial {0}: {1}", placementName, error));
}
Rewarded Ad Delegates
private void DidLoadRewarded(string placementName, string loadId, BidInfo info, string error)
{
Debug.Log($"DidLoadRewarded {placementName}, Price: ${info.Price:F4}, Auction Id: {info.AuctionId}, Partner Id: {info.PartnerId}. {error}");
}
private void DidShowRewarded(string placementName, string error)
{
Debug.Log($"DidShowRewarded {placementName}: {error}");
}
private void DidCloseRewarded(string placementName, string error)
{
Debug.Log($"DidCloseRewarded {placementName}: {error}");
}
private void DidClickRewarded(string placementName, string error)
{
Debug.Log($"DidClickRewarded {placementName}: {error}");
}
private void DidReceiveReward(string placementName, int reward)
{
Debug.Log($"DidReceiveReward {placementName}: {reward}");
}
private void DidRecordImpressionRewarded(string placementName, string error)
{
Log($"DidRecordImpressionRewarded {placementName}: {error}");
}
void DidLoadRewarded(string placementName, HeliumError error) {
Debug.Log(string.Format("didLoadRewarded {0}: {1}", placementName, error));
}
void DidShowRewarded(string placementName, HeliumError error) {
Debug.Log(string.Format("didShowRewarded {0}: {1}", placementName, error));
}
void DidCloseRewarded(string placementName, HeliumError error) {
Debug.Log(string.Format("didCloseRewarded {0}: {1}", placementName, error));
}
void DidReceiveReward(string reward) {
Debug.Log(string.Format("didReceiveReward {0}", reward));
}
void DidWinBidRewarded(string placementName, HeliumBidInfo info) {
AddLog(string.Format("didWinBidRewarded {0}: ${1:0.####}", placementName, info.Price));
}
void DidClickRewarded(string placementName, HeliumError error)
{
Log(string.Format("didClickRewarded {0}: {1}", placementName, 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)
{
IsBannerVisible = true;
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));
Updated about 1 month ago