146 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			146 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C#
		
	
	
|  | using System; | ||
|  | using System.Collections.Generic; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace AmazonAds | ||
|  | { | ||
|  |     public class APSAdRequestExtra | ||
|  |     { | ||
|  |         private static readonly string ADMOB_SLOTUUID_KEY = "amazon_custom_event_slot_uuid"; | ||
|  |         private static readonly string ADMOB_REQUEST_ID_KEY = "amazon_custom_event_request_id"; | ||
|  |         private static readonly string APS_ADAPTER_VERSION = "amazon_custom_event_adapter_version"; | ||
|  |         private static readonly string ADMOB_ISVIDEO_KEY = "amazon_custom_event_is_video"; | ||
|  |         private static readonly string ADMOB_WIDTH_KEY = "amazon_custom_event_width"; | ||
|  |         private static readonly string ADMOB_HEIGHT_KEY = "amazon_custom_event_height"; | ||
|  |         private static readonly string APS_ADMOB_CONST_CCPA_APS_PRIVACY = "aps_privacy"; | ||
|  |         private static readonly string APS_ADMOB_CONST_CCPA_US_PRIVACY = "us_privacy"; | ||
|  |         private static readonly AndroidJavaClass dtbAdUtil = new AndroidJavaClass ("com.amazon.device.ads.DTBAdUtil"); | ||
|  | 
 | ||
|  |         private APSAdRequestExtra (Builder builder) { | ||
|  |             this.SlotUUID = builder.SlotUUID; | ||
|  |             this.BannerAdHeight = builder.AdHeight; | ||
|  |             this.BannerAdWidth = builder.AdWidth; | ||
|  |             this.CCPAPrivacy = builder.CCPAPrivacy; | ||
|  |         } | ||
|  | 
 | ||
|  |         public string SlotUUID { get; private set; } | ||
|  |         public int BannerAdHeight { get; private set; } | ||
|  |         public int BannerAdWidth { get; private set; } | ||
|  |         public Dictionary<string, string> CCPAPrivacy { private get;  set; } | ||
|  | 
 | ||
|  |         public Dictionary<string, string> GetAdMobInterstitialRequestExtras () | ||
|  |         { | ||
|  |             Dictionary<String, String> AdMobRequestExtras = createExtras (); | ||
|  |             if (SlotUUID == null) | ||
|  |             { | ||
|  |                 return AdMobRequestExtras; | ||
|  |             } | ||
|  | 
 | ||
|  | #if UNITY_ANDROID | ||
|  |             AndroidJavaObject bundle = dtbAdUtil.CallStatic<AndroidJavaObject>("createAdMobInterstitialVideoRequestBundle", SlotUUID); | ||
|  |             AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, bundle.Call<String>("getString", ADMOB_SLOTUUID_KEY)); | ||
|  |             AdMobRequestExtras.Add (ADMOB_REQUEST_ID_KEY, bundle.Call<String>("getString", ADMOB_REQUEST_ID_KEY)); | ||
|  |             AdMobRequestExtras.Add (APS_ADAPTER_VERSION, bundle.Call<String>("getString", APS_ADAPTER_VERSION));        | ||
|  | #else | ||
|  |             AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, SlotUUID); | ||
|  | #endif | ||
|  |             return AdMobRequestExtras; | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  |         public Dictionary<string, string> GetAdMobBannerRequestExtras () | ||
|  |         { | ||
|  |             Dictionary<String, String> AdMobRequestExtras = createExtras(); | ||
|  |             if (SlotUUID == null || BannerAdWidth  == 0 || BannerAdHeight == 0) | ||
|  |             { | ||
|  |                 return AdMobRequestExtras; | ||
|  |             } | ||
|  | 
 | ||
|  | #if UNITY_ANDROID | ||
|  |             AndroidJavaObject bundle = dtbAdUtil.CallStatic<AndroidJavaObject> ("createAdMobBannerRequestBundle", SlotUUID, BannerAdWidth, BannerAdHeight); | ||
|  |             AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, bundle.Call<String>("getString", ADMOB_SLOTUUID_KEY)); | ||
|  |             AdMobRequestExtras.Add (ADMOB_HEIGHT_KEY, bundle.Call<int>("getInt", ADMOB_HEIGHT_KEY).ToString()); | ||
|  |             AdMobRequestExtras.Add (ADMOB_WIDTH_KEY, bundle.Call<int>("getInt", ADMOB_WIDTH_KEY).ToString()); | ||
|  |             AdMobRequestExtras.Add (ADMOB_REQUEST_ID_KEY, bundle.Call<String>("getString", ADMOB_REQUEST_ID_KEY)); | ||
|  |             AdMobRequestExtras.Add (APS_ADAPTER_VERSION, bundle.Call<String>("getString", APS_ADAPTER_VERSION)); | ||
|  | #else | ||
|  | 
 | ||
|  |             AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, SlotUUID); | ||
|  |             AdMobRequestExtras.Add (ADMOB_WIDTH_KEY, BannerAdWidth.ToString()); | ||
|  |             AdMobRequestExtras.Add (ADMOB_HEIGHT_KEY, BannerAdHeight.ToString()); | ||
|  | 
 | ||
