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 CCPAPrivacy { private get; set; } public Dictionary GetAdMobInterstitialRequestExtras () { Dictionary AdMobRequestExtras = createExtras (); if (SlotUUID == null) { return AdMobRequestExtras; } #if UNITY_ANDROID AndroidJavaObject bundle = dtbAdUtil.CallStatic("createAdMobInterstitialVideoRequestBundle", SlotUUID); AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, bundle.Call("getString", ADMOB_SLOTUUID_KEY)); AdMobRequestExtras.Add (ADMOB_REQUEST_ID_KEY, bundle.Call("getString", ADMOB_REQUEST_ID_KEY)); AdMobRequestExtras.Add (APS_ADAPTER_VERSION, bundle.Call("getString", APS_ADAPTER_VERSION)); #else AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, SlotUUID); #endif return AdMobRequestExtras; } public Dictionary GetAdMobBannerRequestExtras () { Dictionary AdMobRequestExtras = createExtras(); if (SlotUUID == null || BannerAdWidth == 0 || BannerAdHeight == 0) { return AdMobRequestExtras; } #if UNITY_ANDROID AndroidJavaObject bundle = dtbAdUtil.CallStatic ("createAdMobBannerRequestBundle", SlotUUID, BannerAdWidth, BannerAdHeight); AdMobRequestExtras.Add (ADMOB_SLOTUUID_KEY, bundle.Call("getString", ADMOB_SLOTUUID_KEY)); AdMobRequestExtras.Add (ADMOB_HEIGHT_KEY, bundle.Call("getInt", ADMOB_HEIGHT_KEY).ToString()); AdMobRequestExtras.Add (ADMOB_WIDTH_KEY, bundle.Call("getInt", ADMOB_WIDTH_KEY).ToString()); AdMobRequestExtras.Add (ADMOB_REQUEST_ID_KEY, bundle.Call("getString", ADMOB_REQUEST_ID_KEY)); AdMobRequestExtras.Add (APS_ADAPTER_VERSION, bundle.Call("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 createExtras() { Dictionary extrasMap = new Dictionary(); 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(); } internal string SlotUUID { get; private set; } internal int AdHeight { get; private set; } internal int AdWidth { get; private set; } internal Dictionary 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 CCPAPrivacy) { this.CCPAPrivacy = CCPAPrivacy; return this; } public APSAdRequestExtra Build() { return new APSAdRequestExtra(this); } } } }