commit
						5ab0b8da41
					
				|  | @ -0,0 +1,2 @@ | ||||||
|  | # Auto detect text files and perform LF normalization | ||||||
|  | * text=auto | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | # Mac auto-generated system files | ||||||
|  | *.DS_Store* | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 474c0b17d00314c9d8b205e3c753661e | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | { | ||||||
|  |     "name": "Amazon", | ||||||
|  |     "rootNamespace": "", | ||||||
|  |     "references": [ | ||||||
|  |         "MaxSdk", | ||||||
|  |         "MaxSdk.Scripts" | ||||||
|  |     ], | ||||||
|  |     "includePlatforms": [], | ||||||
|  |     "excludePlatforms": [], | ||||||
|  |     "allowUnsafeCode": false, | ||||||
|  |     "overrideReferences": false, | ||||||
|  |     "precompiledReferences": [], | ||||||
|  |     "autoReferenced": true, | ||||||
|  |     "defineConstraints": [], | ||||||
|  |     "versionDefines": [], | ||||||
|  |     "noEngineReferences": false | ||||||
|  | } | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 6beff6c8cf8014e6084bc2f82cc4cef0 | ||||||
|  | AssemblyDefinitionImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: c161f427aca604d4d81f018fddaae5d2 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: fd97fc7641615462abc63e027208b9a2 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,16 @@ | ||||||
|  | Pod::Spec.new do |s| | ||||||
|  |   s.name                  = 'Amazon-SDK-Plugin' | ||||||
|  |   s.version               = '5.12.1' | ||||||
|  |   s.summary               = 'Unity wrapper for APS iOS SDK' | ||||||
|  |   s.homepage              = 'https://github.com/amazon/amazon-unity-sdk' | ||||||
|  |   s.license               = { :type => 'Amazon', :file => 'APS_IOS_SDK-4.4.1/LICENSE.txt' } | ||||||
|  |   s.author                = { 'Amazon' => 'aps-github@amazon.com' } | ||||||
|  |   s.ios.deployment_target = '12.5' | ||||||
|  |   s.source                = { :tag => "v#{s.version}" } | ||||||
|  |   s.source_files          = '*.{h,m,mm}' | ||||||
|  |    | ||||||
|  |   s.dependency 'AmazonPublisherServicesSDK' | ||||||
|  |   s.pod_target_xcconfig = { | ||||||
|  |     'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules', | ||||||
|  |   } | ||||||
|  | end | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: ce7a667caa6f64752b219fe8edd61617 | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,283 @@ | ||||||
|  | #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* _fetchMoPubKeywords(DTBAdResponse* response){ | ||||||
|  |     return amazonStringCopy([[AmazonManager sharedManager] fetchMoPubKeywords:response]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 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]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,104 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: bc75c2542fbb6469798f0dc4baf0100e | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude LinuxUniversal: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   - first: | ||||||
|  |       tvOS: tvOS | ||||||
|  |     second: | ||||||
|  |       enabled: 1 | ||||||
|  |       settings: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,71 @@ | ||||||
|  | #import <Foundation/Foundation.h> | ||||||
|  | #import <UIKit/UIKit.h> | ||||||
|  | 
 | ||||||
|  | #import <DTBiOSSDK/DTBiOSSDK.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdCallback.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdBannerDispatcher.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdInterstitialDispatcher.h> | ||||||
|  | 
 | ||||||
|  | #import "AmazonUnityCallback.h" | ||||||
|  | #import "DTBBannerDelegate.h" | ||||||
|  | #import "DTBInterstitialDelegate.h" | ||||||
|  | 
 | ||||||
|  | @interface AmazonManager: NSObject { } | ||||||
|  | + (AmazonManager*)sharedManager; | ||||||
|  | - (void)initialize:(NSString*)keywords; | ||||||
|  | - (BOOL)isInitialized; | ||||||
|  | - (void)setUseGeoLocation:(bool)flag; | ||||||
|  | - (BOOL)getUseGeoLocation; | ||||||
|  | - (void)setLogLevel:(int)logLevel; | ||||||
|  | - (int)getLogLevel; | ||||||
|  | - (void)setTestMode:(bool)flag; | ||||||
|  | - (BOOL)isTestModeEnabled; | ||||||
|  | - (DTBAdSize*)createBannerAdSize:(int)width height:(int)height uuid:(NSString*)uuid; | ||||||
|  | - (DTBAdSize*)createVideoAdSize:(int)width height:(int)height uuid:(NSString*)uuid; | ||||||
|  | - (DTBAdSize*)createInterstitialAdSize:(NSString*)uuid; | ||||||
|  | - (DTBAdLoader*)createAdLoader; | ||||||
|  | - (void)setSizes:(DTBAdLoader*)adLoader size:(DTBAdSize*)size; | ||||||
|  | - (void)loadAd:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback; | ||||||
|  | - (void)loadSmartBanner:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback; | ||||||
|  | - (void)setMRAIDPolicy:(DTBMRAIDPolicy)policy; | ||||||
|  | - (int)getMRAIDPolicy; | ||||||
|  | - (void)setMRAIDSupportedVersions:(NSArray<NSString *> *)versions; | ||||||
|  | - (NSString*)jsonFromDict:(NSDictionary *)dict; | ||||||
|  | - (AmazonUnityCallback*)createCallback; | ||||||
|  | - (DTBBannerDelegate*)createBannerDelegate; | ||||||
|  | - (DTBInterstitialDelegate*)createInterstitialDelegate; | ||||||
|  | - (void)createFetchManager:(DTBAdLoader*)adLoader isSmartBanner:(BOOL)isSmartBanner; | ||||||
|  | - (DTBFetchManager*)getFetchManager:(int)slotType isSmartBanner:(BOOL)isSmartBanner; | ||||||
|  | -(void)fetchManagerPop:(DTBFetchManager*)fetchManager; | ||||||
|  | -(void)putCustomTarget:(DTBAdLoader*)adLoader key:(NSString*)key value:(NSString*)value; | ||||||
|  | -(void)startFetchManager:(DTBFetchManager*)fetchManager; | ||||||
|  | -(void)stopFetchManager:(DTBFetchManager*)fetchManager; | ||||||
|  | -(BOOL)isEmptyFetchManager:(DTBFetchManager*)fetchManager; | ||||||
|  | -(void)destroyFetchManager:(int)slotType; | ||||||
|  | -(void)setSlotGroup:(DTBAdLoader*)adLoader  slotGtoupName:(NSString*)slotGtoupName; | ||||||
|  | -(DTBSlotGroup*)createSlotGroup:(NSString*)slotGroupName; | ||||||
|  | -(void)addSlot:(DTBSlotGroup*)slot size:(DTBAdSize*)size; | ||||||
|  | -(void)addSlotGroup:(DTBSlotGroup*)group; | ||||||
|  | -(NSString*)fetchMoPubKeywords:(DTBAdResponse*)response; | ||||||
|  | -(NSString*)fetchAmznSlots:(DTBAdResponse*)response; | ||||||
|  | -(int)fetchAdWidth:(DTBAdResponse*)response; | ||||||
|  | -(int)fetchAdHeight:(DTBAdResponse*)response; | ||||||
|  | -(NSString*)fetchMediationHints:(DTBAdResponse*)response isSmart:(BOOL)isSmart; | ||||||
|  | -(void)setCMPFlavor:(DTBCMPFlavor)cFlavor; | ||||||
|  | -(void)setConsentStatus:(DTBConsentStatus)consentStatus; | ||||||
|  | -(NSMutableArray*)createArray; | ||||||
|  | -(void)addToArray:(NSMutableArray*)dictionary item:(int)item; | ||||||
|  | -(void)setVendorList:(NSMutableArray*)dictionary; | ||||||
|  | -(void)setAutoRefresh:(DTBAdLoader*)adLoader; | ||||||
|  | -(void)setAutoRefresh:(DTBAdLoader*)adLoader secs:(int)secs; | ||||||
|  | -(void)pauseAutorefresh:(DTBAdLoader*)adLoader; | ||||||
|  | -(void)stopAutoRefresh:(DTBAdLoader*)adLoader; | ||||||
|  | -(void)resumeAutoRefresh:(DTBAdLoader*)adLoader; | ||||||
|  | -(void)setAPSPublisherExtendedIdFeatureEnabled:(BOOL)isEnabled; | ||||||
|  | -(void)addCustomAttribute:(NSString *)withKey value:(id)value; | ||||||
|  | -(void)removeCustomAttribute:(NSString *)forKey; | ||||||
|  | -(void)setAdNetworkInfo:(DTBAdNetworkInfo *)dtbAdNetworkInfo; | ||||||
|  | -(void)setLocalExtras:(NSString *)adUnitId localExtras:(NSDictionary *)localExtras; | ||||||
|  | -(NSDictionary *)getMediationHintsDict:(DTBAdResponse*)response isSmart:(BOOL)isSmart; | ||||||
|  | -(void)showInterstitialAd:(DTBAdInterstitialDispatcher*)dispatcher; | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,89 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 9d0a8448aa0c147e8a0225de1609f269 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude LinuxUniversal: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: LinuxUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,295 @@ | ||||||
|  | #import "AmazonManager.h" | ||||||
|  | 
 | ||||||
|  | @implementation AmazonManager | ||||||
|  | 
 | ||||||
|  | #pragma mark NSObject | ||||||
|  | 
 | ||||||