|  | #endif | ||
|  | 
 | ||
|  |             return AdMobRequestExtras; | ||
|  |         } | ||
|  | 
 | ||
|  |         private Dictionary<String, String> createExtras() | ||
|  |         { | ||
|  |             Dictionary<String, String> extrasMap = new Dictionary<string, string>(); | ||
|  |             if (CCPAPrivacy != null) | ||
|  |             { | ||
|  |                 if (CCPAPrivacy.TryGetValue (APS_ADMOB_CONST_CCPA_APS_PRIVACY, out string ccpa_aps_privacy)) | ||
|  |                 { | ||
|  |                     extrasMap.Add (APS_ADMOB_CONST_CCPA_APS_PRIVACY, ccpa_aps_privacy); | ||
|  |                 } | ||
|  |                 if (CCPAPrivacy.TryGetValue (APS_ADMOB_CONST_CCPA_US_PRIVACY, out string ccpa_us_privacy)) | ||
|  |                 { | ||
|  |                     extrasMap.Add (APS_ADMOB_CONST_CCPA_US_PRIVACY, ccpa_us_privacy); | ||
|  |                 } | ||
|  | 
 | ||
|  |             } | ||
|  |             return extrasMap; | ||
|  | 
 | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         public class Builder | ||
|  |         { | ||
|  |             public Builder() | ||
|  |             { | ||
|  |                 this.SlotUUID = null; | ||
|  |                 this.AdHeight = 0; | ||
|  |                 this.AdWidth = 0; | ||
|  |                 this.CCPAPrivacy = new Dictionary<string, string>(); | ||
|  |             } | ||
|  | 
 | ||
|  |             internal string SlotUUID { get; private set; } | ||
|  |             internal int AdHeight { get; private set; } | ||
|  |             internal int AdWidth { get; private set; } | ||
|  |             internal Dictionary<string, string> CCPAPrivacy { get; private set; } | ||
|  | 
 | ||
|  |             public Builder AddSlotUUID(string SlotUUID) | ||
|  |             { | ||
|  |                 this.SlotUUID = SlotUUID; | ||
|  |                 return this; | ||
|  |             } | ||
|  | 
 | ||
|  |             public Builder AddHeight(int AdHeight) | ||
|  |             { | ||
|  |                 this.AdHeight = AdHeight; | ||
|  |                 return this; | ||
|  |             } | ||
|  | 
 | ||
|  |             public Builder AddWidth(int AdWidth) | ||
|  |             { | ||
|  |                 this.AdWidth = AdWidth; | ||
|  |                 return this; | ||
|  |             } | ||
|  | 
 | ||
|  |             public Builder AddCCPAPrivacy(Dictionary<string, string> CCPAPrivacy) | ||
|  |             { | ||
|  |                 this.CCPAPrivacy = CCPAPrivacy; | ||
|  |                 return this; | ||
|  |             } | ||
|  | 
 | ||
|  |             public APSAdRequestExtra Build() | ||
|  |             { | ||
|  |                 return new APSAdRequestExtra(this); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 |