#import "AmazonManager.h" #import "AmazonUnityCallback.h" #import "DTBBannerDelegate.h" #import "DTBInterstitialDelegate.h" /////////////////////////////////////////////////////////////////////////////////////////////////// #pragma mark - Helpers // Converts C style string to NSString #define GetStringParam(_x_) ((_x_) != NULL ? [NSString stringWithUTF8String:_x_] : [NSString stringWithUTF8String:""]) #define GetNullableStringParam(_x_) ((_x_) != NULL ? [NSString stringWithUTF8String:_x_] : nil) static char* amazonStringCopy(NSString* input) { const char* string = [input UTF8String]; return string ? strdup(string) : NULL; } void _amazonInitialize(const char* appKey) { [[AmazonManager sharedManager] initialize:GetStringParam(appKey)]; } bool _amazonIsInitialized(){ return [[AmazonManager sharedManager] isInitialized]; } void _amazonSetUseGeoLocation(bool flag){ [[AmazonManager sharedManager] setUseGeoLocation:flag]; } bool _amazonGetUseGeoLocation(){ return [[AmazonManager sharedManager] getUseGeoLocation]; } void _amazonSetLogLevel(int logLevel){ [[AmazonManager sharedManager] setLogLevel:logLevel]; } bool _amazonGetLogLevel(){ return [[AmazonManager sharedManager] getLogLevel]; } void _amazonSetTestMode(bool flag){ [[AmazonManager sharedManager] setTestMode:flag]; } bool _amazonIsTestModeEnabled(){ return [[AmazonManager sharedManager] isTestModeEnabled]; } DTBAdSize* _createBannerAdSize(int width, int height, const char* uuid){ return [[AmazonManager sharedManager] createBannerAdSize:width height:height uuid:GetStringParam(uuid)]; } DTBAdSize* _createVideoAdSize(int width, int height, const char* uuid){ return [[AmazonManager sharedManager] createVideoAdSize:width height:height uuid:GetStringParam(uuid)]; } DTBAdSize* _createInterstitialAdSize(const char* uuid){ return [[AmazonManager sharedManager] createInterstitialAdSize:GetStringParam(uuid)]; } DTBAdLoader* _createAdLoader(){ return [[AmazonManager sharedManager]createAdLoader]; } void _setSizes(DTBAdLoader* adLoader, DTBAdSize* size){ [[AmazonManager sharedManager]setSizes:adLoader size:size]; } void _loadAd(DTBAdLoader* adLoader, AmazonUnityCallback* callback){ [[AmazonManager sharedManager]loadAd:adLoader callback:callback]; } void _loadSmartBanner(DTBAdLoader* adLoader, AmazonUnityCallback* callback){ [[AmazonManager sharedManager]loadSmartBanner:adLoader callback:callback]; } void _amazonSetMRAIDPolicy(int policy){ [[AmazonManager sharedManager] setMRAIDPolicy:(DTBMRAIDPolicy)policy]; } int _amazonGetMRAIDPolicy(){ return [[AmazonManager sharedManager] getMRAIDPolicy]; } void _amazonSetMRAIDSupportedVersions(const char* newVersion){ [[AmazonManager sharedManager] setMRAIDSupportedVersions:GetStringParam(newVersion)]; } void _amazonSetListeners(DTBAdCallbackClientRef* ptr, AmazonUnityCallback* callbackPtr, SuccessResponse onSuccessCallback, ErrorResponse onErrorCallback) { [callbackPtr setListeners:ptr success:onSuccessCallback errorCallback:onErrorCallback]; } void _amazonSetListenersWithInfo(DTBAdCallbackClientRef* ptr, AmazonUnityCallback* callbackPtr, SuccessResponse onSuccessCallback, ErrorResponseWithInfo onErrorCallbackWithInfo) { [callbackPtr setListenersWithInfo:ptr success:onSuccessCallback errorCallbackWithInfo:onErrorCallbackWithInfo]; } void _setBannerDelegate(DTBCallbackBannerRef* ptr, DTBBannerDelegate* callbackPtr, DTBAdDidLoadType adLoad, DTBAdFailedToLoadType adFailLoad, DTBBannerWillLeaveApplicationType leaveApp, DTBImpressionFiredType impFired) { [callbackPtr setDelegate:ptr adLoad:adLoad adFailLoad:adFailLoad leaveApp:leaveApp impFired:impFired]; } void _setInterstitialDelegate(DTBCallbackInterstitialRef* ptr, DTBInterstitialDelegate* callbackPtr, DTBInterstitialDidLoadType adLoad, DTBDidFailToLoadAdWithErrorCodeType adFailLoad, DTBInterstitialWillLeaveApplicationType leaveApp, DTBInterstitialImpressionFiredType impFired, DTBInterstitialDidPresentScreenType didOpen, DTBInterstitialDidDismissScreenType didDismiss) { [callbackPtr setDelegate:ptr adLoad:adLoad adFailLoad:adFailLoad leaveApp:leaveApp impFired:impFired didOpen:didOpen didDismiss:didDismiss]; } AmazonUnityCallback* _createCallback() { return [[AmazonManager sharedManager] createCallback]; } DTBBannerDelegate* _createBannerDelegate() { return [[AmazonManager sharedManager] createBannerDelegate]; } DTBInterstitialDelegate* _createInterstitialDelegate() { return [[AmazonManager sharedManager] createInterstitialDelegate]; } DTBFetchManager* _getFetchManager(int autoRefreshID, bool isSmartBanner){ return [[AmazonManager sharedManager] getFetchManager:autoRefreshID isSmartBanner:isSmartBanner]; } void _fetchManagerPop(DTBFetchManager* fetchManager){ [[AmazonManager sharedManager] fetchManagerPop:fetchManager]; } void _putCustomTarget(DTBAdLoader* adLoader, const char* key, const char* value){ [[AmazonManager sharedManager] putCustomTarget:adLoader key:GetStringParam(key) value:GetStringParam(value)]; } void _createFetchManager(DTBAdLoader* adLoader, bool isSmartBanner){ [[AmazonManager sharedManager] createFetchManager:adLoader isSmartBanner:isSmartBanner]; } void _startFetchManager(DTBFetchManager* fetchManager){ [[AmazonManager sharedManager] startFetchManager:fetchManager]; } void _stopFetchManager(DTBFetchManager* fetchManager){ [[AmazonManager sharedManager] stopFetchManager:fetchManager]; } bool _isEmptyFetchManager(DTBFetchManager* fetchManager){ return [[AmazonManager sharedManager] isEmptyFetchManager:fetchManager]; } void _destroyFetchManager(int autoRefreshID){ [[AmazonManager sharedManager] destroyFetchManager:autoRefreshID]; } void _setSlotGroup(DTBAdLoader* adLoader, const char* slotGroupName){ [[AmazonManager sharedManager] setSlotGroup:adLoader slotGtoupName:GetStringParam(slotGroupName)]; } DTBSlotGroup* _createSlotGroup(const char* slotGroupName){ return [[AmazonManager sharedManager] createSlotGroup:GetStringParam(slotGroupName)]; } void _addSlot(DTBSlotGroup* slot, DTBAdSize* size){ [[AmazonManager sharedManager] addSlot:slot size:size]; } void _addSlotGroup(DTBSlotGroup* slot){ [[AmazonManager sharedManager] addSlotGroup:slot]; } const char* _fetchAmznSlots(DTBAdResponse* response){ return amazonStringCopy([[AmazonManager sharedManager] fetchAmznSlots:response]); } int _fetchAdHeight(DTBAdResponse* response){ return [[AmazonManager sharedManager] fetchAdHeight:response]; } int _fetchAdWidth(DTBAdResponse* response){ return [[AmazonManager sharedManager] fetchAdWidth:response]; } const char* _fetchMediationHints(DTBAdResponse* response, bool isSmartBanner){ NSString* str = [[AmazonManager sharedManager] fetchMediationHints:response isSmart:isSmartBanner]; return amazonStringCopy(str); } void _setCMPFlavor (int cFlavor){ [[AmazonManager sharedManager] setCMPFlavor:(DTBCMPFlavor)cFlavor]; } void _setConsentStatus (int consentStatus){ [[AmazonManager sharedManager] setConsentStatus:(DTBConsentStatus)consentStatus]; } NSMutableArray* _createArray(){ return [[AmazonManager sharedManager] createArray]; } void _addToArray (NSMutableArray* dictionary, int item) { [[AmazonManager sharedManager] addToArray:dictionary item:item]; } void _setVendorList(NSMutableArray* dictionary){ [[AmazonManager sharedManager] setVendorList:dictionary]; } void _setAutoRefreshNoArgs(DTBAdLoader* adLoader){ [[AmazonManager sharedManager] setAutoRefresh:adLoader]; } void _setAutoRefresh(DTBAdLoader* adLoader, int secs){ [[AmazonManager sharedManager] setAutoRefresh:adLoader secs:secs]; } void _pauseAutoRefresh(DTBAdLoader* adLoader){ [[AmazonManager sharedManager] pauseAutorefresh:adLoader]; } void _stopAutoRefresh(DTBAdLoader* adLoader){ [[AmazonManager sharedManager] stopAutoRefresh:adLoader]; } void _resumeAutoRefresh(DTBAdLoader* adLoader){ [[AmazonManager sharedManager] resumeAutoRefresh:adLoader]; } void _setAPSPublisherExtendedIdFeatureEnabled(bool isEnabled) { [[AmazonManager sharedManager] setAPSPublisherExtendedIdFeatureEnabled:isEnabled]; } void _addCustomAttribute(const char *withKey, const void *value) { [[AmazonManager sharedManager] addCustomAttribute:GetStringParam(withKey) value:GetStringParam(value)]; } void _removeCustomAttribute(const char* forKey) { [[AmazonManager sharedManager] removeCustomAttribute:GetStringParam(forKey)]; } void _setAdNetworkInfo(int adNetworkId) { DTBAdNetworkInfo *dtbAdNetworkInfo = [[DTBAdNetworkInfo alloc]initWithNetworkName:(DTBAdNetwork)adNetworkId]; [[AmazonManager sharedManager] setAdNetworkInfo:dtbAdNetworkInfo]; } void _setLocalExtras(const char *adUnitId, NSDictionary *localExtras) { [DTBAds setLocalExtras:GetStringParam(adUnitId) localExtras:localExtras]; } DTBAdBannerDispatcher* _createAdView(int width, int height, DTBBannerDelegate* delegate) { CGRect rect = CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height); return [[DTBAdBannerDispatcher alloc] initWithAdFrame:rect delegate:delegate]; } DTBAdInterstitialDispatcher* _createAdInterstitial(DTBInterstitialDelegate* delegate) { return [[DTBAdInterstitialDispatcher alloc] initWithDelegate:delegate]; } void _fetchBannerAd(DTBAdBannerDispatcher* dispatcher, DTBAdResponse* adResponse) { [dispatcher fetchBannerAdWithParameters:[adResponse mediationHints]]; } void _fetchInterstitialAd(DTBAdInterstitialDispatcher* dispatcher, DTBAdResponse* adResponse) { [dispatcher fetchAdWithParameters:[adResponse mediationHints]]; } void _showInterstitial(DTBAdInterstitialDispatcher* dispatcher) { [[AmazonManager sharedManager] showInterstitialAd:dispatcher]; } NSDictionary* _getMediationHintsDict(DTBAdResponse* response, bool isSmartBanner){ return [[AmazonManager sharedManager] getMediationHintsDict:response isSmart:isSmartBanner]; } void _setRefreshFlag(DTBAdLoader* adLoader, bool flag) { [adLoader setRefreshFlag:flag]; } DTBAdLoader* _getAdLoaderFromResponse(DTBAdResponse* adResponse) { return [adResponse getAdLoader]; } DTBAdLoader* _getAdLoaderFromAdError(DTBAdErrorInfo* errorInfo) { return [errorInfo getAdLoader]; }