|  | + (AmazonManager*)sharedManager | ||||||
|  | { | ||||||
|  |     static AmazonManager* sharedManager = nil; | ||||||
|  | 
 | ||||||
|  |     if (!sharedManager) | ||||||
|  |         sharedManager = [[AmazonManager alloc] init]; | ||||||
|  | 
 | ||||||
|  |     return sharedManager; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)initialize:(NSString*)keywords | ||||||
|  | { | ||||||
|  |     [[DTBAds sharedInstance] setAppKey: keywords]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (BOOL)isInitialized | ||||||
|  | { | ||||||
|  |     return [[DTBAds sharedInstance] isReady]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setUseGeoLocation:(bool)flag | ||||||
|  | { | ||||||
|  |     [[DTBAds sharedInstance] setUseGeoLocation:flag]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (BOOL)getUseGeoLocation | ||||||
|  | { | ||||||
|  |     return [[DTBAds sharedInstance] useGeoLocation]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setLogLevel:(int)logLevel | ||||||
|  | { | ||||||
|  |     DTBLogLevel level = (DTBLogLevel) logLevel; | ||||||
|  |     [[DTBAds sharedInstance] setLogLevel:level]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (int)getLogLevel | ||||||
|  | { | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setTestMode:(bool)flag | ||||||
|  | { | ||||||
|  |     [[DTBAds sharedInstance] setTestMode:flag]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (BOOL)isTestModeEnabled | ||||||
|  | { | ||||||
|  |     return [[DTBAds sharedInstance] testMode]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBAdSize*)createBannerAdSize:(int)width height:(int)height uuid:(NSString*)uuid{ | ||||||
|  |     return [[DTBAdSize alloc] initBannerAdSizeWithWidth:width height:height andSlotUUID:uuid]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBAdSize*)createVideoAdSize:(int)width height:(int)height uuid:(NSString*)uuid{ | ||||||
|  |     return [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:width height: height andSlotUUID: uuid];; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBAdSize*)createInterstitialAdSize:(NSString*)uuid{ | ||||||
|  |     return [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:uuid]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBAdLoader*)createAdLoader{ | ||||||
|  |     return [DTBAdLoader new]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setSizes:(DTBAdLoader*)adLoader size:(DTBAdSize*)size{ | ||||||
|  |     [adLoader setSizes:size, nil]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)loadAd:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback{ | ||||||
|  |     [adLoader loadAd:callback]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)loadSmartBanner:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback{ | ||||||
|  |     [adLoader loadSmartBanner:callback]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setMRAIDPolicy:(DTBMRAIDPolicy)policy | ||||||
|  | { | ||||||
|  |     [DTBAds sharedInstance].mraidPolicy = policy; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (int) getMRAIDPolicy{ | ||||||
|  |     return [DTBAds sharedInstance].mraidPolicy; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setMRAIDSupportedVersions:(NSString* _Nullable)versions | ||||||
|  | { | ||||||
|  |     [DTBAds sharedInstance].mraidCustomVersions = nil; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - (NSString *)jsonFromDict:(NSDictionary *)dict { | ||||||
|  |     NSError *error; | ||||||
|  |     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict | ||||||
|  |                                                        options:0 | ||||||
|  |                                                          error:&error]; | ||||||
|  |     if (!jsonData) { | ||||||
|  |         NSLog(@"Error converting JSON from VCS response dict: %@", error); | ||||||
|  |         return @""; | ||||||
|  |     } else { | ||||||
|  |         return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (AmazonUnityCallback*)createCallback{ | ||||||
|  |     AmazonUnityCallback* newCallback = [[AmazonUnityCallback alloc] init]; | ||||||
|  |     return newCallback; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBBannerDelegate*)createBannerDelegate{ | ||||||
|  |     return [[DTBBannerDelegate alloc] init]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBInterstitialDelegate*)createInterstitialDelegate{ | ||||||
|  |     return [[DTBInterstitialDelegate alloc] init]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)createFetchManager:(DTBAdLoader*)adLoader isSmartBanner:(BOOL)isSmartBanner{ | ||||||
|  |     NSError *error = [DTBFetchFactory.sharedInstance createFetchManagerForLoader:adLoader isSmartBanner:isSmartBanner]; | ||||||
|  |     if(error == nil){ | ||||||
|  |         NSLog(@"FetchManager created"); | ||||||
|  |     } else { | ||||||
|  |         NSLog(@"failed with error = %@", [error localizedDescription]); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (DTBFetchManager*)getFetchManager:(int)slotType isSmartBanner:(BOOL)isSmartBanner{ | ||||||
|  |     if( !isSmartBanner ){ | ||||||
|  |         return [[DTBFetchFactory sharedInstance] fetchManagerBySlotType:(DTBSlotType)slotType]; | ||||||
|  |     }else { | ||||||
|  |         return [[DTBFetchFactory sharedInstance] fetchManagerBySlotType:SLOT_SMART]; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)fetchManagerPop:(DTBFetchManager*)fetchManager{ | ||||||
|  |     [fetchManager pop]; | ||||||
|  | } | ||||||
|  |   | ||||||
|  | -(void)putCustomTarget:(DTBAdLoader*)adLoader key:(NSString*)key value:(NSString*)value{ | ||||||
|  |     [adLoader putCustomTarget:value withKey:key]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)startFetchManager:(DTBFetchManager*)fetchManager{ | ||||||
|  |     [fetchManager start]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)stopFetchManager:(DTBFetchManager*)fetchManager{ | ||||||
|  |     [fetchManager stop]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(BOOL)isEmptyFetchManager:(DTBFetchManager*)fetchManager{ | ||||||
|  |     return [fetchManager isEmpty]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)destroyFetchManager:(int)slotType{ | ||||||
|  |     [[DTBFetchFactory sharedInstance] removeFetchManagerForSlotType:(DTBSlotType)slotType]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setSlotGroup:(DTBAdLoader*)adLoader  slotGtoupName:(NSString*)slotGtoupName{ | ||||||
|  |     [adLoader setSlotGroup:slotGtoupName]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(DTBSlotGroup*)createSlotGroup:(NSString*)slotGroupName{ | ||||||
|  |      DTBSlotGroup *group = [[DTBSlotGroup alloc] initWithName:slotGroupName]; | ||||||
|  |     return group; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)addSlot:(DTBSlotGroup*)slot size:(DTBAdSize*)size{ | ||||||
|  |     [slot addSize:size]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)addSlotGroup:(DTBSlotGroup*)group{ | ||||||
|  |     [DTBAds.sharedInstance addSlotGroup:group]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(NSString*)fetchMoPubKeywords:(DTBAdResponse*)response { | ||||||
|  |     return [response keywordsForMopub]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(NSString*)fetchAmznSlots:(DTBAdResponse *)response { | ||||||
|  |     return [response amznSlots]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(int)fetchAdWidth:(DTBAdResponse *)response { | ||||||
|  |     DTBAdSize *adSize = [response adSize]; | ||||||
|  |     return adSize.width; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(int)fetchAdHeight:(DTBAdResponse *)response { | ||||||
|  |     DTBAdSize *adSize = [response adSize]; | ||||||
|  |     return adSize.height; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(NSString*)fetchMediationHints:(DTBAdResponse*)response isSmart:(BOOL)isSmart{ | ||||||
|  |     NSError * err; | ||||||
|  |     NSDictionary * hint = [response mediationHints:isSmart]; | ||||||
|  |     NSMutableDictionary *mHint = [hint mutableCopy]; | ||||||
|  |     NSDate* myDate = mHint[@"load_start"]; | ||||||
|  |     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; | ||||||
|  |     [dateFormatter setDateFormat:@"dd-MM-yyyy"]; | ||||||
|  |     NSString *stringDate = [dateFormatter stringFromDate:myDate]; | ||||||
|  |     [mHint setValue:stringDate forKey:@"load_start"]; | ||||||
|  |     NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:mHint options:0 error:&err]; | ||||||
|  |     NSString * mediationHints = [[NSString alloc] initWithData:jsonData   encoding:NSUTF8StringEncoding]; | ||||||
|  |     return mediationHints; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setCMPFlavor:(DTBCMPFlavor)cFlavor { | ||||||
|  |     [DTBAds.sharedInstance setCmpFlavor:cFlavor]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setConsentStatus:(DTBConsentStatus)consentStatus{ | ||||||
|  |     [DTBAds.sharedInstance setConsentStatus:consentStatus]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(NSMutableArray*)createArray{ | ||||||
|  |     return [[NSMutableArray alloc] init]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)addToArray:(NSMutableArray*)dictionary item:(int)item{ | ||||||
|  |     NSNumber* num = [NSNumber numberWithInt:item]; | ||||||
|  |     [dictionary addObject:num]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setVendorList:(NSMutableArray*)dictionary{ | ||||||
|  |     [DTBAds.sharedInstance setVendorList:dictionary]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setAutoRefresh:(DTBAdLoader*)adLoader{ | ||||||
|  |     [adLoader setAutoRefresh]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setAutoRefresh:(DTBAdLoader*)adLoader secs:(int)secs{ | ||||||
|  |     [adLoader setAutoRefresh:secs]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)pauseAutorefresh:(DTBAdLoader*)adLoader{ | ||||||
|  |     [adLoader pauseAutorefresh]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)stopAutoRefresh:(DTBAdLoader*)adLoader{ | ||||||
|  |     [adLoader stop]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)resumeAutoRefresh:(DTBAdLoader*)adLoader{ | ||||||
|  |     [adLoader resumeAutorefresh]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setAPSPublisherExtendedIdFeatureEnabled:(BOOL)isEnabled { | ||||||
|  |     [DTBAds.sharedInstance setAPSPublisherExtendedIdFeatureEnabled:isEnabled]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)addCustomAttribute:(NSString *)withKey value:(id)value { | ||||||
|  |     [DTBAds.sharedInstance addCustomAttribute:withKey value:value]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)removeCustomAttribute:(NSString *)forKey { | ||||||
|  |     [DTBAds.sharedInstance removeCustomAttribute:forKey]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setAdNetworkInfo:(DTBAdNetworkInfo *)dtbAdNetworkInfo { | ||||||
|  |     [[DTBAds sharedInstance] setAdNetworkInfo:dtbAdNetworkInfo]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)setLocalExtras:(NSString *)adUnitId localExtras:(NSDictionary *)localExtras { | ||||||
|  |     [DTBAds setLocalExtras:adUnitId localExtras:localExtras]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(NSDictionary *)getMediationHintsDict:(DTBAdResponse*)response isSmart:(BOOL)isSmart{ | ||||||
|  |     return [response mediationHints:isSmart]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(void)showInterstitialAd:(DTBAdInterstitialDispatcher*)dispatcher { | ||||||
|  |     [dispatcher showFromController:[self unityRootViewController]]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | -(UIViewController *)unityRootViewController { | ||||||
|  |     id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate; | ||||||
|  |     // @TODO Check whether the appDelegate implements rootViewController. Refer to CR-68240623 for discussions. | ||||||
|  |     if ([appDelegate respondsToSelector:@selector(rootViewController)]) { | ||||||
|  |         return [[[UIApplication sharedApplication].delegate window] rootViewController]; | ||||||
|  |     } | ||||||
|  |     return nil; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,110 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 65a7bcd4e95cc47c88cd2b6280e00c17 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude LinuxUniversal: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: LinuxUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   - first: | ||||||
|  |       tvOS: tvOS | ||||||
|  |     second: | ||||||
|  |       enabled: 1 | ||||||
|  |       settings: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,20 @@ | ||||||
|  | #import <DTBiOSSDK/DTBiOSSDK.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdCallback.h> | ||||||
|  | 
 | ||||||
|  | typedef const void *DTBAdCallbackClientRef; | ||||||
|  | 
 | ||||||
|  | typedef void (*SuccessResponse) (DTBAdCallbackClientRef* callback, DTBAdResponse* dataPtr); | ||||||
|  | typedef void (*ErrorResponse) (DTBAdCallbackClientRef* callback, int errorCode); | ||||||
|  | typedef void (*ErrorResponseWithInfo) (DTBAdCallbackClientRef* callback, int errorCode, DTBAdErrorInfo* adErrorInfoPtr); | ||||||
|  | 
 | ||||||
|  | @interface AmazonUnityCallback : NSObject <DTBAdCallback> { | ||||||
|  |     SuccessResponse _successCallback; | ||||||
|  |     ErrorResponse _errorCallback; | ||||||
|  |     ErrorResponseWithInfo _errorCallbackWithInfo; | ||||||
|  | 
 | ||||||
|  |     DTBAdCallbackClientRef* _callbackClient; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setListeners:(DTBAdCallbackClientRef*)client success:(SuccessResponse)success errorCallback:(ErrorResponse)error; | ||||||
|  | - (void)setListenersWithInfo:(DTBAdCallbackClientRef*)client success:(SuccessResponse)success errorCallbackWithInfo:(ErrorResponseWithInfo)errorCallbackWithInfo; | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,105 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 4ab68d8321afe4cca8177a404f816891 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude LinuxUniversal: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Facebook: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: LinuxUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,38 @@ | ||||||
|  | #import "AmazonUnityCallback.h" | ||||||
|  | #import "AmazonManager.h" | ||||||
|  | 
 | ||||||
|  | @implementation AmazonUnityCallback | ||||||
|  | - (void)setListeners:(DTBAdCallbackClientRef*)client success:(SuccessResponse)success errorCallback:(ErrorResponse)error { | ||||||
|  |     _callbackClient = client; | ||||||
|  |     _successCallback = success; | ||||||
|  |     _errorCallback = error; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setListenersWithInfo:(DTBAdCallbackClientRef*)client success:(SuccessResponse)success errorCallbackWithInfo:(ErrorResponseWithInfo)errorCallbackWithInfo { | ||||||
|  |     _callbackClient = client; | ||||||
|  |     _successCallback = success; | ||||||
|  |     _errorCallbackWithInfo = errorCallbackWithInfo; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #pragma mark - AmazonUnityCallback | ||||||
|  | 
 | ||||||
|  | - (void)onFailure:(DTBAdError)error { | ||||||
|  |     if (_errorCallback != nil) { | ||||||
|  |         _errorCallback( _callbackClient, (int)error ); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)onFailure:(DTBAdError)error | ||||||
|  |    dtbAdErrorInfo:(DTBAdErrorInfo *) dtbAdErrorInfo { | ||||||
|  |        if (_errorCallbackWithInfo != nil) { | ||||||
|  |            _errorCallbackWithInfo( _callbackClient, (int)error, dtbAdErrorInfo ); | ||||||
|  |        } | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | - (void)onSuccess:(DTBAdResponse *)adResponse { | ||||||
|  |     if (_successCallback != nil) { | ||||||
|  |         _successCallback( _callbackClient, adResponse ); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,85 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: ab36449d445ac4544afe77c7c0539ec0 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   - first: | ||||||
|  |       tvOS: tvOS | ||||||
|  |     second: | ||||||
|  |       enabled: 1 | ||||||
|  |       settings: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | #import <DTBiOSSDK/DTBiOSSDK.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdBannerDispatcher.h> | ||||||
|  | 
 | ||||||
|  | typedef const void *DTBCallbackBannerRef; | ||||||
|  | 
 | ||||||
|  | typedef void (*DTBAdDidLoadType) (DTBCallbackBannerRef* callback); | ||||||
|  | typedef void (*DTBAdFailedToLoadType) (DTBCallbackBannerRef* callback); | ||||||
|  | typedef void (*DTBBannerWillLeaveApplicationType) (DTBCallbackBannerRef* callback); | ||||||
|  | typedef void (*DTBImpressionFiredType) (DTBCallbackBannerRef* callback); | ||||||
|  | 
 | ||||||
|  | @interface DTBBannerDelegate : NSObject <DTBAdBannerDispatcherDelegate> | ||||||
|  | { | ||||||
|  |     DTBAdDidLoadType _adDidLoadDelegate; | ||||||
|  |     DTBAdFailedToLoadType _adFailedToLoadDelegate; | ||||||
|  |     DTBBannerWillLeaveApplicationType _bannerWillLeaveApplicationDelegate; | ||||||
|  |     DTBImpressionFiredType _impressionFiredDelegate; | ||||||
|  | 
 | ||||||
|  |     DTBCallbackBannerRef* _callbackClient; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setDelegate:(DTBCallbackBannerRef*)client  | ||||||
|  |              adLoad:(DTBAdDidLoadType)adLoad  | ||||||
|  |          adFailLoad:(DTBAdFailedToLoadType)adFailLoad  | ||||||
|  |            leaveApp:(DTBBannerWillLeaveApplicationType)leaveApp  | ||||||
|  |            impFired:(DTBImpressionFiredType)impFired; | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,80 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: a58dbc723902c4dd6a148f77e0845a3c | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,45 @@ | ||||||
|  | #import "DTBBannerDelegate.h" | ||||||
|  | 
 | ||||||
|  | @implementation DTBBannerDelegate | ||||||
|  | - (void)setDelegate:(DTBCallbackBannerRef*)client  | ||||||
|  |              adLoad:(DTBAdDidLoadType)adLoad  | ||||||
|  |          adFailLoad:(DTBAdFailedToLoadType)adFailLoad  | ||||||
|  |            leaveApp:(DTBBannerWillLeaveApplicationType)leaveApp  | ||||||
|  |            impFired:(DTBImpressionFiredType)impFired | ||||||
|  | { | ||||||
|  |     _callbackClient = client; | ||||||
|  |     _adDidLoadDelegate = adLoad; | ||||||
|  |     _adFailedToLoadDelegate = adFailLoad; | ||||||
|  |     _bannerWillLeaveApplicationDelegate = leaveApp; | ||||||
|  |     _impressionFiredDelegate = impFired; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #pragma mark - DTBBannerDelegate | ||||||
|  | 
 | ||||||
|  | - (void)adDidLoad:(UIView * _Nonnull)adView { | ||||||
|  |     if (_adDidLoadDelegate != nil) { | ||||||
|  |         _adDidLoadDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)adFailedToLoad:(UIView * _Nullable)banner errorCode:(NSInteger)errorCode { | ||||||
|  |     if (_adFailedToLoadDelegate != nil) { | ||||||
|  |         _adFailedToLoadDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)bannerWillLeaveApplication:(UIView *)adView { | ||||||
|  |     if (_bannerWillLeaveApplicationDelegate != nil) { | ||||||
|  |         _bannerWillLeaveApplicationDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)impressionFired { | ||||||
|  |     if (_impressionFiredDelegate != nil) { | ||||||
|  |         _impressionFiredDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,85 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 64f2586d9fb3549848bbd34f6f8085d2 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   - first: | ||||||
|  |       tvOS: tvOS | ||||||
|  |     second: | ||||||
|  |       enabled: 1 | ||||||
|  |       settings: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,31 @@ | ||||||
|  | #import <DTBiOSSDK/DTBiOSSDK.h> | ||||||
|  | #import <DTBiOSSDK/DTBAdInterstitialDispatcher.h> | ||||||
|  | 
 | ||||||
|  | typedef const void *DTBCallbackInterstitialRef; | ||||||
|  | 
 | ||||||
|  | typedef void (*DTBInterstitialDidLoadType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | typedef void (*DTBDidFailToLoadAdWithErrorCodeType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | typedef void (*DTBInterstitialDidPresentScreenType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | typedef void (*DTBInterstitialDidDismissScreenType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | typedef void (*DTBInterstitialWillLeaveApplicationType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | typedef void (*DTBInterstitialImpressionFiredType) (DTBCallbackInterstitialRef* callback); | ||||||
|  | 
 | ||||||
|  | @interface DTBInterstitialDelegate : NSObject <DTBAdInterstitialDispatcherDelegate> { | ||||||
|  |     DTBInterstitialDidLoadType _didLoadDelegate; | ||||||
|  |     DTBDidFailToLoadAdWithErrorCodeType _didFailToLoadDelegate; | ||||||
|  |     DTBInterstitialDidPresentScreenType _didPresentScreenDelegate; | ||||||
|  |     DTBInterstitialDidDismissScreenType _didDismissScreenDelegate; | ||||||
|  |     DTBInterstitialWillLeaveApplicationType _leaveAppDelegate; | ||||||
|  |     DTBInterstitialImpressionFiredType _impFiredDelegate; | ||||||
|  | 
 | ||||||
|  |     DTBCallbackInterstitialRef* _callbackClient; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)setDelegate:(DTBCallbackInterstitialRef*)client  | ||||||
|  |              adLoad:(DTBInterstitialDidLoadType)adLoad  | ||||||
|  |          adFailLoad:(DTBDidFailToLoadAdWithErrorCodeType)adFailLoad  | ||||||
|  |            leaveApp:(DTBInterstitialWillLeaveApplicationType)leaveApp  | ||||||
|  |            impFired:(DTBInterstitialImpressionFiredType)impFired  | ||||||
|  |             didOpen:(DTBInterstitialDidPresentScreenType)didOpen  | ||||||
|  |          didDismiss:(DTBInterstitialDidDismissScreenType)didDismiss; | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,80 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: ec64dc94f39894ffba7e39a14f3b2102 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: None | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,69 @@ | ||||||
|  | #import "DTBInterstitialDelegate.h" | ||||||
|  | 
 | ||||||
|  | @implementation DTBInterstitialDelegate | ||||||
|  | - (void)setDelegate:(DTBCallbackInterstitialRef*)client  | ||||||
|  |              adLoad:(DTBInterstitialDidLoadType)adLoad  | ||||||
|  |          adFailLoad:(DTBDidFailToLoadAdWithErrorCodeType)adFailLoad  | ||||||
|  |            leaveApp:(DTBInterstitialWillLeaveApplicationType)leaveApp  | ||||||
|  |            impFired:(DTBInterstitialImpressionFiredType)impFired  | ||||||
|  |             didOpen:(DTBInterstitialDidPresentScreenType)didOpen  | ||||||
|  |          didDismiss:(DTBInterstitialDidDismissScreenType)didDismiss | ||||||
|  | { | ||||||
|  |     _callbackClient = client; | ||||||
|  |     _didLoadDelegate = adLoad; | ||||||
|  |     _didFailToLoadDelegate = adFailLoad; | ||||||
|  |     _leaveAppDelegate = leaveApp; | ||||||
|  |     _impFiredDelegate = impFired; | ||||||
|  |     _didPresentScreenDelegate = didOpen; | ||||||
|  |     _didDismissScreenDelegate = didDismiss; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #pragma mark - DTBInterstitialDelegate | ||||||
|  | 
 | ||||||
|  | - (void)interstitialDidLoad:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  |     if (_didLoadDelegate != nil) { | ||||||
|  |         _didLoadDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitial:(DTBAdInterstitialDispatcher * _Nullable )interstitial | ||||||
|  |     didFailToLoadAdWithErrorCode:(DTBAdErrorCode)errorCode { | ||||||
|  |     if (_didFailToLoadDelegate != nil) { | ||||||
|  |         _didFailToLoadDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitialWillPresentScreen:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitialDidPresentScreen:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  |     if (_didPresentScreenDelegate != nil) { | ||||||
|  |         _didPresentScreenDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitialWillDismissScreen:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitialDidDismissScreen:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  |     if (_didDismissScreenDelegate != nil) { | ||||||
|  |         _didDismissScreenDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)interstitialWillLeaveApplication:(DTBAdInterstitialDispatcher * _Nullable )interstitial { | ||||||
|  |     if (_leaveAppDelegate != nil) { | ||||||
|  |         _leaveAppDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)showFromRootViewController:(UIViewController *_Nonnull)controller { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | - (void)impressionFired { | ||||||
|  |     if (_impFiredDelegate != nil) { | ||||||
|  |         _impFiredDelegate(_callbackClient); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @end | ||||||
|  | @ -0,0 +1,85 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 4f43b5dc42cf54011b96f66d261f2619 | ||||||
|  | PluginImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   iconMap: {} | ||||||
|  |   executionOrder: {} | ||||||
|  |   defineConstraints: [] | ||||||
|  |   isPreloaded: 0 | ||||||
|  |   isOverridable: 0 | ||||||
|  |   isExplicitlyReferenced: 0 | ||||||
|  |   validateReferences: 1 | ||||||
|  |   platformData: | ||||||
|  |   - first: | ||||||
|  |       : Any | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         Exclude Android: 1 | ||||||
|  |         Exclude Editor: 1 | ||||||
|  |         Exclude Linux64: 1 | ||||||
|  |         Exclude OSXUniversal: 1 | ||||||
|  |         Exclude Win: 1 | ||||||
|  |         Exclude Win64: 1 | ||||||
|  |         Exclude iOS: 1 | ||||||
|  |   - first: | ||||||
|  |       Android: Android | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: ARMv7 | ||||||
|  |   - first: | ||||||
|  |       Any:  | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: {} | ||||||
|  |   - first: | ||||||
|  |       Editor: Editor | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         DefaultValueInitialized: true | ||||||
|  |         OS: AnyOS | ||||||
|  |   - first: | ||||||
|  |       Standalone: Linux64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       Standalone: OSXUniversal | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86 | ||||||
|  |   - first: | ||||||
|  |       Standalone: Win64 | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         CPU: x86_64 | ||||||
|  |   - first: | ||||||
|  |       iPhone: iOS | ||||||
|  |     second: | ||||||
|  |       enabled: 0 | ||||||
|  |       settings: | ||||||
|  |         AddToEmbeddedBinaries: false | ||||||
|  |         CPU: AnyCPU | ||||||
|  |         CompileFlags:  | ||||||
|  |         FrameworkDependencies:  | ||||||
|  |   - first: | ||||||
|  |       tvOS: tvOS | ||||||
|  |     second: | ||||||
|  |       enabled: 1 | ||||||
|  |       settings: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 6a17d7d5a68624567861d0e1822b24a9 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,7 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: fb8e1477d33cb4076b8aa247ae7dd237 | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,297 @@ | ||||||
|  |  | ||||||
|  | using System; | ||||||
|  | using AmazonAds; | ||||||
|  | using UnityEngine; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | public class AmazonMaxDemo : MonoBehaviour { | ||||||
|  | 
 | ||||||
|  |     private const string maxKey = "l-_TbRRFRIhI2bN388lTNzh0k_83nqhSLMkFs2ATgT_y4GPxCqSQOdiDV3WgHf01C4N9r53JvUp-N_65kdcdro"; | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |     private const string appId = "7873ab072f0647b8837748312c7b8b5a"; | ||||||
|  | 
 | ||||||
|  |     private const string maxBannerAdId = "989798cb31a0d25f"; | ||||||
|  |     private const string maxInterstitialAdId = "7e3a01318c888038"; | ||||||
|  |     private const string maxVideoAdId = "09d9041492d1d0d9"; | ||||||
|  | 
 | ||||||
|  |     private const string amazonBannerSlotId = "ed3b9f16-4497-4001-be7d-2e8ca679ee73"; //320x50 | ||||||
|  |     private const string amzonInterstitialSlotId = "394133e6-27fe-477d-816b-4a00cdaa54b6"; | ||||||
|  |     private const string amazonInterstitialVideoSlotId = "b9f9a2aa-72d8-4cb3-83db-949ebb53836f"; | ||||||
|  |     private const string amazonRewardedVideoSlotId = "1ed9fa0b-3cf0-4326-8c35-c0e9ddcdb765"; | ||||||
|  | #else | ||||||
|  |     private const string appId = "c5f20fe6e37146b08749d09bb2b6a4dd"; | ||||||
|  | 
 | ||||||
|  | 	private const string maxBannerAdId = "d7dc4c6c1d6886fb"; | ||||||
|  | 	private const string maxInterstitialAdId = "928de5b2fa152dac"; | ||||||
|  |     private const string maxVideoAdId = "57e0224b0c29607c"; | ||||||
|  | 
 | ||||||
|  | 	private const string amazonBannerSlotId = "88e6293b-0bf0-43fc-947b-925babe7bf3f"; //320x50 | ||||||
|  | 	private const string amzonInterstitialSlotId = "424c37b6-38e0-4076-94e6-0933a6213496"; | ||||||
|  |     private const string amazonInterstitialVideoSlotId = "671086df-06f2-4ee7-86f6-e578d10b3128"; | ||||||
|  |     private const string amazonRewardedVideoSlotId = "08892e57-35ff-450c-8b35-4d261251f7c7"; | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     public UnityEngine.UI.Button isInitializedBut; | ||||||
|  |     private bool isAutoRefresh = true; | ||||||
|  |     private bool isFirstInterstitialRequest = true; | ||||||
|  |     private bool isFirstVideoInterstitialRequest = true; | ||||||
|  |     private bool isFirstRewardedVideoRequest = true; | ||||||
|  | 
 | ||||||
|  |     private APSBannerAdRequest bannerAdRequest; | ||||||
|  |     private APSInterstitialAdRequest interstitialAdRequest; | ||||||
|  |     private APSVideoAdRequest interstitialVideoAdRequest; | ||||||
|  |     private APSVideoAdRequest rewardedVideoAdRequest; | ||||||
|  | 
 | ||||||
|  |     public void InitializeMax () { | ||||||
|  |         Amazon.Initialize(appId); | ||||||
|  |         Amazon.EnableTesting(true); | ||||||
|  |         Amazon.EnableLogging(true); | ||||||
|  |         Amazon.UseGeoLocation(true); | ||||||
|  |         Amazon.SetMRAIDPolicy(Amazon.MRAIDPolicy.CUSTOM); | ||||||
|  |         Amazon.SetAdNetworkInfo(new AdNetworkInfo(DTBAdNetwork.MAX)); | ||||||
|  |         Amazon.SetMRAIDSupportedVersions(new string[] { "1.0", "2.0", "3.0" });  | ||||||
|  | 
 | ||||||
|  |         MaxSdk.SetSdkKey(maxKey); | ||||||
|  |         MaxSdk.InitializeSdk(); | ||||||
|  |         MaxSdk.SetCreativeDebuggerEnabled(true); | ||||||
|  |         MaxSdk.SetVerboseLogging(true); | ||||||
|  | 
 | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdLoadedEvent += OnBannerAdLoadedEvent; | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdLoadFailedEvent += OnBannerAdLoadFailedEvent; | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdClickedEvent += OnBannerAdClickedEvent; | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnBannerAdRevenuePaidEvent; | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdExpandedEvent += OnBannerAdExpandedEvent; | ||||||
|  |         MaxSdkCallbacks.Banner.OnAdCollapsedEvent += OnBannerAdCollapsedEvent; | ||||||
|  | 
 | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdLoadedEvent += OnInterstitialLoadedEvent; | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdLoadFailedEvent += OnInterstitialLoadFailedEvent; | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdDisplayedEvent += OnInterstitialDisplayedEvent; | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdClickedEvent += OnInterstitialClickedEvent; | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdHiddenEvent += OnInterstitialHiddenEvent; | ||||||
|  |         MaxSdkCallbacks.Interstitial.OnAdDisplayFailedEvent += OnInterstitialAdFailedToDisplayEvent; | ||||||
|  | 
 | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdLoadedEvent += OnRewardedAdLoadedEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdLoadFailedEvent += OnRewardedAdFailedEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdDisplayFailedEvent += OnRewardedAdFailedToDisplayEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdDisplayedEvent += OnRewardedAdDisplayedEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdClickedEvent += OnRewardedAdClickedEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdHiddenEvent += OnRewardedAdDismissedEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdReceivedRewardEvent += OnRewardedAdReceivedRewardEvent; | ||||||
|  |         MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnRewardedAdRevenuePaidEvent; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void IsInitialized(){ | ||||||
|  |         if (isInitializedBut == null ) return; | ||||||
|  |         if( Amazon.IsInitialized() ) { | ||||||
|  |             isInitializedBut.GetComponent<UnityEngine.UI.Image>().color = Color.green; | ||||||
|  |         } else { | ||||||
|  |             isInitializedBut.GetComponent<UnityEngine.UI.Image>().color = Color.red; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void RequestInterstitial () { | ||||||
|  |         if (isFirstInterstitialRequest) { | ||||||
|  |             isFirstInterstitialRequest = false; | ||||||
|  |             interstitialAdRequest = new APSInterstitialAdRequest(amzonInterstitialSlotId); | ||||||
|  | 
 | ||||||
|  |             interstitialAdRequest.onSuccess += (adResponse) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetInterstitialLocalExtraParameter(maxInterstitialAdId, "amazon_ad_response", adResponse.GetResponse()); | ||||||
|  |                 MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |             }; | ||||||
|  |             interstitialAdRequest.onFailedWithError += (adError) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetInterstitialLocalExtraParameter(maxInterstitialAdId, "amazon_ad_error", adError.GetAdError()); | ||||||
|  |                 MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             interstitialAdRequest.LoadAd(); | ||||||
|  |         } else { | ||||||
|  |             MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void CreateMaxBannerAd() | ||||||
|  |     { | ||||||
|  |         MaxSdk.CreateBanner(maxBannerAdId, MaxSdkBase.BannerPosition.BottomCenter); | ||||||
|  |         MaxSdk.SetBannerPlacement(maxBannerAdId, "MY_BANNER_PLACEMENT"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void RequestBanner () { | ||||||
|  |         const int width = 320; | ||||||
|  |         const int height = 50; | ||||||
|  | 
 | ||||||
|  |         if (bannerAdRequest != null) bannerAdRequest.DestroyFetchManager(); | ||||||
|  |         bannerAdRequest = new APSBannerAdRequest(width, height, amazonBannerSlotId); | ||||||
|  |         bannerAdRequest.onFailedWithError += (adError) => | ||||||
|  |         { | ||||||
|  |             MaxSdk.SetBannerLocalExtraParameter(maxBannerAdId, "amazon_ad_error", adError.GetAdError()); | ||||||
|  |             CreateMaxBannerAd(); | ||||||
|  |         }; | ||||||
|  |         bannerAdRequest.onSuccess += (adResponse) => | ||||||
|  |         { | ||||||
|  |             MaxSdk.SetBannerLocalExtraParameter(maxBannerAdId, "amazon_ad_response", adResponse.GetResponse()); | ||||||
|  |             CreateMaxBannerAd(); | ||||||
|  |         }; | ||||||
|  |         bannerAdRequest.LoadAd(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void RequestInterstitialVideo () { | ||||||
|  |         if(isFirstVideoInterstitialRequest) { | ||||||
|  |             isFirstVideoInterstitialRequest = false; | ||||||
|  |             interstitialVideoAdRequest = new APSVideoAdRequest(320, 480, amazonInterstitialVideoSlotId); | ||||||
|  | 
 | ||||||
|  |             interstitialVideoAdRequest.onSuccess += (adResponse) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetInterstitialLocalExtraParameter(maxInterstitialAdId, "amazon_ad_response", adResponse.GetResponse()); | ||||||
|  |                 MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |             }; | ||||||
|  |             interstitialVideoAdRequest.onFailedWithError += (adError) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetInterstitialLocalExtraParameter(maxInterstitialAdId, "amazon_ad_error", adError.GetAdError()); | ||||||
|  |                 MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             interstitialVideoAdRequest.LoadAd(); | ||||||
|  |         } else { | ||||||
|  |             MaxSdk.LoadInterstitial(maxInterstitialAdId); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void RequestRewardedVideo () { | ||||||
|  |         if (isFirstRewardedVideoRequest) { | ||||||
|  |             isFirstRewardedVideoRequest = false; | ||||||
|  |             rewardedVideoAdRequest = new APSVideoAdRequest(320, 480, amazonRewardedVideoSlotId); | ||||||
|  | 
 | ||||||
|  |             rewardedVideoAdRequest.onSuccess += (adResponse) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetRewardedAdLocalExtraParameter(maxVideoAdId, "amazon_ad_response", adResponse.GetResponse()); | ||||||
|  |                 MaxSdk.LoadRewardedAd(maxVideoAdId); | ||||||
|  |             }; | ||||||
|  |             rewardedVideoAdRequest.onFailedWithError += (adError) => | ||||||
|  |             { | ||||||
|  |                 MaxSdk.SetRewardedAdLocalExtraParameter(maxVideoAdId, "amazon_ad_error", adError.GetAdError()); | ||||||
|  |                 MaxSdk.LoadRewardedAd(maxVideoAdId); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             rewardedVideoAdRequest.LoadAd(); | ||||||
|  |         } else { | ||||||
|  |             MaxSdk.LoadRewardedAd(maxVideoAdId); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         MaxSdk.ShowBanner(maxBannerAdId); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo) | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdExpandedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnBannerAdCollapsedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialLoadedEvent:" + MaxSdk.IsInterstitialReady(maxInterstitialAdId)); | ||||||
|  |         if (MaxSdk.IsInterstitialReady(maxInterstitialAdId)) | ||||||
|  |         { | ||||||
|  |             MaxSdk.ShowInterstitial(maxInterstitialAdId); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialLoadFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialLoadFailedEvent"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialDisplayedEvent"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialAdFailedToDisplayEvent"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialClickedEvent"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnInterstitialHiddenEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnInterstitialHiddenEvent"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void ShowRewardedAd() | ||||||
|  |     { | ||||||
|  |         Debug.Log("ShowRewardedAd:" + MaxSdk.IsRewardedAdReady(maxVideoAdId)); | ||||||
|  |         if (MaxSdk.IsRewardedAdReady(maxVideoAdId)) | ||||||
|  |         { | ||||||
|  |             MaxSdk.ShowRewardedAd(maxVideoAdId); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdLoadedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnRewardedAdLoadedEvent"); | ||||||
|  |         ShowRewardedAd(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdFailedEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnRewardedAdFailedEvent"); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdFailedToDisplayEvent(string adUnitId, MaxSdkBase.ErrorInfo errorInfo, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         // Rewarded ad failed to display. We recommend loading the next ad | ||||||
|  |         Debug.Log("Rewarded ad failed to display with error code: " + errorInfo.Code); | ||||||
|  |         //MaxSdk.LoadRewardedAd(maxVideoAdId); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdDisplayedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("Rewarded ad displayed"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdClickedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("Rewarded ad clicked"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdDismissedEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         // Rewarded ad is hidden. Pre-load the next ad | ||||||
|  |         Debug.Log("Rewarded ad dismissed"); | ||||||
|  |         //MaxSdk.LoadRewardedAd(RewardedAdUnitId); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdReceivedRewardEvent(string adUnitId, MaxSdk.Reward reward, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         // Rewarded ad was displayed and user should receive the reward | ||||||
|  |         Debug.Log("HERE:Rewarded ad received reward"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnRewardedAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo adInfo) | ||||||
|  |     { | ||||||
|  |         Debug.Log("OnRewardedAdRevenuePaidEvent"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 34ed58385e8924837ad87a1f2966e16b | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 296ee3b3b262345f6bfe2f066958a91d | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,123 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class Amazon { | ||||||
|  |         private static PlatformApi api; | ||||||
|  | 
 | ||||||
|  |         public delegate void OnFailureDelegate (string errorMsg); | ||||||
|  |         public delegate void OnFailureWithErrorDelegate (AdError adError); | ||||||
|  |         public delegate void OnSuccessDelegate (AdResponse response); | ||||||
|  |         public delegate void OnApplicationPauseDelegate(bool pauseStatus); | ||||||
|  |         public static OnApplicationPauseDelegate OnApplicationPause = (pauseStatus) => { }; | ||||||
|  | 
 | ||||||
|  |         public enum MRAIDPolicy { | ||||||
|  |             AUTO_DETECT, | ||||||
|  |             MOPUB, | ||||||
|  |             DFP, | ||||||
|  |             CUSTOM, | ||||||
|  |             NONE | ||||||
|  |         } | ||||||
|  |         public enum ConsentStatus { | ||||||
|  |             CONSENT_NOT_DEFINED, | ||||||
|  |             EXPLICIT_YES, | ||||||
|  |             EXPLICIT_NO, | ||||||
|  |             UNKNOWN | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public enum CMPFlavor { | ||||||
|  |             CMP_NOT_DEFINED, | ||||||
|  |             GOOGLE_CMP, | ||||||
|  |             MOPUB_CMP | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void Initialize (string key) { | ||||||
|  | #if UNITY_IOS | ||||||
|  |             api = new AmazonAds.IOS.IOSPlatform (); | ||||||
|  | #elif UNITY_ANDROID | ||||||
|  |             api = new AmazonAds.Android.AndroidPlatform (); | ||||||
|  | #endif | ||||||
|  |             api.Initialization (key); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetMRAIDPolicy (Amazon.MRAIDPolicy policy) { | ||||||
|  |             api.SetMRAIDPolicy (policy); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetCMPFlavor(Amazon.CMPFlavor cFlavor){ | ||||||
|  |             api.SetCMPFlavor(cFlavor); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetConsentStatus(Amazon.ConsentStatus consentStatus){ | ||||||
|  |             api.SetConsentStatus(consentStatus); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetVendorList(List<int> vendorList){ | ||||||
|  |             api.SetVendorList(vendorList); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void AddSlotGroup (SlotGroup group) { | ||||||
|  |             api.AddSlotGroup (group); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static MRAIDPolicy GetMRAIDPolicy () { | ||||||
|  |             return api.GetMRAIDPolicy (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetMRAIDSupportedVersions (String[] versions) { | ||||||
|  |             api.SetMRAIDSupportedVersions (versions); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void EnableLogging (bool flag) { | ||||||
|  |             api.EnableLogging (flag); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void UseGeoLocation (bool isLocationEnabled) { | ||||||
|  |             api.UseGeoLocation (isLocationEnabled); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static bool IsLocationEnabled () { | ||||||
|  |             return api.IsLocationEnabled (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static bool IsInitialized () { | ||||||
|  |             return api.IsInitialized (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static bool IsTestMode () { | ||||||
|  |             return api.IsTestMode (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void EnableTesting (bool flag) { | ||||||
|  |             api.EnableTesting (flag); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void AddCustomAttribute(string withKey, string value) | ||||||
|  |         { | ||||||
|  |             api.AddCustomAttribute(withKey, value); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void RemoveCustomAttribute(string forKey) | ||||||
|  |         { | ||||||
|  |             api.RemoveCustomAttr(forKey); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetAdNetworkInfo(AdNetworkInfo adNetworkInfo) | ||||||
|  |         { | ||||||
|  |             api.SetAdNetworkInfo(adNetworkInfo); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | #if UNITY_IOS | ||||||
|  |         public static void SetAPSPublisherExtendedIdFeatureEnabled(bool isEnabled) | ||||||
|  |         { | ||||||
|  |             api.SetAPSPublisherExtendedIdFeatureEnabled(isEnabled); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public static void SetMediationLocalExtras(string adUnitId, AdResponse adResponse) | ||||||
|  |         { | ||||||
|  |             api.SetLocalExtras(adUnitId, adResponse); | ||||||
|  |         } | ||||||
|  | #endif | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: d5987cccc71fa4c51877e7c22d2d5f56 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,30 @@ | ||||||
|  | using System; | ||||||
|  | 
 | ||||||
|  | public static class AmazonConstants | ||||||
|  | { | ||||||
|  |     public const string VERSION = "1.4.3"; | ||||||
|  |     public const string RELEASE_NOTES_URL = "https://ams.amazon.com/webpublisher/uam/docs/aps-mobile/resources"; //TODO : add Unity Release Notes link | ||||||
|  | 
 | ||||||
|  |     public const string titleAboutDialog = "About Amazon SDK"; | ||||||
|  |     public const string labelSdkVersion = "Amazon SDK version " + AmazonConstants.VERSION; | ||||||
|  |     public const string buttonReleaseNotes = "Release Notes"; | ||||||
|  |     public const string labelReportIssues = "Report Issues: " + "Mobile-aps-support@amazon.com"; | ||||||
|  | 
 | ||||||
|  |     public const string aboutDialogOk = "OK"; | ||||||
|  | 
 | ||||||
|  |     public const string manifestURL = "https://mdtb-sdk-packages.s3-us-west-2.amazonaws.com/Unity/aps_unity.json"; | ||||||
|  |     public const string helpLink = "https://ams.amazon.com/webpublisher/uam/docs/aps-mobile/resources"; | ||||||
|  |     public const string docUrl = "https://ams.amazon.com/webpublisher/uam/docs/aps-mobile"; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     internal const string unityPlayerClass = "com.unity3d.player.UnityPlayer"; | ||||||
|  | 
 | ||||||
|  |     // Android constant names | ||||||
|  |     internal const string sdkUtilitiesClass = "com.amazon.device.ads.SDKUtilities"; | ||||||
|  |     internal const string dtbAdViewClass = "com.amazon.device.ads.DTBAdView"; | ||||||
|  |     internal const string dtbAdInterstitialClass = "com.amazon.device.ads.DTBAdInterstitial"; | ||||||
|  |     internal const string dtbAdNetworkClass = "com.amazon.device.ads.DTBAdNetwork"; | ||||||
|  |     internal const string dtbAdNetworkInfoClass = "com.amazon.device.ads.DTBAdNetworkInfo"; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: a4c36066dbdad415b978c38a01a2b675 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 8c45974962ec542baad78d4c30cd0056 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public abstract class IAdInterstitial { | ||||||
|  |         public abstract void FetchAd (AdResponse adResponse); | ||||||
|  |         public abstract void Show (); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: d4da15e7be3dc455d97abce962533892 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,84 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using UnityEngine; | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public abstract class IAdRequest { | ||||||
|  |         protected int refreshTime = 60; | ||||||
|  |         protected string autoRefreshID = "0"; //FetchManageerUniqueID | ||||||
|  |         protected bool isAutoRefreshAdMob = false; | ||||||
|  |         protected bool isAutoRefreshMoPub = false; | ||||||
|  |         protected bool requestHasBeenUsed = false; | ||||||
|  |         protected IFetchManager fetchManager; | ||||||
|  | 
 | ||||||
|  |         public abstract void PutCustomTarget (string key, string value); | ||||||
|  |         public abstract void SetSizes (IAdSize sizes); | ||||||
|  |         public abstract void SetSizes (IInterstitialAdSize sizes); | ||||||
|  |         public abstract void SetSizes (IVideo sizes); | ||||||
|  |         public abstract void SetSlotGroup (string slotGroupName); | ||||||
|  |         public abstract void LoadAd (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success); | ||||||
|  |         public abstract void LoadAd (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success); | ||||||
|  |         public abstract void LoadSmartBanner (Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success); | ||||||
|  |         public abstract void LoadSmartBanner (Amazon.OnFailureWithErrorDelegate failure, Amazon.OnSuccessDelegate success); | ||||||
|  |         public abstract void SetAutoRefreshAdMob (bool flag, bool isSmartBanner = false); | ||||||
|  |         public abstract void SetAutoRefreshMoPub (bool flag); | ||||||
|  |         public abstract void SetAutoRefreshMoPub (bool flag, int refreshTime); | ||||||
|  |         public abstract void SetAutoRefresh(); | ||||||
|  |         public abstract void SetAutoRefresh(int secs); | ||||||
|  |         public abstract void ResumeAutoRefresh(); | ||||||
|  |         public abstract void StopAutoRefresh(); | ||||||
|  |         public abstract void PauseAutoRefresh(); | ||||||
|  |         public bool IsAutoRefreshAdMob (){ return isAutoRefreshAdMob;} | ||||||
|  |         public bool IsAutoRefreshMoPub (){ return isAutoRefreshMoPub;} | ||||||
|  |         public string AutoRefreshID (){return autoRefreshID.ToString ();} | ||||||
|  |         public abstract void DisposeAd (); | ||||||
|  |         public abstract void CreateFetchManager (bool isSmartBanner = false); | ||||||
|  |         public abstract void DestroyFetchManager (); | ||||||
|  |         public abstract void StopFetchManager(); | ||||||
|  |         public abstract void StartFetchManager(); | ||||||
|  |         public abstract void SetRefreshFlag(bool flag); | ||||||
|  | 
 | ||||||
|  |         protected static class Schedule { | ||||||
|  |             private class Runner : MonoBehaviour { } | ||||||
|  |             private static Runner _backer; | ||||||
|  |             private static Runner Backer { | ||||||
|  |                 get { | ||||||
|  |                     if (_backer == null) { | ||||||
|  |                         var go = new GameObject ("Scheduler"); | ||||||
|  |                         GameObject.DontDestroyOnLoad (go); | ||||||
|  |                         _backer = go.AddComponent<Runner> (); | ||||||
|  |                     } | ||||||
|  |                     return _backer; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             private static float expiration = 5f; | ||||||
|  | 
 | ||||||
|  |             public static void WaitForAdResponce (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) { | ||||||
|  |                 Schedule.Backer.StartCoroutine (WaitForAdResponceCoroutine (fetchManager, failure, success)); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             static IEnumerator WaitForAdResponceCoroutine (IFetchManager fetchManager, Amazon.OnFailureDelegate failure, Amazon.OnSuccessDelegate success) { | ||||||
|  |                 float timerExp = 0; | ||||||
|  |                 bool flagResp = true; | ||||||
|  |                 while (fetchManager.isEmpty()) { | ||||||
|  |                     timerExp += Time.deltaTime; | ||||||
|  |                     if (timerExp > expiration) { | ||||||
|  |                         flagResp = false; | ||||||
|  |                         failure ("no ads from fetchManager"); | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|  |                     yield return null; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 if (flagResp) { | ||||||
|  |                     success( fetchManager.peek () ); | ||||||
|  |                 } | ||||||
|  |                 Schedule.Clear (); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public static void Clear () { | ||||||
|  |                 GameObject.Destroy (Backer); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: ba13283bbee174961b809f3b9e502094 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | namespace AmazonAds { | ||||||
|  |    public interface IAdSize {  | ||||||
|  |       int GetWidth (); | ||||||
|  |       int GetHeight (); | ||||||
|  |       string GetSlotUUID (); | ||||||
|  |    } | ||||||
|  |    public interface IInterstitialAdSize { } | ||||||
|  |    public interface IVideo { } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 33e37a43420f84a408938af12117ff08 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public abstract class IAdView { | ||||||
|  |         public abstract void FetchAd (AdResponse adResponse); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: adeba99c4a0f04b54b8af9623665e2d5 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | using UnityEngine; | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public interface IFetchManager { | ||||||
|  |         void dispense (); | ||||||
|  | 
 | ||||||
|  |         void start (); | ||||||
|  | 
 | ||||||
|  |         void stop (); | ||||||
|  | 
 | ||||||
|  |         bool isEmpty (); | ||||||
|  | 
 | ||||||
|  |         AmazonAds.AdResponse peek (); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: dec92b206e59e400c8706ec073e326d1 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | namespace AmazonAds{ | ||||||
|  |     public interface ISlotGroup | ||||||
|  |     { | ||||||
|  |         void AddSlot(int width, int height, string uid); | ||||||
|  |         void AddSlot(AdSize size); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 2b1f29380367c47c6a1c112ddc47ad84 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 60916135eefd74087bcd8ca80bd94ddc | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | { | ||||||
|  |     "name": "Amazon.Editor", | ||||||
|  |     "references": [ | ||||||
|  |         "Amazon" | ||||||
|  |     ], | ||||||
|  |     "includePlatforms": [ | ||||||
|  |         "Editor" | ||||||
|  |     ], | ||||||
|  |     "excludePlatforms": [], | ||||||
|  |     "allowUnsafeCode": false, | ||||||
|  |     "overrideReferences": false, | ||||||
|  |     "precompiledReferences": [], | ||||||
|  |     "autoReferenced": true, | ||||||
|  |     "defineConstraints": [], | ||||||
|  |     "versionDefines": [], | ||||||
|  |     "noEngineReferences": false | ||||||
|  | } | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 59f42bdf21710439a90f93e01e1f8984 | ||||||
|  | timeCreated: 1700190285 | ||||||
|  | @ -0,0 +1,21 @@ | ||||||
|  | using UnityEditor; | ||||||
|  | using UnityEngine; | ||||||
|  | using AmazonAds; | ||||||
|  | public class AmazonAboutDialog : ScriptableWizard { | ||||||
|  |     public static void ShowDialog () { | ||||||
|  |         DisplayWizard<AmazonAboutDialog> (AmazonConstants.titleAboutDialog, AmazonConstants.aboutDialogOk); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected override bool DrawWizardGUI () { | ||||||
|  |         EditorGUILayout.LabelField (AmazonConstants.labelSdkVersion); | ||||||
|  | 
 | ||||||
|  |         EditorGUILayout.Space (); | ||||||
|  |         if (GUILayout.Button (AmazonConstants.buttonReleaseNotes)) | ||||||
|  |             Application.OpenURL (AmazonConstants.RELEASE_NOTES_URL);  | ||||||
|  |         EditorGUILayout.LabelField ("\n"); | ||||||
|  |         EditorGUILayout.LabelField (AmazonConstants.labelReportIssues); | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void OnWizardCreate () { } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 431a6434bfc0a47e8a2c936e434c3d3b | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,104 @@ | ||||||
|  | using UnityEngine; | ||||||
|  | using UnityEditor; | ||||||
|  | using System; | ||||||
|  | using System.Linq; | ||||||
|  | using UnityEditor.Callbacks; | ||||||
|  | 
 | ||||||
|  | public class AmazonBuildScript | ||||||
|  | { | ||||||
|  |     public static string DEFAULT_APK_NAME = "APSUnityTestApp.apk"; | ||||||
|  |     public static string DEFAULT_IOS_BUILD_DIR = "Builds/iOS"; | ||||||
|  | 
 | ||||||
|  |     public static void BuildIos() | ||||||
|  |     { | ||||||
|  |         string[] scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(); | ||||||
|  |         EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS); | ||||||
|  |         string outputFileName = GetArg("-output", DEFAULT_IOS_BUILD_DIR); | ||||||
|  |         BuildPipeline.BuildPlayer(scenes, outputFileName, BuildTarget.iOS, BuildOptions.Development); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void BuildAndroid() | ||||||
|  |     { | ||||||
|  |         string[] scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray(); | ||||||
|  |         EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android); | ||||||
|  |         string outputFileName = GetArg("-output", DEFAULT_APK_NAME); | ||||||
|  |         BuildPipeline.BuildPlayer(scenes, outputFileName, BuildTarget.Android, BuildOptions.Development); | ||||||
|  |         EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void SwitchToIos() | ||||||
|  |     { | ||||||
|  |         EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private static string GetArg(string name, string defaultVal) | ||||||
|  |     { | ||||||
|  |         var args = System.Environment.GetCommandLineArgs(); | ||||||
|  |         for (int i = 0; i < args.Length; i++) | ||||||
|  |         { | ||||||
|  |             if (args[i] == name && args.Length > i + 1) | ||||||
|  |             { | ||||||
|  |                 return args[i + 1]; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return defaultVal; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void BuildExternalAndroid() | ||||||
|  |     { | ||||||
|  |         string[] envvars = new string[] | ||||||
|  |         { | ||||||
|  |           "ANDROID_KEYSTORE_NAME", "ANDROID_KEYSTORE_PASSWORD", "ANDROID_KEYALIAS_NAME", "ANDROID_KEYALIAS_PASSWORD", "ANDROID_SDK_ROOT" | ||||||
|  |         }; | ||||||
|  |         if (EnvironmentVariablesMissing(envvars)) | ||||||
|  |         { | ||||||
|  |             Environment.ExitCode = -1; | ||||||
|  |             return; // note, we can not use Environment.Exit(-1) - the buildprocess will just hang afterwards | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         //Available Playersettings: https://docs.unity3d.com/ScriptReference/PlayerSettings.Android.html | ||||||
|  | 
 | ||||||
|  |         //set the internal apk version to the current unix timestamp, so this increases with every build | ||||||
|  |         PlayerSettings.Android.bundleVersionCode = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; | ||||||
|  | 
 | ||||||
|  |         //set the other settings from environment variables | ||||||
|  |         PlayerSettings.Android.keystoreName = Environment.GetEnvironmentVariable("ANDROID_KEYSTORE_NAME"); | ||||||
|  |         PlayerSettings.Android.keystorePass = Environment.GetEnvironmentVariable("ANDROID_KEYSTORE_PASSWORD"); | ||||||
|  |         PlayerSettings.Android.keyaliasName = Environment.GetEnvironmentVariable("ANDROID_KEYALIAS_NAME"); | ||||||
|  |         PlayerSettings.Android.keyaliasPass = Environment.GetEnvironmentVariable("ANDROID_KEYALIAS_PASSWORD"); | ||||||
|  | 
 | ||||||
|  |         EditorPrefs.SetString("AndroidSdkRoot", Environment.GetEnvironmentVariable("ANDROID_SDK_ROOT")); | ||||||
|  | 
 | ||||||
|  |         //Get the apk file to be built from the command line argument | ||||||
|  |         string outputapk = Environment.GetCommandLineArgs().Last(); | ||||||
|  |         BuildPipeline.BuildPlayer(GetScenePaths(), outputapk, BuildTarget.Android, BuildOptions.None); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     static string[] GetScenePaths() | ||||||
|  |     { | ||||||
|  |         string[] scenes = new string[EditorBuildSettings.scenes.Length]; | ||||||
|  |         for (int i = 0; i < scenes.Length; i++) | ||||||
|  |         { | ||||||
|  |             scenes[i] = EditorBuildSettings.scenes[i].path; | ||||||
|  |         } | ||||||
|  |         return scenes; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     static bool EnvironmentVariablesMissing(string[] envvars) | ||||||
|  |     { | ||||||
|  |         string value; | ||||||
|  |         bool missing = false; | ||||||
|  |         foreach (string envvar in envvars) | ||||||
|  |         { | ||||||
|  |             value = Environment.GetEnvironmentVariable(envvar); | ||||||
|  |             if (value == null) | ||||||
|  |             { | ||||||
|  |                 Console.Write("BUILD ERROR: Required Environment Variable is not set: "); | ||||||
|  |                 Console.WriteLine(envvar); | ||||||
|  |                 missing = true; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return missing; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: c1378b372e98d4b56a16725bf370ae6c | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,51 @@ | ||||||
|  | /* | ||||||
|  | Copyright (c) 2017 Marijn Zwemmer | ||||||
|  | 
 | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  | 
 | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | using System.Collections; | ||||||
|  | using UnityEditor; | ||||||
|  | namespace AmazonInternal.ThirdParty { | ||||||
|  | 	public static class AmazonCoroutineExtensions { | ||||||
|  | 		public static AmazonCoroutines.AmazonCoroutine StartCoroutine (this EditorWindow thisRef, IEnumerator coroutine) { | ||||||
|  | 			return AmazonCoroutines.StartCoroutine (coroutine, thisRef); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public static AmazonCoroutines.AmazonCoroutine StartCoroutine (this EditorWindow thisRef, string methodName) { | ||||||
|  | 			return AmazonCoroutines.StartCoroutine (methodName, thisRef); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public static AmazonCoroutines.AmazonCoroutine StartCoroutine (this EditorWindow thisRef, string methodName, object value) { | ||||||
|  | 			return AmazonCoroutines.StartCoroutine (methodName, value, thisRef); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public static void StopCoroutine (this EditorWindow thisRef, IEnumerator coroutine) { | ||||||
|  | 			AmazonCoroutines.StopCoroutine (coroutine, thisRef); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public static void StopCoroutine (this EditorWindow thisRef, string methodName) { | ||||||
|  | 			AmazonCoroutines.StopCoroutine (methodName, thisRef); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public static void StopAllCoroutines (this EditorWindow thisRef) { | ||||||
|  | 			AmazonCoroutines.StopAllCoroutines (thisRef); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: aae61b43441904bbcbf7f24ff05e20d2 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,351 @@ | ||||||
|  | /* | ||||||
|  | Copyright (c) 2017 Marijn Zwemmer | ||||||
|  | 
 | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining a copy | ||||||
|  | of this software and associated documentation files (the "Software"), to deal | ||||||
|  | in the Software without restriction, including without limitation the rights | ||||||
|  | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||||
|  | copies of the Software, and to permit persons to whom the Software is | ||||||
|  | furnished to do so, subject to the following conditions: | ||||||
|  | 
 | ||||||
|  | The above copyright notice and this permission notice shall be included in all | ||||||
|  | copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||||
|  | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||||
|  | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||||
|  | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||||
|  | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||||
|  | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||||
|  | SOFTWARE. | ||||||
|  | */ | ||||||
|  | 
 | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Reflection; | ||||||
|  | using UnityEditor; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonInternal.ThirdParty { | ||||||
|  | 	public class AmazonCoroutines { | ||||||
|  | 		public class AmazonCoroutine { | ||||||
|  | 			public ICoroutineYield currentYield = new YieldDefault (); | ||||||
|  | 			public IEnumerator routine; | ||||||
|  | 			public string routineUniqueHash; | ||||||
|  | 			public string ownerUniqueHash; | ||||||
|  | 			public string MethodName = ""; | ||||||
|  | 
 | ||||||
|  | 			public int ownerHash; | ||||||
|  | 			public string ownerType; | ||||||
|  | 
 | ||||||
|  | 			public bool finished = false; | ||||||
|  | 
 | ||||||
|  | 			public AmazonCoroutine (IEnumerator routine, int ownerHash, string ownerType) { | ||||||
|  | 				this.routine = routine; | ||||||
|  | 				this.ownerHash = ownerHash; | ||||||
|  | 				this.ownerType = ownerType; | ||||||
|  | 				ownerUniqueHash = ownerHash + "_" + ownerType; | ||||||
|  | 
 | ||||||
|  | 				if (routine != null) { | ||||||
|  | 					string[] split = routine.ToString ().Split ('<', '>'); | ||||||
|  | 					if (split.Length == 3) { | ||||||
|  | 						this.MethodName = split[1]; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
|  | 				routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			public AmazonCoroutine (string methodName, int ownerHash, string ownerType) { | ||||||
|  | 				MethodName = methodName; | ||||||
|  | 				this.ownerHash = ownerHash; | ||||||
|  | 				this.ownerType = ownerType; | ||||||
|  | 				ownerUniqueHash = ownerHash + "_" + ownerType; | ||||||
|  | 				routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		public interface ICoroutineYield { | ||||||
|  | 			bool IsDone (float deltaTime); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldDefault : ICoroutineYield { | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				return true; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldWaitForSeconds : ICoroutineYield { | ||||||
|  | 			public float timeLeft; | ||||||
|  | 
 | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				timeLeft -= deltaTime; | ||||||
|  | 				return timeLeft < 0; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldCustomYieldInstruction : ICoroutineYield { | ||||||
|  | 			public CustomYieldInstruction customYield; | ||||||
|  | 
 | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				return !customYield.keepWaiting; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldWWW : ICoroutineYield { | ||||||
|  | 			public WWW Www; | ||||||
|  | 
 | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				return Www.isDone; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldAsync : ICoroutineYield { | ||||||
|  | 			public AsyncOperation asyncOperation; | ||||||
|  | 
 | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				return asyncOperation.isDone; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		struct YieldNestedCoroutine : ICoroutineYield { | ||||||
|  | 			public AmazonCoroutine coroutine; | ||||||
|  | 
 | ||||||
|  | 			public bool IsDone (float deltaTime) { | ||||||
|  | 				return coroutine.finished; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		static AmazonCoroutines instance = null; | ||||||
|  | 
 | ||||||
|  | 		Dictionary<string, List<AmazonCoroutine>> coroutineDict = new Dictionary<string, List<AmazonCoroutine>> (); | ||||||
|  | 		List<List<AmazonCoroutine>> tempCoroutineList = new List<List<AmazonCoroutine>> (); | ||||||
|  | 
 | ||||||
|  | 		Dictionary<string, Dictionary<string, AmazonCoroutine>> coroutineOwnerDict = | ||||||
|  | 			new Dictionary<string, Dictionary<string, AmazonCoroutine>> (); | ||||||
|  | 
 | ||||||
|  | 		DateTime previousTimeSinceStartup; | ||||||
|  | 
 | ||||||
|  | 		/// <summary>Starts a coroutine.</summary> | ||||||
|  | 		/// <param name="routine">The coroutine to start.</param> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static AmazonCoroutine StartCoroutine (IEnumerator routine, object thisReference) { | ||||||
|  | 			CreateInstanceIfNeeded (); | ||||||
|  | 			return instance.GoStartCoroutine (routine, thisReference); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/// <summary>Starts a coroutine.</summary> | ||||||
|  | 		/// <param name="methodName">The name of the coroutine method to start.</param> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static AmazonCoroutine StartCoroutine (string methodName, object thisReference) { | ||||||
|  | 			return StartCoroutine (methodName, null, thisReference); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/// <summary>Starts a coroutine.</summary> | ||||||
|  | 		/// <param name="methodName">The name of the coroutine method to start.</param> | ||||||
|  | 		/// <param name="value">The parameter to pass to the coroutine.</param> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static AmazonCoroutine StartCoroutine (string methodName, object value, object thisReference) { | ||||||
|  | 			MethodInfo methodInfo = thisReference.GetType () | ||||||
|  | 				.GetMethod (methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); | ||||||
|  | 			if (methodInfo == null) { | ||||||
|  | 				Debug.LogError ("Coroutine '" + methodName + "' couldn't be started, the method doesn't exist!"); | ||||||
|  | 			} | ||||||
|  | 			object returnValue; | ||||||
|  | 
 | ||||||
|  | 			if (value == null) { | ||||||
|  | 				returnValue = methodInfo.Invoke (thisReference, null); | ||||||
|  | 			} else { | ||||||
|  | 				returnValue = methodInfo.Invoke (thisReference, new object[] { value }); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if (returnValue is IEnumerator) { | ||||||
|  | 				CreateInstanceIfNeeded (); | ||||||
|  | 				return instance.GoStartCoroutine ((IEnumerator) returnValue, thisReference); | ||||||
|  | 			} else { | ||||||
|  | 				Debug.LogError ("Coroutine '" + methodName + "' couldn't be started, the method doesn't return an IEnumerator!"); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/// <summary>Stops all coroutines being the routine running on the passed instance.</summary> | ||||||
|  | 		/// <param name="routine"> The coroutine to stop.</param> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static void StopCoroutine (IEnumerator routine, object thisReference) { | ||||||
|  | 			CreateInstanceIfNeeded (); | ||||||
|  | 			instance.GoStopCoroutine (routine, thisReference); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/// <summary> | ||||||
|  | 		/// Stops all coroutines named methodName running on the passed instance.</summary> | ||||||
|  | 		/// <param name="methodName"> The name of the coroutine method to stop.</param> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static void StopCoroutine (string methodName, object thisReference) { | ||||||
|  | 			CreateInstanceIfNeeded (); | ||||||
|  | 			instance.GoStopCoroutine (methodName, thisReference); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/// <summary> | ||||||
|  | 		/// Stops all coroutines running on the passed instance.</summary> | ||||||
|  | 		/// <param name="thisReference">Reference to the instance of the class containing the method.</param> | ||||||
|  | 		public static void StopAllCoroutines (object thisReference) { | ||||||
|  | 			CreateInstanceIfNeeded (); | ||||||
|  | 			instance.GoStopAllCoroutines (thisReference); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		static void CreateInstanceIfNeeded () { | ||||||
|  | 			if (instance == null) { | ||||||
|  | 				instance = new AmazonCoroutines (); | ||||||
|  | 				instance.Initialize (); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void Initialize () { | ||||||
|  | 			previousTimeSinceStartup = DateTime.Now; | ||||||
|  | 			EditorApplication.update += OnUpdate; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void GoStopCoroutine (IEnumerator routine, object thisReference) { | ||||||
|  | 			GoStopActualRoutine (CreateCoroutine (routine, thisReference)); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void GoStopCoroutine (string methodName, object thisReference) { | ||||||
|  | 			GoStopActualRoutine (CreateCoroutineFromString (methodName, thisReference)); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void GoStopActualRoutine (AmazonCoroutine routine) { | ||||||
|  | 			if (coroutineDict.ContainsKey (routine.routineUniqueHash)) { | ||||||
|  | 				coroutineOwnerDict[routine.ownerUniqueHash].Remove (routine.routineUniqueHash); | ||||||
|  | 				coroutineDict.Remove (routine.routineUniqueHash); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void GoStopAllCoroutines (object thisReference) { | ||||||
|  | 			AmazonCoroutine coroutine = CreateCoroutine (null, thisReference); | ||||||
|  | 			if (coroutineOwnerDict.ContainsKey (coroutine.ownerUniqueHash)) { | ||||||
|  | 				foreach (var couple in coroutineOwnerDict[coroutine.ownerUniqueHash]) { | ||||||
|  | 					coroutineDict.Remove (couple.Value.routineUniqueHash); | ||||||
|  | 				} | ||||||
|  | 				coroutineOwnerDict.Remove (coroutine.ownerUniqueHash); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		AmazonCoroutine GoStartCoroutine (IEnumerator routine, object thisReference) { | ||||||
|  | 			if (routine == null) { | ||||||
|  | 				Debug.LogException (new Exception ("IEnumerator is null!"), null); | ||||||
|  | 			} | ||||||
|  | 			AmazonCoroutine coroutine = CreateCoroutine (routine, thisReference); | ||||||
|  | 			GoStartCoroutine (coroutine); | ||||||
|  | 			return coroutine; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void GoStartCoroutine (AmazonCoroutine coroutine) { | ||||||
|  | 			if (!coroutineDict.ContainsKey (coroutine.routineUniqueHash)) { | ||||||
|  | 				List<AmazonCoroutine> newCoroutineList = new List<AmazonCoroutine> (); | ||||||
|  | 				coroutineDict.Add (coroutine.routineUniqueHash, newCoroutineList); | ||||||
|  | 			} | ||||||
|  | 			coroutineDict[coroutine.routineUniqueHash].Add (coroutine); | ||||||
|  | 
 | ||||||
|  | 			if (!coroutineOwnerDict.ContainsKey (coroutine.ownerUniqueHash)) { | ||||||
|  | 				Dictionary<string, AmazonCoroutine> newCoroutineDict = new Dictionary<string, AmazonCoroutine> (); | ||||||
|  | 				coroutineOwnerDict.Add (coroutine.ownerUniqueHash, newCoroutineDict); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			// If the method from the same owner has been stored before, it doesn't have to be stored anymore, | ||||||
|  | 			// One reference is enough in order for "StopAllCoroutines" to work | ||||||
|  | 			if (!coroutineOwnerDict[coroutine.ownerUniqueHash].ContainsKey (coroutine.routineUniqueHash)) { | ||||||
|  | 				coroutineOwnerDict[coroutine.ownerUniqueHash].Add (coroutine.routineUniqueHash, coroutine); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			MoveNext (coroutine); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		AmazonCoroutine CreateCoroutine (IEnumerator routine, object thisReference) { | ||||||
|  | 			return new AmazonCoroutine (routine, thisReference.GetHashCode (), thisReference.GetType ().ToString ()); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		AmazonCoroutine CreateCoroutineFromString (string methodName, object thisReference) { | ||||||
|  | 			return new AmazonCoroutine (methodName, thisReference.GetHashCode (), thisReference.GetType ().ToString ()); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		void OnUpdate () { | ||||||
|  | 			float deltaTime = (float) (DateTime.Now.Subtract (previousTimeSinceStartup).TotalMilliseconds / 1000.0f); | ||||||
|  | 
 | ||||||
|  | 			previousTimeSinceStartup = DateTime.Now; | ||||||
|  | 			if (coroutineDict.Count == 0) { | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			tempCoroutineList.Clear (); | ||||||
|  | 			foreach (var pair in coroutineDict) | ||||||
|  | 				tempCoroutineList.Add (pair.Value); | ||||||
|  | 
 | ||||||
|  | 			for (var i = tempCoroutineList.Count - 1; i >= 0; i--) { | ||||||
|  | 				List<AmazonCoroutine> coroutines = tempCoroutineList[i]; | ||||||
|  | 
 | ||||||
|  | 				for (int j = coroutines.Count - 1; j >= 0; j--) { | ||||||
|  | 					AmazonCoroutine coroutine = coroutines[j]; | ||||||
|  | 
 | ||||||
|  | 					if (!coroutine.currentYield.IsDone (deltaTime)) { | ||||||
|  | 						continue; | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
|  | 					if (!MoveNext (coroutine)) { | ||||||
|  | 						coroutines.RemoveAt (j); | ||||||
|  | 						coroutine.currentYield = null; | ||||||
|  | 						coroutine.finished = true; | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
|  | 					if (coroutines.Count == 0) { | ||||||
|  | 						coroutineDict.Remove (coroutine.ownerUniqueHash); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		static bool MoveNext (AmazonCoroutine coroutine) { | ||||||
|  | 			if (coroutine.routine.MoveNext ()) { | ||||||
|  | 				return Process (coroutine); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return false; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		// returns false if no next, returns true if OK | ||||||
|  | 		static bool Process (AmazonCoroutine coroutine) { | ||||||
|  | 			object current = coroutine.routine.Current; | ||||||
|  | 			if (current == null) { | ||||||
|  | 				coroutine.currentYield = new YieldDefault (); | ||||||
|  | 			} else if (current is WaitForSeconds) { | ||||||
|  | 				float seconds = float.Parse (GetInstanceField (typeof (WaitForSeconds), current, "m_Seconds").ToString ()); | ||||||
|  | 				coroutine.currentYield = new YieldWaitForSeconds () { timeLeft = seconds }; | ||||||
|  | 			} else if (current is CustomYieldInstruction) { | ||||||
|  | 				coroutine.currentYield = new YieldCustomYieldInstruction () { | ||||||
|  | 					customYield = current as CustomYieldInstruction | ||||||
|  | 				}; | ||||||
|  | 			} else if (current is WWW) { | ||||||
|  | 				coroutine.currentYield = new YieldWWW { Www = (WWW) current }; | ||||||
|  | 			} else if (current is WaitForFixedUpdate || current is WaitForEndOfFrame) { | ||||||
|  | 				coroutine.currentYield = new YieldDefault (); | ||||||
|  | 			} else if (current is AsyncOperation) { | ||||||
|  | 				coroutine.currentYield = new YieldAsync { asyncOperation = (AsyncOperation) current }; | ||||||
|  | 			} else if (current is AmazonCoroutine) { | ||||||
|  | 				coroutine.currentYield = new YieldNestedCoroutine { coroutine = (AmazonCoroutine) current }; | ||||||
|  | 			} else { | ||||||
|  | 				Debug.LogException ( | ||||||
|  | 					new Exception ("<" + coroutine.MethodName + "> yielded an unknown or unsupported type! (" + current.GetType () + ")"), | ||||||
|  | 					null); | ||||||
|  | 				coroutine.currentYield = new YieldDefault (); | ||||||
|  | 			} | ||||||
|  | 			return true; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		static object GetInstanceField (Type type, object instance, string fieldName) { | ||||||
|  | 			BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static; | ||||||
|  | 			FieldInfo field = type.GetField (fieldName, bindFlags); | ||||||
|  | 			return field.GetValue (instance); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: dcee96832dc4141299f36d8b10b10467 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,16 @@ | ||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <dependencies> | ||||||
|  |   <androidPackages> | ||||||
|  |     <androidPackage spec="androidx.appcompat:appcompat:1.1.0" /> | ||||||
|  |     <androidPackage spec="com.google.android.gms:play-services-ads-lite:20.0.0" /> | ||||||
|  |     <androidPackage spec="com.amazon.android:aps-sdk:9.5.4@aar"> | ||||||
|  |       <repositories> | ||||||
|  |         <repository>https://aws.oss.sonatype.org/content/repositories/releases/</repository> | ||||||
|  |       </repositories> | ||||||
|  |     </androidPackage> | ||||||
|  |   </androidPackages> | ||||||
|  |   <iosPods> | ||||||
|  |     <iosPod name="Amazon-SDK-Plugin" minTargetSdk="12.5" path="Packages/com.guru.unity.max/Amazon/Plugins/iOS" /> | ||||||
|  |     <iosPod name="AmazonPublisherServicesSDK" version="~> 4.5.0" /> | ||||||
|  |   </iosPods> | ||||||
|  | </dependencies> | ||||||
|  | @ -0,0 +1,7 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: c9bc3db2384e74f03ae6d3b496e9fdc9 | ||||||
|  | TextScriptImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | #if UNITY_IOS | ||||||
|  | using System.IO; | ||||||
|  | using UnityEditor; | ||||||
|  | using UnityEditor.Callbacks; | ||||||
|  | using UnityEditor.iOS.Xcode; | ||||||
|  | using UnityEngine; | ||||||
|  | namespace AmazonInternal.Editor.Postbuild { | ||||||
|  |     public static class AmazonPostBuildiOS { | ||||||
|  |         [PostProcessBuild( 45 )] | ||||||
|  |         public static void OnPostprocessBuild(BuildTarget buildTarget, string path) | ||||||
|  |         { | ||||||
|  |             if (buildTarget != BuildTarget.iOS) | ||||||
|  |                 return; | ||||||
|  | 
 | ||||||
|  |             string pbxProjectPath = PBXProject.GetPBXProjectPath(path); | ||||||
|  |             PBXProject project = new PBXProject(); | ||||||
|  | 
 | ||||||
|  |             project.ReadFromFile(pbxProjectPath); | ||||||
|  | 
 | ||||||
|  | #if UNITY_2019_3_OR_NEWER | ||||||
|  |             string targetGuid = project.GetUnityFrameworkTargetGuid(); | ||||||
|  | #else | ||||||
|  |             string targetGuid = project.TargetGuidByName(PBXProject.GetUnityTargetName()); | ||||||
|  | #endif | ||||||
|  |             project.SetBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "$(inherited)"); | ||||||
|  |             project.SetBuildProperty(targetGuid, "CLANG_ENABLE_MODULES", "YES"); | ||||||
|  |             project.AddBuildProperty(targetGuid, "LD_RUNPATH_SEARCH_PATHS", "@executable_path/Frameworks"); | ||||||
|  |              | ||||||
|  |             project.WriteToFile(pbxProjectPath); | ||||||
|  | 
 | ||||||
|  | #if UNITY_2019_3_OR_NEWER | ||||||
|  |             if (buildTarget == BuildTarget.iOS) | ||||||
|  |             { | ||||||
|  |                 bool iPhoneExist = false; | ||||||
|  |                 using (StreamReader sr = new StreamReader(path + "/Podfile")) | ||||||
|  |                 { | ||||||
|  |                     string contents = sr.ReadToEnd(); | ||||||
|  |                     if (contents.Contains("Unity-iPhone")) | ||||||
|  |                     { | ||||||
|  |                         iPhoneExist = true; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |                 if ( !iPhoneExist ){ | ||||||
|  |                     using (StreamWriter sw = File.AppendText(path + "/Podfile")) | ||||||
|  |                     { | ||||||
|  |                         sw.WriteLine("\ntarget 'Unity-iPhone' do\nend"); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | #endif | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: f7474cff9dfc144e89f4e7696b4b8d9c | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,400 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.IO; | ||||||
|  | using System.Linq; | ||||||
|  | using System.Reflection; | ||||||
|  | using AmazonInternal.ThirdParty; | ||||||
|  | using UnityEditor; | ||||||
|  | using UnityEditor.PackageManager; | ||||||
|  | using UnityEditor.PackageManager.Requests; | ||||||
|  | using UnityEngine; | ||||||
|  | using UnityEngine.Networking; | ||||||
|  | public class AmazonSDKManager : EditorWindow { | ||||||
|  |     static string AmazonSdkVersion; | ||||||
|  |     static AddRequest Request; | ||||||
|  | 
 | ||||||
|  |     static void AddEditorCoroutine () { | ||||||
|  |         // Add a package to the Project | ||||||
|  |         Request = Client.Add ("com.unity.editorcoroutine"); | ||||||
|  |         EditorApplication.update += Progress; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     static void Progress () { | ||||||
|  |         if (Request.IsCompleted) { | ||||||
|  |             if (Request.Status == StatusCode.Success) | ||||||
|  |                 Debug.Log ("Installed: " + Request.Result.packageId); | ||||||
|  |             else if (Request.Status >= StatusCode.Failure) | ||||||
|  |                 Debug.Log (Request.Error.message); | ||||||
|  | 
 | ||||||
|  |             EditorApplication.update -= Progress; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | //    [MenuItem ("Amazon/About Amazon SDK", false, 0)] | ||||||
|  |     public static void About () { | ||||||
|  |         AmazonAboutDialog.ShowDialog (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | //    [MenuItem ("Amazon/Documentation...", false, 1)] | ||||||
|  |     public static void Documentation () { | ||||||
|  |         Application.OpenURL (AmazonConstants.docUrl); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | //    [MenuItem ("Amazon/Manage SDKs...", false, 4)] | ||||||
|  |     public static void SdkManagerProd () { | ||||||
|  |         AmazonSDKManager.ShowSDKManager (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private const string downloadDir = "Assets/Amazon"; | ||||||
|  | 
 | ||||||
|  |     private struct SdkInfo { | ||||||
|  |         public string Name; | ||||||
|  |         public string Key; | ||||||
|  |         public string Url; | ||||||
|  |         public string LatestVersion; | ||||||
|  |         public string CurrentVersion; | ||||||
|  |         public string Filename; | ||||||
|  | 
 | ||||||
|  |         public bool FromJson (string name, Dictionary<string, object> dict) { | ||||||
|  |             if (string.IsNullOrEmpty (name) || dict == null) | ||||||
|  |                 return false; | ||||||
|  | 
 | ||||||
|  |             object obj; | ||||||
|  |             Key = name; | ||||||
|  |             if (dict.TryGetValue ("name", out obj)) | ||||||
|  |                 Name = obj as string; | ||||||
|  |             if (dict.TryGetValue ("link", out obj)) | ||||||
|  |                 Url = obj as string; | ||||||
|  |             if (dict.TryGetValue ("version", out obj)) | ||||||
|  |                 LatestVersion = obj as string; | ||||||
|  |             if (!string.IsNullOrEmpty (Url)) { | ||||||
|  |                 var uri = new Uri (Url); | ||||||
|  |                 var path = uri.IsAbsoluteUri ? uri.AbsolutePath : uri.LocalPath; | ||||||
|  |                 Filename = Path.GetFileName (path); | ||||||
|  |             } | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public bool FromConfig(AmazonPackageConfig config) | ||||||
|  |         { | ||||||
|  |             if (config == null || string.IsNullOrEmpty(config.Name) || !string.IsNullOrEmpty(Key) && Key != config.Name) | ||||||
|  |                 return false; | ||||||
|  |             CurrentVersion = config.Version; | ||||||
|  |             return true; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Version and download info for the SDK and network mediation adapters. | ||||||
|  |     private static SdkInfo amazonSdkInfo; | ||||||
|  |     private static readonly SortedDictionary<string, SdkInfo> sdkInfo = new SortedDictionary<string, SdkInfo> (); | ||||||
|  | 
 | ||||||
|  |     // Async download operations tracked here. | ||||||
|  |     private AmazonCoroutines.AmazonCoroutine coroutine; | ||||||
|  |     private UnityWebRequest downloader; | ||||||
|  |     private string activity; | ||||||
|  | 
 | ||||||
|  |     // Custom style for LabelFields.  (Don't make static or the dialog doesn't recover well from Unity compiling | ||||||
|  |     // a new or changed editor script.) | ||||||
|  |     private GUIStyle labelStyle; | ||||||
|  |     private GUIStyle labelStyleArea; | ||||||
|  |     private GUIStyle labelStyleLink; | ||||||
|  |     private GUIStyle headerStyle; | ||||||
|  |     private readonly GUILayoutOption fieldWidth = GUILayout.Width (60); | ||||||
|  | 
 | ||||||
|  |     private Vector2 scrollPos; | ||||||
|  | 
 | ||||||
|  |     public static void ShowSDKManager () { | ||||||
|  |         var win = GetWindow<AmazonSDKManager> (true); | ||||||
|  |         win.titleContent = new GUIContent ("Amazon SDK Manager"); | ||||||
|  |         win.Focus (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void Awake () { | ||||||
|  |         labelStyle = new GUIStyle (EditorStyles.label) { | ||||||
|  |             fontSize = 14, | ||||||
|  |             fontStyle = FontStyle.Bold | ||||||
|  |         }; | ||||||
|  |         labelStyleArea = new GUIStyle (EditorStyles.label) { | ||||||
|  |             wordWrap = true | ||||||
|  |         }; | ||||||
|  |         labelStyleLink = new GUIStyle (EditorStyles.label) { | ||||||
|  |             normal = { textColor = Color.blue }, | ||||||
|  |             active = { textColor = Color.white }, | ||||||
|  |         }; | ||||||
|  |         headerStyle = new GUIStyle (EditorStyles.label) { | ||||||
|  |             fontSize = 12, | ||||||
|  |             fontStyle = FontStyle.Bold, | ||||||
|  |             fixedHeight = 18 | ||||||
|  |         }; | ||||||
|  |         CancelOperation (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void OnEnable () { | ||||||
|  |         coroutine = this.StartCoroutine (GetSDKVersions ()); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void OnDisable () { | ||||||
|  |         CancelOperation (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void deleteUnwantedFiles() | ||||||
|  |     { | ||||||
|  |         String[] filesToDel = | ||||||
|  |             { | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/AdResponce.cs", | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/AdResponce.cs.meta", | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/IOS/IOSAdResponce.cs", | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/IOS/IOSAdResponce.cs.meta", | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/Android/AndroidAdResponce.cs", | ||||||
|  |                 "Assets/Amazon/Scripts/Internal/Android/AndroidAdResponce.cs.meta", | ||||||
|  |                 "Assets/Amazon/Plugins/Android/aps-sdk.aar", | ||||||
|  |                 "Assets/Amazon/Plugins/Android/aps-sdk.aar.meta", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/AdMobMediation/Plugins/Android/aps-admob-adapter.aar", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/AdMobMediation/Plugins/Android/aps-admob-adapter.aar.meta", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/APSConnectionUtil", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/APSConnectionUtil.meta", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/MoPubMediation", | ||||||
|  |                 "Assets/Amazon/Scripts/Mediations/MoPubMediation.meta", | ||||||
|  |                 "Assets/APSConnectionUtil", | ||||||
|  |                 "Assets/APSConnectionUtil.meta", | ||||||
|  |                 "Assets/Amazon/Sample/AmazonMoPubDemo.cs", | ||||||
|  |                 "Assets/Amazon/Sample/AmazonMoPubDemo.cs.meta", | ||||||
|  |                 "Assets/Amazon/Sample/APSMoPubMediation.unity", | ||||||
|  |                 "Assets/Amazon/Sample/APSMoPubMediation.unity.meta" | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |         foreach (String fileToDel in filesToDel) | ||||||
|  |         { | ||||||
|  |             if (Directory.Exists(fileToDel)) | ||||||
|  |             { | ||||||
|  |                 Directory.Delete(fileToDel, true); | ||||||
|  |             } else if (File.Exists(fileToDel)) | ||||||
|  |             { | ||||||
|  |                 File.Delete(fileToDel); | ||||||
|  |             } | ||||||
|  |              | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private IEnumerator GetSDKVersions () { | ||||||
|  |         // Wait one frame so that we don't try to show the progress bar in the middle of OnGUI(). | ||||||
|  |         yield return null; | ||||||
|  | 
 | ||||||
|  |         activity = "Downloading SDK version manifest..."; | ||||||
|  | 
 | ||||||
|  |         UnityWebRequest www = new UnityWebRequest (AmazonConstants.manifestURL) { | ||||||
|  |             downloadHandler = new DownloadHandlerBuffer (), | ||||||
|  |             timeout = 10, // seconds | ||||||
|  |         }; | ||||||
|  |         yield return www.SendWebRequest (); | ||||||
|  | 
 | ||||||
|  |         if (!string.IsNullOrEmpty (www.error)) { | ||||||
|  |             Debug.LogError (www.error); | ||||||
|  |             EditorUtility.DisplayDialog ( | ||||||
|  |                 "SDK Manager Service", | ||||||
|  |                 "The services we need are not accessible. Please consider integrating manually.\n\n" + | ||||||
|  |                 "For instructions, see " + AmazonConstants.helpLink, | ||||||
|  |                 "OK"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var json = www.downloadHandler.text; | ||||||
|  |         if (string.IsNullOrEmpty (json)) { | ||||||
|  |             json = "{}"; | ||||||
|  |             Debug.LogError ("Unable to retrieve SDK version manifest.  Showing installed SDKs only."); | ||||||
|  |         } | ||||||
|  |         www.Dispose (); | ||||||
|  | 
 | ||||||
|  |         // Got the file.  Now extract info on latest SDKs available. | ||||||
|  |         amazonSdkInfo = new SdkInfo (); | ||||||
|  |         sdkInfo.Clear (); | ||||||
|  |         var dict = Json.Deserialize (json) as Dictionary<string, object>; | ||||||
|  |         if (dict != null) { | ||||||
|  |             object obj; | ||||||
|  |             if (dict.TryGetValue ("sdk", out obj)) { | ||||||
|  |                 amazonSdkInfo.FromJson ("sdk", obj as Dictionary<string, object>); | ||||||
|  |                 amazonSdkInfo.CurrentVersion = AmazonConstants.VERSION; | ||||||
|  |             } | ||||||
|  |             if (dict.TryGetValue ("adapters", out obj)){ | ||||||
|  |                 var info = new SdkInfo (); | ||||||
|  |                 foreach (var item in obj as Dictionary<string, object>) { | ||||||
|  |                     if (info.FromJson (item.Key, item.Value as Dictionary<string, object>)) | ||||||
|  |                             sdkInfo[info.Key] = info; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var baseType = typeof(AmazonPackageConfig); | ||||||
|  |         var configs = from t in Assembly.GetExecutingAssembly().GetTypes() | ||||||
|  |                       where t.IsSubclassOf(baseType) && !t.IsAbstract | ||||||
|  |                       select Activator.CreateInstance(t) as AmazonPackageConfig; | ||||||
|  |         foreach (var config in configs) { | ||||||
|  |             SdkInfo info; | ||||||
|  |             sdkInfo.TryGetValue(config.Name, out info); | ||||||
|  |             if (info.FromConfig(config) && info.Key != null) | ||||||
|  |                 sdkInfo[info.Key] = info; | ||||||
|  |         } | ||||||
|  |         coroutine = null; | ||||||
|  | 
 | ||||||
|  |         deleteUnwantedFiles(); | ||||||
|  |         Repaint (); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     void OnGUI () { | ||||||
|  |         // Is any async job in progress? | ||||||
|  |         var stillWorking = coroutine != null || downloader != null; | ||||||
|  | 
 | ||||||
|  |         GUILayout.Space (5); | ||||||
|  |         EditorGUILayout.LabelField ("Amazon SDKs", labelStyle, GUILayout.Height (20)); | ||||||
|  |         using (new EditorGUILayout.VerticalScope("box")) { | ||||||
|  |             SdkHeaders(); | ||||||
|  |             SdkRow(amazonSdkInfo); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (sdkInfo.Count > 0) { | ||||||
|  |             GUILayout.Space (5); | ||||||
|  |             EditorGUILayout.LabelField ("Mediated Networks", labelStyle, GUILayout.Height (20)); | ||||||
|  |             using (new EditorGUILayout.VerticalScope ("box")) | ||||||
|  |             using (var s = new EditorGUILayout.ScrollViewScope (scrollPos, false, false)) { | ||||||
|  |                 scrollPos = s.scrollPosition; | ||||||
|  |                 SdkHeaders (); | ||||||
|  |                 foreach (var item in sdkInfo) | ||||||
|  |                     SdkRow (item.Value); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Indicate async operation in progress. | ||||||
|  |         using (new EditorGUILayout.HorizontalScope (GUILayout.ExpandWidth (false))) | ||||||
|  |         EditorGUILayout.LabelField (stillWorking ? activity : " "); | ||||||
|  | 
 | ||||||
|  |         using (new EditorGUILayout.HorizontalScope ()) { | ||||||
|  |             GUILayout.Space (10); | ||||||
|  |             if (!stillWorking) { | ||||||
|  |                 if (GUILayout.Button ("Done", fieldWidth)) | ||||||
|  |                     Close (); | ||||||
|  |             } else { | ||||||
|  |                 if (GUILayout.Button ("Cancel", fieldWidth)) | ||||||
|  |                     CancelOperation (); | ||||||
|  |             } | ||||||
|  |             if (GUILayout.Button ("Help", fieldWidth)) | ||||||
|  |                 Application.OpenURL (AmazonConstants.helpLink); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void SdkHeaders () { | ||||||
|  |         using (new EditorGUILayout.HorizontalScope (GUILayout.ExpandWidth (false))) { | ||||||
|  |             GUILayout.Space (10); | ||||||
|  |             EditorGUILayout.LabelField ("Package", headerStyle); | ||||||
|  |             GUILayout.Button ("Version", headerStyle); | ||||||
|  |             GUILayout.Space (3); | ||||||
|  |             GUILayout.Button ("Action", headerStyle, fieldWidth); | ||||||
|  |             GUILayout.Button (" ", headerStyle, GUILayout.Width (1)); | ||||||
|  |             GUILayout.Space (5); | ||||||
|  |         } | ||||||
|  |         GUILayout.Space (4); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void SdkRow (SdkInfo info, Func<bool, bool> customButton = null) { | ||||||
|  |         var lat = info.LatestVersion; | ||||||
|  |         var cur = info.CurrentVersion; | ||||||
|  |         var isInst = !string.IsNullOrEmpty (cur); | ||||||
|  |         var canInst = !string.IsNullOrEmpty (lat) && (!isInst || AmazonUtils.CompareVersions (cur, lat) < 0); | ||||||
|  |         // Is any async job in progress? | ||||||
|  |         var stillWorking = coroutine != null || downloader != null; | ||||||
|  | 
 | ||||||
|  |         string tooltip = string.Empty; | ||||||
|  |         if (isInst && (AmazonUtils.CompareVersions (cur, lat) != 0)) | ||||||
|  |             tooltip += "\n  Installed:  " + cur; | ||||||
|  |         if (!string.IsNullOrEmpty (tooltip)) | ||||||
|  |             tooltip = info.Name + "\n  Package:  " + (lat ?? "n/a") + tooltip; | ||||||
|  | 
 | ||||||
|  |         GUILayout.Space (4); | ||||||
|  |         using (new EditorGUILayout.HorizontalScope (GUILayout.ExpandWidth (false))) { | ||||||
|  |             GUILayout.Space (10); | ||||||
|  |             EditorGUILayout.LabelField (new GUIContent { text = info.Name, tooltip = tooltip }); | ||||||
|  |             GUILayout.Button (new GUIContent { | ||||||
|  |                 text = lat ?? "--", | ||||||
|  |                     tooltip = tooltip | ||||||
|  |             }, canInst ? EditorStyles.boldLabel : EditorStyles.label); | ||||||
|  |             GUILayout.Space (3); | ||||||
|  |             if (customButton == null || !customButton (canInst)) { | ||||||
|  |                 GUI.enabled = !stillWorking && (canInst); | ||||||
|  |                 if (GUILayout.Button (new GUIContent { | ||||||
|  |                         text = isInst ? "Upgrade" : "Install", | ||||||
|  |                             tooltip = tooltip | ||||||
|  |                     }, fieldWidth)) | ||||||
|  |                     this.StartCoroutine (DownloadSDK (info)); | ||||||
|  |                 GUI.enabled = true; | ||||||
|  |             } | ||||||
|  |                 // Need to fill space so that the Install/Upgrade buttons all line up nicely. | ||||||
|  |             GUILayout.Button (" ", EditorStyles.label, GUILayout.Width (17)); | ||||||
|  |             GUILayout.Space (5); | ||||||
|  |         } | ||||||
|  |         GUILayout.Space (4); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private void CancelOperation () { | ||||||
|  |         // Stop any async action taking place. | ||||||
|  | 
 | ||||||
|  |         if (downloader != null) { | ||||||
|  |             downloader.Abort (); // The coroutine should resume and clean up. | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (coroutine != null) | ||||||
|  |             this.StopCoroutine (coroutine.routine); | ||||||
|  |         coroutine = null; | ||||||
|  |         downloader = null; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     private IEnumerator DownloadSDK (SdkInfo info) { | ||||||
|  |         var path = Path.Combine (downloadDir, info.Filename); | ||||||
|  | 
 | ||||||
|  |         activity = string.Format ("Downloading {0}...", info.Filename); | ||||||
|  |         Debug.Log (activity); | ||||||
|  | 
 | ||||||
|  |         // Start the async download job. | ||||||
|  |         downloader = new UnityWebRequest (info.Url) { | ||||||
|  |             downloadHandler = new DownloadHandlerFile (path), | ||||||
|  |             timeout = 60, // seconds | ||||||
|  |         }; | ||||||
|  |         downloader.SendWebRequest (); | ||||||
|  | 
 | ||||||
|  |         // Pause until download done/cancelled/fails, keeping progress bar up to date. | ||||||
|  |         while (!downloader.isDone) { | ||||||
|  |             yield return null; | ||||||
|  |             var progress = Mathf.FloorToInt (downloader.downloadProgress * 100); | ||||||
|  |             if (EditorUtility.DisplayCancelableProgressBar ("Amazon SDK Manager", activity, progress)) | ||||||
|  |                 downloader.Abort (); | ||||||
|  |         } | ||||||
|  |         EditorUtility.ClearProgressBar (); | ||||||
|  | 
 | ||||||
|  |         if (string.IsNullOrEmpty (downloader.error)) | ||||||
|  |             AssetDatabase.ImportPackage (path, true); // OK, got the file, so let the user import it if they want. | ||||||
|  |         else { | ||||||
|  |             var error = downloader.error; | ||||||
|  |             if (downloader.isNetworkError) { | ||||||
|  |                 if (error.EndsWith ("destination host")) | ||||||
|  |                     error += ": " + info.Url; | ||||||
|  |             } else if (downloader.isHttpError) { | ||||||
|  |                 switch (downloader.responseCode) { | ||||||
|  |                     case 404: | ||||||
|  |                         var file = Path.GetFileName (new Uri (info.Url).LocalPath); | ||||||
|  |                         error = string.Format ("File {0} not found on server.", file); | ||||||
|  |                         break; | ||||||
|  |                     default: | ||||||
|  |                         error = downloader.responseCode + "\n" + error; | ||||||
|  |                         break; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             Debug.LogError (error); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // Reset async state so the GUI is operational again. | ||||||
|  |         downloader.Dispose (); | ||||||
|  |         downloader = null; | ||||||
|  |         coroutine = null; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 9436cb85e61464fbb8e7434090ec1af2 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: e64d0b097e7e04e59b22cd2d61ff42a5 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,41 @@ | ||||||
|  | using System; | ||||||
|  | using NUnit.Framework; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | // ReSharper disable Unity.IncorrectMonoBehaviourInstantiation | ||||||
|  | 
 | ||||||
|  | namespace Tests | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |     public class AmazonSDKTests : AmazonTest | ||||||
|  |     { | ||||||
|  |         [Test] | ||||||
|  |         public void EmitAdLoadedEventShouldTriggerOnAdLoadedEvent() | ||||||
|  |         { | ||||||
|  |             TestEmitAdLoadedEvent(new AmazonAds.Android.AndroidAdResponse()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         private static void TestEmitAdLoadedEvent(AmazonAds.AdResponse response) | ||||||
|  |         { | ||||||
|  |             const string successMessage = "OnAdLoadedEvent triggered."; | ||||||
|  |             AmazonAds.Amazon.OnSuccessDelegate successHandler = (_response) => { | ||||||
|  |                 Assert.That(_response, Is.EqualTo(response)); | ||||||
|  |                 Debug.Log(successMessage); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             const string failureMessage = "OnAdFailedEvent triggered."; | ||||||
|  |             AmazonAds.Amazon.OnFailureDelegate failureHandler = (_error) => { | ||||||
|  |                 Debug.Log(failureMessage); | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             try { | ||||||
|  |                 successHandler.Invoke(response); | ||||||
|  |                 failureHandler.Invoke("123"); | ||||||
|  |             } finally { | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 8b00fb31f302f4b26a43151fd12cffbc | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | using UnityEngine; | ||||||
|  | using UnityEngine.TestTools; | ||||||
|  | 
 | ||||||
|  | public class AmazonTest | ||||||
|  | { | ||||||
|  |     public static class LogAssert | ||||||
|  |     { | ||||||
|  |         public static void Expect(LogType logType, string message) | ||||||
|  |         { | ||||||
|  |             UnityEngine.TestTools.LogAssert.Expect(logType, message); | ||||||
|  |             Debug.LogFormat("The previous {0} log was expected.", logType); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: fe3a64de565fa4daa9ac26c80cdb1f6e | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,102 @@ | ||||||
|  | using NUnit.Framework; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace Tests | ||||||
|  | { | ||||||
|  |     public class AmazonUtilsTests : AmazonTest | ||||||
|  |     { | ||||||
|  |         [Test] | ||||||
|  |         public void CompareVersionsWithFirstSmaller() | ||||||
|  |         { | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0", "1"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.9", "1.0"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.9.99", "1.0.0"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.9.99", "0.10.0"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.9.99", "0.9.100"), Is.EqualTo(-1)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void CompareVersionsWithFirstGreater() | ||||||
|  |         { | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1", "0"), Is.EqualTo(1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1.0", "0.9"), Is.EqualTo(1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1.0.0", "0.9.99"), Is.EqualTo(1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.10.0", "0.9.99"), Is.EqualTo(1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("0.9.100", "0.9.99"), Is.EqualTo(1)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void CompareVersionsWithEqual() | ||||||
|  |         { | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1", "1"), Is.EqualTo(0)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1.0", "1.0"), Is.EqualTo(0)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1.0.0", "1.0.0"), Is.EqualTo(0)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void CompareVersionsWithEmptyValues() | ||||||
|  |         { | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("", ""), Is.EqualTo(0)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("", "1"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1", ""), Is.EqualTo(1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions(null, null), Is.EqualTo(0)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions(null, "1"), Is.EqualTo(-1)); | ||||||
|  |             Assert.That(AmazonUtils.CompareVersions("1", null), Is.EqualTo(1)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void DecodeArgsWithNullShouldErrorAndYieldEmptyList() | ||||||
|  |         { | ||||||
|  |             var res = AmazonUtils.DecodeArgs(null, 0); | ||||||
|  | 
 | ||||||
|  |             LogAssert.Expect(LogType.Error, "Invalid JSON data: "); | ||||||
|  |             Assert.That(res, Is.Not.Null); | ||||||
|  |             Assert.That(res.Length, Is.EqualTo(0)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void DecodeArgsWithInvalidShouldErrorAndYieldEmptyList() | ||||||
|  |         { | ||||||
|  |             var res = AmazonUtils.DecodeArgs("{\"a\"]", 0); | ||||||
|  | 
 | ||||||
|  |             LogAssert.Expect(LogType.Error, "Invalid JSON data: {\"a\"]"); | ||||||
|  |             Assert.That(res, Is.Not.Null); | ||||||
|  |             Assert.That(res.Length, Is.EqualTo(0)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void DecodeArgsWithValueShouldYieldListWithValue() | ||||||
|  |         { | ||||||
|  |             var res = AmazonUtils.DecodeArgs("[\"a\"]", 0); | ||||||
|  | 
 | ||||||
|  |             Assert.That(res, Is.Not.Null); | ||||||
|  |             Assert.That(res.Length, Is.EqualTo(1)); | ||||||
|  |             Assert.That(res[0], Is.EqualTo("a")); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void DecodeArgsWithoutMinimumValuesShouldErrorAndYieldListWithDesiredLength() | ||||||
|  |         { | ||||||
|  |             var res = AmazonUtils.DecodeArgs("[\"a\", \"b\"]", 3); | ||||||
|  | 
 | ||||||
|  |             LogAssert.Expect(LogType.Error, "Missing one or more values: [\"a\", \"b\"] (expected 3)"); | ||||||
|  |             Assert.That(res, Is.Not.Null); | ||||||
|  |             Assert.That(res.Length, Is.EqualTo(3)); | ||||||
|  |             Assert.That(res[0], Is.EqualTo("a")); | ||||||
|  |             Assert.That(res[1], Is.EqualTo("b")); | ||||||
|  |             Assert.That(res[2], Is.EqualTo("")); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         [Test] | ||||||
|  |         public void DecodeArgsWithExpectedValuesShouldYieldListWithDesiredValues() | ||||||
|  |         { | ||||||
|  |             var res = AmazonUtils.DecodeArgs("[\"a\", \"b\", \"c\"]", 3); | ||||||
|  | 
 | ||||||
|  |             Assert.That(res, Is.Not.Null); | ||||||
|  |             Assert.That(res.Length, Is.EqualTo(3)); | ||||||
|  |             Assert.That(res[0], Is.EqualTo("a")); | ||||||
|  |             Assert.That(res[1], Is.EqualTo("b")); | ||||||
|  |             Assert.That(res[2], Is.EqualTo("c")); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: e4a38f41a15b0444380ccd4a74a12ac2 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 3eac84282b79049f0bbadc32296d7b29 | ||||||
|  | folderAsset: yes | ||||||
|  | DefaultImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,34 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class APSAdDelegate { | ||||||
|  |         public delegate void OnAdLoaded (); | ||||||
|  |         public delegate void OnAdFailed (); | ||||||
|  |         public delegate void OnAdClicked (); | ||||||
|  |         public delegate void OnAdOpen (); | ||||||
|  |         public delegate void OnAdClosed (); | ||||||
|  |         public delegate void OnImpressionFired (); | ||||||
|  |         public delegate void OnVideoCompleted (); | ||||||
|  | 
 | ||||||
|  |         public OnAdLoaded onAdLoaded = OnAdLoadedImpl; | ||||||
|  |         public OnAdFailed onAdFailed = OnAdFailedImpl; | ||||||
|  |         public OnAdClicked onAdClicked = OnAdClickedImpl; | ||||||
|  |         public OnAdOpen onAdOpen = OnAdOpenImpl; | ||||||
|  |         public OnAdClosed onAdClosed = OnAdClosedImpl; | ||||||
|  |         public OnImpressionFired onImpressionFired = OnImpressionFiredImpl; | ||||||
|  |         public OnVideoCompleted onVideoCompleted = OnVideoCompletedImpl; | ||||||
|  | 
 | ||||||
|  |         public APSAdDelegate () { | ||||||
|  | 
 | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private static void OnAdLoadedImpl () { } | ||||||
|  |         private static void OnAdFailedImpl () { } | ||||||
|  |         private static void OnAdClickedImpl () { } | ||||||
|  |         private static void OnAdOpenImpl () { } | ||||||
|  |         private static void OnAdClosedImpl () { } | ||||||
|  |         private static void OnImpressionFiredImpl () { } | ||||||
|  |         private static void OnVideoCompletedImpl () { } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: d06f90422ce794d848656240f4d00aae | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,88 @@ | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class APSBannerAdRequest : AdRequest { | ||||||
|  | 
 | ||||||
|  |         public APSBannerAdRequest () : base() {   | ||||||
|  |              Amazon.OnApplicationPause += OnApplicationPause; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public APSBannerAdRequest (string slotGroupName) : base() { | ||||||
|  |             Amazon.OnApplicationPause += OnApplicationPause; | ||||||
|  |             client.SetSlotGroup (slotGroupName); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public APSBannerAdRequest (int width, int height, string uid) : base() { | ||||||
|  |             Amazon.OnApplicationPause += OnApplicationPause; | ||||||
|  |             AdSize size = new AdSize (width, height, uid); | ||||||
|  |             client.SetSizes (size.GetInstance ()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public APSBannerAdRequest (AdSize size) { | ||||||
|  |             Amazon.OnApplicationPause += OnApplicationPause; | ||||||
|  |             client.SetSizes (size.GetInstance ()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void LoadSmartBanner () { | ||||||
|  |             if (onSuccess != null && onFailed != null) { | ||||||
|  |                 client.LoadSmartBanner (onFailed, onSuccess); | ||||||
|  |             } else if (onSuccess != null && onFailedWithError != null) { | ||||||
|  |                 client.LoadSmartBanner (onFailedWithError, onSuccess); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetSizes (int width, int height, string uid) { | ||||||
|  |             AdSize size = new AdSize (width, height, uid); | ||||||
|  |             SetSizes (size); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetSizes (AdSize size) { | ||||||
|  |             client.SetSizes (size.GetInstance ()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetSlotGroup (string slotGroupName) { | ||||||
|  |             client.SetSlotGroup (slotGroupName); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetAutoRefreshAdMob (bool flag, bool isSmartBanner = false) { | ||||||
|  |             client.SetAutoRefreshAdMob (flag, isSmartBanner); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetAutoRefreshMoPub (bool flag, int refreshTime) { | ||||||
|  |             client.SetAutoRefreshMoPub (flag, refreshTime); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void DisposeAd () { | ||||||
|  |             client.DisposeAd (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void IsAutoRefreshAdMob () { | ||||||
|  |             client.IsAutoRefreshAdMob (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void IsAutoRefreshMoPub () { | ||||||
|  |             client.IsAutoRefreshMoPub (); | ||||||
|  |         } | ||||||
|  |         public string AutoRefreshID () { | ||||||
|  |             return client.AutoRefreshID (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void CreateFetchManager (bool isSmartBanner = false) { | ||||||
|  |             client.CreateFetchManager (isSmartBanner); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void DestroyFetchManager () { | ||||||
|  |             client.DestroyFetchManager (); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void OnApplicationPause (bool isPaused) { | ||||||
|  |             if (isPaused) { | ||||||
|  |                 if( client.IsAutoRefreshAdMob() ){ | ||||||
|  |                     client.StopFetchManager(); | ||||||
|  |                 } | ||||||
|  |             } else { | ||||||
|  |                 if( client.IsAutoRefreshAdMob() ){ | ||||||
|  |                     client.StartFetchManager(); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 62abdd252c1aa49beb917ca0a7b4d3b3 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class APSInterstitialAdRequest : AdRequest { | ||||||
|  |         public APSInterstitialAdRequest (string uid) { | ||||||
|  |             AdSize.InterstitialAdSize size = new AdSize.InterstitialAdSize (uid); | ||||||
|  |             client.SetSizes (size.GetInstance ()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: a60589c70736841a6b26fa39087d8e98 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,41 @@ | ||||||
|  | using System; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class APSMediationUtils | ||||||
|  |     { | ||||||
|  |         public static string APS_IRON_SOURCE_NETWORK_KEY = "APS"; | ||||||
|  | 
 | ||||||
|  |         public static string GetInterstitialNetworkData(string amazonSlotId, string bidInfo, string pricePoint) | ||||||
|  |         { | ||||||
|  |             APSIronSourceNetworkBaseInputData ironSourceInputData = new APSIronSourceNetworkBaseInputData(); | ||||||
|  |             ironSourceInputData.bidInfo = bidInfo; | ||||||
|  |             ironSourceInputData.pricePointEncoded = pricePoint; | ||||||
|  |             ironSourceInputData.uuid = amazonSlotId; | ||||||
|  | 
 | ||||||
|  |             APSIronSourceInterstitialNetworkData networkData = new APSIronSourceInterstitialNetworkData(); | ||||||
|  |             networkData.interstitial = ironSourceInputData; | ||||||
|  | 
 | ||||||
|  |             string jsonData = "{ \"interstitial\" :" + JsonUtility.ToJson(ironSourceInputData) + "}"; | ||||||
|  |             return jsonData; | ||||||
|  | 
 | ||||||
|  |             //return JsonUtility.ToJson(networkData); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public class APSIronSourceNetworkBaseInputData | ||||||
|  |         { | ||||||
|  |             public string bidInfo; | ||||||
|  |             public string pricePointEncoded; | ||||||
|  |             public string uuid; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public class APSIronSourceInterstitialNetworkData | ||||||
|  |         { | ||||||
|  |             public APSIronSourceNetworkBaseInputData interstitial; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         private APSMediationUtils() | ||||||
|  |         { | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: a9a84a300e9084005845d7561b5941de | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class APSVideoAdRequest : AdRequest { | ||||||
|  |         public APSVideoAdRequest (int width, int height, string uid) { | ||||||
|  |             AdSize.Video size = new AdSize.Video (width, height, uid); | ||||||
|  |             client.SetSizes (size.GetInstance ()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: f887445d62a094bdcaeba6843c76de52 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,57 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class AdError { | ||||||
|  |         private int errorCode; | ||||||
|  |         private String errorMessage; | ||||||
|  |         private AdRequest adLoader; | ||||||
|  |         private AndroidJavaObject adError; | ||||||
|  |         private IntPtr adErrorPtr; | ||||||
|  | 
 | ||||||
|  |         public AdError(int code, String message) { | ||||||
|  |             errorCode = code; | ||||||
|  |             errorMessage = message; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public int GetCode () { | ||||||
|  |             return errorCode; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public String GetMessage() { | ||||||
|  |             return errorMessage; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public AdRequest GetAdLoader() { | ||||||
|  |             return adLoader; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |         public AndroidJavaObject GetAdError() { | ||||||
|  |             return adError; | ||||||
|  |         } | ||||||
|  | #else | ||||||
|  |         public IntPtr GetAdError() | ||||||
|  |         { | ||||||
|  |             return adErrorPtr; | ||||||
|  |         } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |         public IntPtr GetInstance() { | ||||||
|  |             return adErrorPtr; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         internal void SetAdLoader(AdRequest adRequest) { | ||||||
|  |             adLoader = adRequest; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         internal void SetAdError(AndroidJavaObject error) { | ||||||
|  |             adError = error; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         internal void SetInstance(IntPtr inPtr) { | ||||||
|  |             adErrorPtr = inPtr; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 56cbe6c6e32004910b2c76cefbf4e0c6 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class AdInterstitial { | ||||||
|  |         internal IAdInterstitial adInterstital; | ||||||
|  | 
 | ||||||
|  |         public AdInterstitial (APSAdDelegate delegates) { | ||||||
|  |             #if UNITY_ANDROID | ||||||
|  |                 adInterstital = new Android.AndroidAdInterstitial(delegates); | ||||||
|  |             #elif UNITY_IOS | ||||||
|  |                 adInterstital = new IOS.IOSAdInterstitial(delegates); | ||||||
|  |             #else | ||||||
|  |                 //Other platforms not supported | ||||||
|  |             #endif | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void FetchAd (AdResponse adResponse) { | ||||||
|  |             adInterstital.FetchAd(adResponse); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void Show () { | ||||||
|  |             adInterstital.Show(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: b6b4a1dc9a6eb4aac89ddfeb50a829a5 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,30 @@ | ||||||
|  | using System; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public enum DTBAdNetwork {  | ||||||
|  |         GOOGLE_AD_MANAGER, | ||||||
|  |         MOPUB_AD_SERVER, | ||||||
|  |         ADMOB, | ||||||
|  |         AD_GENERATION, | ||||||
|  |         IRON_SOURCE, | ||||||
|  |         MAX, | ||||||
|  |         NIMBUS, | ||||||
|  |         OTHER | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public class AdNetworkInfo { | ||||||
|  |         private DTBAdNetwork adNetwork; | ||||||
|  | 
 | ||||||
|  |         public AdNetworkInfo(DTBAdNetwork dtbAdNetwork) { | ||||||
|  |             adNetwork = dtbAdNetwork; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public String getAdNetworkName() { | ||||||
|  |             return adNetwork.ToString(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         internal DTBAdNetwork getAdNetwork() { | ||||||
|  |             return adNetwork; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 86929efe844004ce4a245fed201d6f9b | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,59 @@ | ||||||
|  | using UnityEngine; | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class AdRequest { | ||||||
|  |         internal IAdRequest client; | ||||||
|  |         public Amazon.OnFailureDelegate onFailed; | ||||||
|  |         public Amazon.OnFailureWithErrorDelegate onFailedWithError; | ||||||
|  |         public Amazon.OnSuccessDelegate onSuccess; | ||||||
|  | 
 | ||||||
|  |         public AdRequest () { | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |             client = new Android.DTBAdRequest (); | ||||||
|  | #elif UNITY_IOS | ||||||
|  |             client = new IOS.DTBAdRequest (); | ||||||
|  | #else | ||||||
|  |             //Other platforms not supported | ||||||
|  | #endif | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public AdRequest (IAdRequest adRequest) { | ||||||
|  |             client = adRequest; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void PutCustomTarget (string key, string value) { | ||||||
|  |             client.PutCustomTarget (key, value); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetRefreshFlag (bool flag) { | ||||||
|  |             client.SetRefreshFlag(flag); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetAutoRefresh() { | ||||||
|  |             client.SetAutoRefresh(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void SetAutoRefresh(int secs) { | ||||||
|  |             client.SetAutoRefresh(secs); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void ResumeAutoRefresh() { | ||||||
|  |             client.ResumeAutoRefresh(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void StopAutoRefresh() { | ||||||
|  |             client.StopAutoRefresh(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void PauseAutoRefresh() { | ||||||
|  |             client.PauseAutoRefresh(); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void LoadAd () { | ||||||
|  |             if (onSuccess != null && onFailed != null) { | ||||||
|  |                 client.LoadAd (onFailed, onSuccess); | ||||||
|  |             } else if (onSuccess != null && onFailedWithError != null) { | ||||||
|  |                 client.LoadAd (onFailedWithError, onSuccess); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 470ce0a8c403f4531ac94b5ebe2ea5f4 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,4 @@ | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public abstract class AdResponseObsolete { | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 07d84938416874bbb97e941098b24279 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,28 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using UnityEngine; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public abstract class AdResponse { | ||||||
|  |         public abstract String GetMoPubKeywords (); | ||||||
|  |         public abstract IntPtr GetInstance(); | ||||||
|  |         public abstract Dictionary<String, String> GetRendering (bool isSmartBanner = false, string fetchLabel = null); | ||||||
|  |         public abstract AdRequest GetAdLoader(); | ||||||
|  |         public abstract String GetBidInfo(); | ||||||
|  |         public abstract String GetPricePoint(); | ||||||
|  |         public abstract int GetWidth(); | ||||||
|  |         public abstract int GetHeight(); | ||||||
|  |         public abstract String GetMediationHints(bool isSmartBanner = false); | ||||||
|  |         internal abstract void SetAdLoader(AdRequest adRequest); | ||||||
|  | 
 | ||||||
|  |         public abstract IntPtr GetIosResponseObject(); | ||||||
|  |         public abstract AndroidJavaObject GetAndroidResponseObject(); | ||||||
|  | 
 | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |         public abstract AndroidJavaObject GetResponse(); | ||||||
|  | #else | ||||||
|  |         public abstract IntPtr GetResponse(); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 80115d4cd111a4902804a0557a637367 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,47 @@ | ||||||
|  | using System; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class AdSize { | ||||||
|  |         IAdSize client; | ||||||
|  |         public AdSize (int width, int height, String slotUID) { | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |             client = new Android.DTBAdSize (width, height, slotUID); | ||||||
|  | #elif UNITY_IOS | ||||||
|  |             client = new IOS.DTBAdSize (width, height, slotUID); | ||||||
|  | #endif | ||||||
|  |         } | ||||||
|  |         public IAdSize GetInstance () { | ||||||
|  |             return client; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public class InterstitialAdSize { | ||||||
|  |             IInterstitialAdSize client; | ||||||
|  |             public InterstitialAdSize (String slotUID) { | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |                 client = new Android.DTBAdSize.DTBInterstitialAdSize (slotUID); | ||||||
|  | #elif UNITY_IOS | ||||||
|  |                 client = new IOS.DTBAdSize.DTBInterstitialAdSize (slotUID); | ||||||
|  | #endif | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public IInterstitialAdSize GetInstance () { | ||||||
|  |                 return client; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public class Video { | ||||||
|  |             IVideo client; | ||||||
|  |             public Video (int playerWidth, int playerHeight, String slotUUID) { | ||||||
|  | #if UNITY_ANDROID | ||||||
|  |                 client = new Android.DTBAdSize.DTBVideo (playerWidth, playerHeight, slotUUID); | ||||||
|  | #elif UNITY_IOS | ||||||
|  |                 client = new IOS.DTBAdSize.DTBVideo (playerWidth, playerHeight, slotUUID); | ||||||
|  | #endif | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             public IVideo GetInstance () { | ||||||
|  |                 return client; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | fileFormatVersion: 2 | ||||||
|  | guid: 6669e9284e4b5497fb351ae7bcb28436 | ||||||
|  | MonoImporter: | ||||||
|  |   externalObjects: {} | ||||||
|  |   serializedVersion: 2 | ||||||
|  |   defaultReferences: [] | ||||||
|  |   executionOrder: 0 | ||||||
|  |   icon: {instanceID: 0} | ||||||
|  |   userData:  | ||||||
|  |   assetBundleName:  | ||||||
|  |   assetBundleVariant:  | ||||||
|  | @ -0,0 +1,22 @@ | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | 
 | ||||||
|  | namespace AmazonAds { | ||||||
|  |     public class AdView { | ||||||
|  |         internal IAdView adView; | ||||||
|  | 
 | ||||||
|  |         public AdView (AdSize adSize, APSAdDelegate delegates) { | ||||||
|  |             #if UNITY_ANDROID | ||||||
|  |                 adView = new Android.AndroidAdView(delegates); | ||||||
|  |             #elif UNITY_IOS | ||||||
|  |                 adView = new IOS.IOSAdView(adSize, delegates); | ||||||
|  |             #else | ||||||
|  |                 //Other platforms not supported | ||||||
|  |             #endif | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public void fetchAd (AdResponse adResponse) { | ||||||
|  |             adView.FetchAd(adResponse); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue