Delegate Usage

By implementing Mediation delegate protocols you can get notifications about the success, failure, or lifecycle events of the Mediation SDK and its ad objects.

Mediation Start Delegate

Implement the HeliumSdkDelegate protocol to receive notifications about the Mediation SDK’s initialization process.

extension AppDelegate: HeliumSdkDelegate
@interface AppDelegate () <HeliumSdkDelegate>

This will allow you to implement the following method:

func heliumDidStartWithError(_ error: ChartboostMediationSDK.ChartboostMediationError?) {
    if let error = error {
        print("Chartboost Mediation did not start due to error: \(error)")
    } else {
        print("Chartboost Mediation Started Successfully")
    }
}
- (void)heliumDidStartWithError:(nullable ChartboostMediationError *)error {
    if (error)
        NSLog(@"Mediation did not start due to error: %@", error);
    else
        NSLog(@"Mediation Started Successfully");
}

Interstitial Ad Delegates

Implement the CHBHeliumInterstitialAdDelegate protocol to receive notifications about interstitial ads loading, displaying, and closing.

extension ViewController: CHBHeliumInterstitialAdDelegate
@interface ViewController () <CHBHeliumInterstitialAdDelegate>

This will allow you to implement the following methods:

func heliumInterstitialAd(
    withPlacementName placementName: String,
    requestIdentifier: String,
    winningBidInfo: [String : Any]?,
    didLoadWithError error: ChartboostMediationSDK.ChartboostMediationError?
) {
    if let error = error {
        print("Interstitial with Placement Name:\(placementName) failed to load with error:\(error.localizedDescription)")
    } else {
        print("Interstitial with Placement Name:\(placementName) didLoad")
    }
}

func heliumInterstitialAd(
    withPlacementName placementName: String,
    didShowWithError error: ChartboostMediationSDK.ChartboostMediationError?
) {
    if let error = error {
        print("Interstitial with Placement Name:\(placementName) failed to show with error:\(error.localizedDescription)")
    } else {
        print("Interstitial with Placement Name:\(placementName) didShow")
    }
}

func heliumInterstitialAd(
    withPlacementName placementName: String,
    didCloseWithError error: ChartboostMediationSDK.ChartboostMediationError?
) {
    if let error = error {
        print("Interstitial with Placement Name:\(placementName) failed to close with error:\(error.localizedDescription)")
    } else {
        print("Interstitial with Placement Name:\(placementName) didClose")
    }
}

func heliumInterstitialAdDidRecordImpression(withPlacementName placementName: String) {
    print("Impression recorded")
}


- (void)heliumInterstitialAdWithPlacementName:(NSString * _Nonnull)placementName
                            requestIdentifier:(NSString * _Nonnull)requestIdentifier
                               winningBidInfo:(NSDictionary<NSString *,id> * _Nullable)winningBidInfo
                             didLoadWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Interstitial with Placement Name:%@ failed to load with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Interstitial with Placement Name:%@ didLoad", placementName);
    }
}

- (void)heliumInterstitialAdWithPlacementName:(NSString * _Nonnull)placementName
                             didShowWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Interstitial with Placement Name:%@ failed to show with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Interstitial with Placement Name:%@ didShow", placementName);
    }
}

- (void)heliumInterstitialAdWithPlacementName:(NSString * _Nonnull)placementName
                            didCloseWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Interstitial with Placement Name:%@ failed to close with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Interstitial with Placement Name:%@ didClose", placementName);
    }
}

- (void)heliumInterstitialAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");
}


- (void)heliumInterstitialAdWithPlacementName:(NSString*)placementName
                           didLoadWithError:(HeliumError *)error
{
  if (error)
    {
    NSLog(@"Interstitial with Placement Name:%@ failed to load with error:%@",placementName,error.description);
    }
  else
    {
    NSLog(@"Interstitial with Placement Name:%@ didLoad",placementName);
    }
}
 
- (void)heliumInterstitialAdWithPlacementName:(NSString*)placementName
                           didShowWithError:(HeliumError *)error
{
  if (error)
    {
    NSLog(@"Interstitial with Placement Name:%@ failed to show with error:%@",placementName,error.description);
    }
  else
    {
    NSLog(@"Interstitial with Placement Name:%@ didSHow",placementName);
    }
}
 
- (void)heliumInterstitialAdWithPlacementName:(NSString*)placementName
                          didCloseWithError:(HeliumError *)error
{
  if (error)
    {
    NSLog(@"Interstitial with Placement Name:%@ failed to close with error:%@",placementName,error.description);
    }
  else
    {
    NSLog(@"Interstitial with Placement Name:%@ didClose",placementName);
    }
}
 
