Chartboost check interstitial has been closed

Hi all,

To try and keep this simple, we have a game where when the player dies an interstitial will appear and we would like to find a way to check when the interstitial has been closed and then from this reload the game for the player.

I think we are looking for something like a bool, hasClosed for instance, or a way to make one, but we have been unable to work out how this would be implemented with chartboost.

using UnityEngine;
using System.Collections;
using ChartboostSDK;

public class ChartboostPersistentObject : MonoBehaviour
{

    private GameManager gm;
   
    void Awake()
    {
        // Fill gameManager.
        GameObject tempGm = GameObject.Find("GameManager");
        gm = (GameManager)tempGm.GetComponent(typeof(GameManager));
    }

    void Start()
    {
        // fill the cache.
        Chartboost.cacheInterstitial(CBLocation.Default);
    }

    void Update()
    {
        // If player is dead & they have player the tutorial & they have not yet
        // touched the screen (This was to stop multiple ads), then show ad.
        if(gm.isDead && gm.playCount >= 1 && gm.touchCount == 0)
        {
            Chartboost.showInterstitial(CBLocation.Default);
            // Now increase touchCount to stop any further ads showing.
            gm.touchCount++;
        }        
    }

    // My understanding was that this would return that the interstitial has been dismissed.
    void OnMouseUp()
    {
        Chartboost.didDismissInterstitial += didDismissInterstitial;
    }

    // Which would then relay to this function that it has been closed
    // thus allowing me to control the bool value for the closed check. 
    void didDismissInterstitial(CBLocation location)
    {
        gm.activeAd = false;
    }
}

Above is the important code I am working with for the ads. The top part of the code all works fine and the bottom is where I have no idea what I am doing and I am just going by what my understanding of Chartboosts documentation provides. I have included comments in the code to explain my understanding and what I think it is doing / why I have done it.

you want to register your delegate ( Chartboost.didDismissInterstitial += didDismissInterstitial ) long before the mouse goes up- the problem is that you’re registering too late so chartboost doesn’t know you want a callback by the time it’s ready to fire one. instead, move the line

Chartboost.didDismissInterstitial += didDismissInterstitial;

to right before you show the ad with

Chartboost.showInterstitial(CBLocation.Default);

also, make sure to remove the delegate inside the callback when you’re done ( i.e. )

void didDismissInterstitial(CBLocation location)
{
    Chartboost.didDismissInterstitial -= didDismissInterstitial;
    gm.activeAd = false;
}