| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | ////  ALMediationAdapterRouter.h//  AppLovinSDK////  Created by Christopher Cong on 10/25/18.//#import <UIKit/UIKit.h>#import <AppLovinSDK/MAAdapter.h>#import <AppLovinSDK/MAAdViewAdapterDelegate.h>#import <AppLovinSDK/MAAppOpenAdapterDelegate.h>#import <AppLovinSDK/MAInterstitialAdapterDelegate.h>#import <AppLovinSDK/MARewardedAdapterDelegate.h>@class MAAdapterError;@class MAReward;NS_ASSUME_NONNULL_BEGIN/** * For ad networks with a singleton callback pattern, this class is responsible for routing their events to our mediation adapters. * * This class should only be initialized once per adapter and must be subclassed to be used. Use -sharedInstance to create and access a router. * Subclasses should map an ad network's ad events to the methods marked under Ad Network Event Router. **/@interface ALMediationAdapterRouter : NSObject/** * For ad networks whose initialization is completed asynchronously, the router will need to retain the completionHandler until the initialization is completed. * Be sure to set this to nil after calling it. *///TODO: remove this once adapter routers have moved away from initialization.@property (nonatomic, copy, nullable) void(^completionHandler)(void);/** * Mediation adapters should call this when loading an interstitial ad. * * @param adapter             Mediation adapter responsible for the mediated ad request. * @param delegate            Delegate that is listening to the mediation adapter events. * @param placementIdentifier Placement identifier requested for the ad load. */- (void)addInterstitialAdapter:(id<MAAdapter>)adapter                      delegate:(id<MAInterstitialAdapterDelegate>)delegate        forPlacementIdentifier:(NSString *)placementIdentifier;/** * Mediation adapters should call this when loading an app open ad. * * @param adapter             Mediation adapter responsible for the mediated ad request. * @param delegate            Delegate that is listening to the mediation adapter events. * @param placementIdentifier Placement identifier requested for the ad load. */- (void)addAppOpenAdapter:(id<MAAdapter>)adapter                 delegate:(id<MAAppOpenAdapterDelegate>)delegate   forPlacementIdentifier:(NSString *)placementIdentifier;/** * Mediation adapters should call this when loading a rewarded ad. * * @param adapter             Mediation adapter responsible for the mediated ad request. * @param delegate            Delegate that is listening to the mediation adapter events. * @param placementIdentifier Placement identifier requested for the ad load. */- (void)addRewardedAdapter:(id<MAAdapter>)adapter                  delegate:(id<MARewardedAdapterDelegate>)delegate    forPlacementIdentifier:(NSString *)placementIdentifier;/** * Mediation adapters should call this when loading an ad view. * * @param adapter             Mediation adapter responsible for the mediated ad request. * @param delegate            Delegate that is listening to the mediation adapter events. * @param placementIdentifier Placement identifier requested for the ad load. * @param adView              The ad view for the adapter. May be null. */- (void)addAdViewAdapter:(id<MAAdapter>)adapter                delegate:(id<MAAdViewAdapterDelegate>)delegate  forPlacementIdentifier:(NSString *)placementIdentifier                  adView:(nullable UIView *)adView;/** * Updates the underlying ad view for the given placement id. This is useful if by the time an adapter is added * to the router's map, there is no ad view present yet. (e.g. UnityAds). * * @param adView              The ad view to update for the adapter. * @param placementIdentifier Placement identifier for the ad view. */- (void)updateAdView:(UIView *)adView forPlacementIdentifier:(NSString *)placementIdentifier;/** * Mediation should call this on when showing an ad. */- (void)addShowingAdapter:(id<MAAdapter>)showingAdapter;/** * Mediation adapters should call this on -destroy. */- (void)removeAdapter:(id<MAAdapter>)adapter forPlacementIdentifier:(NSString *)placementIdentifier;#pragma mark - Ad Network Event Router- (void)didLoadAdForPlacementIdentifier:(NSString *)placementIdentifier;- (void)didLoadAdForPlacementIdentifier:(NSString *)placementIdentifier withExtraInfo:(nullable NSDictionary<NSString *, id> *)extraInfo;- (void)didFailToLoadAdForPlacementIdentifier:(NSString *)placementIdentifier error:(MAAdapterError *)error;- (void)didDisplayAdForPlacementIdentifier:(NSString *)placementIdentifier;- (void)didDisplayAdForPlacementIdentifier:(NSString *)placementIdentifier withExtraInfo:(nullable NSDictionary<NSString *, id> *)extraInfo;- (void)didFailToDisplayAdForPlacementIdentifier:(NSString *)placementIdentifier error:(MAAdapterError *)error;- (void)didClickAdForPlacementIdentifier:(NSString *)placementIdentifier;- (void)didHideAdForPlacementIdentifier:(NSString *)placementIdentifier;// Rewarded delegate methods- (void)didStartRewardedVideoForPlacementIdentifier:(NSString *)placementIdentifier__deprecated_msg("This API is deprecated because not all adapters support this callback. Please use -[ALMediationAdapterRouter didDisplayAdForPlacementIdentifier:] instead");- (void)didCompleteRewardedVideoForPlacementIdentifier:(NSString *)placementIdentifier__deprecated_msg("This API is deprecated because not all adapters support this callback. Please use -[ALMediationAdapterRouter didHideAdForPlacementIdentifier:] instead");- (void)didRewardUserForPlacementIdentifier:(NSString *)placementIdentifier withReward:(MAReward *)reward;// AdView delegate methods- (void)didExpandAdForPlacementIdentifier:(NSString *)placementIdentifier;- (void)didCollapseAdForPlacementIdentifier:(NSString *)placementIdentifier;#pragma mark - Adapter Reward Utility Methods- (MAReward *)rewardForPlacementIdentifier:(NSString *)placementIdentifier;- (BOOL)shouldAlwaysRewardUserForPlacementIdentifier:(NSString *)placementIdentifier;#pragma mark - Logging Methods- (void)log:(NSString *)format, ...;- (void)log:(NSString *)message becauseOf:(NSException *)exception;#pragma mark - Singleton/** * This implementation uses the Registry Pattern to create/return the shared instance for a given subclass caller. */+ (instancetype)sharedInstance;@endNS_ASSUME_NONNULL_END
 |