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);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 |