- (void)heliumInterstitialAdWithPlacementName:(NSString*)placementName
            didLoadWinningBidWithInfo:(NSDictionary *)bidInfo
{
    NSLog(@"Placement:%@,%@",placementName,bidInfo);
}

- (void)heliumInterstitialAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");  
}

Rewarded Ad Delegates

Implement the CHBHeliumRewardedAdDelegate protocol to receive notifications about rewarded ads loading, displaying, and closing.

@interface ViewController () <CHBHeliumRewardedAdDelegate>
extension ViewController: CHBHeliumRewardedAdDelegate

This will allow you to implement the following methods:

func heliumRewardedAd(
        withPlacementName placementName: String,
        requestIdentifier: String,
        winningBidInfo: [String : Any]?,
        didLoadWithError error: ChartboostMediationSDK.ChartboostMediationError?
    ) {
        if let error = error {
            print("Rewarded with Placement Name:\(placementName) failed to load with error:\(error.localizedDescription)")
        } else {
            print("Rewarded with Placement Name:\(placementName) didLoad")
        }
    }

    func heliumRewardedAd(
        withPlacementName placementName: String,
        didShowWithError error: ChartboostMediationSDK.ChartboostMediationError?
    ) {
        if let error = error {
            print("Rewarded with Placement Name:\(placementName) failed to show with error:\(error.localizedDescription)")
        } else {
            print("Rewarded with Placement Name:\(placementName) didShow")
        }
    }

    func heliumRewardedAd(
        withPlacementName placementName: String,
        didCloseWithError error: ChartboostMediationSDK.ChartboostMediationError?
    ) {
        if let error = error {
            print("Rewarded with Placement Name:\(placementName) failed to close with error:\(error.localizedDescription)")
        } else {
            print("Rewarded with Placement Name:\(placementName) didClose")
        }
    }

    func heliumRewardedAdDidGetReward(withPlacementName placementName: String) {
        print("Got Reward for RV with placementName:\(placementName)")
    }

    func heliumRewardedAdDidRecordImpression(withPlacementName placementName: String) {
        print("Impression recorded")
    }

- (void)heliumRewardedAdWithPlacementName:(NSString * _Nonnull)placementName
                        requestIdentifier:(NSString * _Nonnull)requestIdentifier
                           winningBidInfo:(NSDictionary<NSString *,id> * _Nullable)winningBidInfo
                         didLoadWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Rewarded with Placement Name:%@ failed to load with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Rewarded with Placement Name:%@ didLoad", placementName);
    }
}

- (void)heliumRewardedAdWithPlacementName:(NSString * _Nonnull)placementName
                         didShowWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Rewarded with Placement Name:%@ failed to show with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Rewarded with Placement Name:%@ didShow", placementName);
    }
}

- (void)heliumRewardedAdWithPlacementName:(NSString * _Nonnull)placementName
                        didCloseWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Rewarded with Placement Name:%@ failed to close with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Rewarded with Placement Name:%@ didClose", placementName);
    }
}

- (void)heliumRewardedAdDidGetRewardWithPlacementName:(NSString * _Nonnull)placementName
{
    NSLog(@"Got Reward for RV with placementName:%@", placementName);
}

- (void)heliumRewardedAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");
}


- (void)heliumRewardedAdWithPlacementName:(NSString*)placementName
                            didLoadWithError:(HeliumError *)error
{
  if (error)
    {
     NSLog(@"Rewarded with Placement Name:%@ failed to load with error:%@",placementName,error.description);
    }
  else
    {
     NSLog(@"Rewarded with Placement Name:%@ didLoad",placementName);
    }
}
 
- (void)heliumRewardedAdWithPlacementName:(NSString*)placementName
                            didShowWithError:(HeliumError *)error
{
  if (error)
    {
    NSLog(@"Rewarded with Placement Name:%@ failed to show with error:%@",placementName,error.description);
    }
  else
    {
     NSLog(@"Rewarded with Placement Name:%@ didSHow",placementName);
    }
}
 
- (void)heliumRewardedAdWithPlacementName:(NSString*)placementName
                           didCloseWithError:(HeliumError *)error
{
  if (error)
    {
    NSLog(@"Rewarded with Placement Name:%@ failed to close with error:%@",placementName,error.description);
    }
  else
    {
    NSLog(@"Rewarded with Placement Name:%@ didClose",placementName);
    }
}
 
- (void)heliumRewardedAdWithPlacementName:(NSString*)placementName
                                didGetReward:(NSInteger)reward {
  NSLog(@"Got Reward for RV with placementName:%@, reward: %ld",placementName, (long)reward);
}
 
- (void)heliumRewardedAdWithPlacementName:(NSString*)placementName
                  didLoadWinningBidWithInfo:(NSDictionary *)bidInfo
{
  NSLog(@"Placement:%@,%@",placementName,bidInfo);
}

- (void)heliumRewardedAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");  
}

Banner Ad Delegates

Implement the CHBHeliumBannerAdDelegate protocol to receive notifications about banner ads loading, displaying, and closing.

extension ViewController: HeliumBannerAdDelegate
@interface ViewController () <CHBHeliumBannerAdDelegate>

This will allow you to implement the following methods:

func heliumBannerAd(
        placementName: String,
        requestIdentifier: String,
        winningBidInfo: [String : Any]?,
        didLoadWithError error: ChartboostMediationSDK.ChartboostMediationError?
    ) {
        if let error = error {
            print("Banner with Placement Name:\(placementName) failed to load with error:\(error.localizedDescription)")
        } else {
            print("Banner with Placement Name:\(placementName) didLoad")
        }
    }

    func heliumBannerAd(
        placementName: String,
        didClickWithError error: ChartboostMediationError?
    ) {
        if let error = error {
            print("Banner with Placement Name:\(placementName) didClick with error:\(error.localizedDescription)")
        } else {
            print("Banner with Placement Name:\(placementName) didClick")
        }
    }

    func heliumBannerAdDidRecordImpression(placementName: String) {
        print("Impression recorded")
    }
- (void)heliumBannerAdWithPlacementName:(NSString * _Nonnull)placementName
                      requestIdentifier:(NSString * _Nonnull)requestIdentifier
                         winningBidInfo:(NSDictionary<NSString *,id> * _Nullable)winningBidInfo
                       didLoadWithError:(ChartboostMediationError * _Nullable)error
{
    if (error)
    {
        NSLog(@"Banner with Placement Name:%@ failed to load with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Banner with Placement Name:%@ didLoad", placementName);
    }
}

- (void)heliumBannerAdWithPlacementName:(NSString *)placementName
                      didClickWithError:(ChartboostMediationError *)error
{
    if (error)
    {
        NSLog(@"Banner with Placement Name:%@ didClick with error:%@", placementName, error.description);
    }
    else
    {
        NSLog(@"Banner with Placement Name:%@ didClick", placementName);
    }
}

- (void)heliumBannerAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");
}

- (void)heliumBannerAdWithPlacementName:(NSString *)placementName didLoadWithError:(HeliumError *)error {
    if (error)
    {
        [self.txtOutput addNewLine:[NSString stringWithFormat:@"Banner with Placement Id:%@ failed to load with error:%@",placementName,error.errorDescription]];
        NSLog(@"Banner with Placement Id:%@ failed to load with error:%@",placementName,error.errorDescription);
    }
    else
    {
        [self.txtOutput addNewLine:[NSString stringWithFormat:@"Banner with Placement Id:%@ didLoad",placementName]];
        NSLog(@"Banner with Placement Id:%@ didLoad",placementName);
    }
}
 
- (void)heliumBannerAdWithPlacementName:(NSString*)placementName
                    didLoadWinningBidWithInfo:(NSDictionary *)bidInfo
{
    [self.txtOutput addNewLine:[NSString stringWithFormat:@"Banner with Placement Id:%@ didLoadWiningBid:%@",placementName,bidInfo[@"price"]]];
    NSLog(@"Placement:%@,%@",placementName,bidInfo);
}
 
- (void)heliumBannerAdWithPlacementName:(NSString *)placementName didClickWithError:(HeliumError *)error
{
    if (error) {
        [self.txtOutput addNewLine:[NSString stringWithFormat:@"Banner with Placement Id:%@ didClick with error: %@", placementName, error]];
    } else {
        [self.txtOutput addNewLine:[NSString stringWithFormat:@"Banner with Placement Id:%@ didClick", placementName]];
    }
}

- (void)heliumBannerAdDidRecordImpressionWithPlacementName:(NSString *)placementName
{
    NSLog(@"Impression recorded");  
}

📘

Note

- (void)heliumBannerAdWithPlacementName:(NSString _)placementName didLoadWinningBidWithInfo:(NSDictionary<NSString _, id> _)bidInfo will only return information for non-refresh banner configurations.