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