using System; using System.Collections.Generic; using UnityEngine; namespace AmazonAds.Android { public class AdRegistration { private static readonly AndroidJavaClass adRegistrationClass = new AndroidJavaClass ("com.amazon.device.ads.AdRegistration"); private AndroidJavaObject adRegistration = null; public void AddProvider (AndroidJavaObject provider) { // AdProvider params adRegistration.CallStatic ("AddProvider", provider); } public AndroidJavaObject GetEventDistributer () { // return EventDistributor return adRegistration.CallStatic ("getEventDistributer"); } public HashSet GtAdProviders () { // return AdProvider return adRegistration.CallStatic> ("getProprietaryProviderKeys"); } public List GetProprietaryProviderKeys () { return adRegistration.CallStatic> ("getProprietaryProviderKeys"); } public String GetAppKey () { return adRegistration.CallStatic ("getAppKey"); } public bool IsInitialized () { return adRegistration.CallStatic ("isInitialized"); } public AndroidJavaObject GetInstance (String appKey) { AndroidJavaClass playerClass = new AndroidJavaClass (AmazonConstants.unityPlayerClass); AndroidJavaObject currentActivityObject = playerClass.GetStatic ("currentActivity"); object[] adRegParams = new object[2]; adRegParams[0] = appKey; adRegParams[1] = currentActivityObject; adRegistration = adRegistrationClass.CallStatic ("getInstance", adRegParams); return adRegistration; } public void SetMRAIDPolicy (Amazon.MRAIDPolicy policy) { AndroidJavaClass mraidEnum = new AndroidJavaClass ("com.amazon.device.ads.MRAIDPolicy"); AndroidJavaObject curMraid = mraidEnum.CallStatic ("valueOf", policy.ToString ()); adRegistration.CallStatic ("setMRAIDPolicy", curMraid); } public Amazon.MRAIDPolicy GetMRAIDPolicy () { // returns MRAIDPolicy AndroidJavaObject mraid = adRegistration.CallStatic ("getMRAIDPolicy"); int codeInt = mraid.Call ("ordinal"); Amazon.MRAIDPolicy code = (Amazon.MRAIDPolicy) codeInt; return code; } public void SetMRAIDSupportedVersions (String[] versions) { adRegistration.CallStatic ("setMRAIDSupportedVersions", versions); } public void EnableLogging (bool enable) { adRegistration.CallStatic ("enableLogging", enable); } public void EnableLogging (bool enable, AndroidJavaObject logLevel) { // DTBLogLevel logLevel adRegistration.CallStatic ("enableLogging", enable, logLevel); } public void EnableTesting (bool isTesting) { adRegistration.CallStatic ("enableTesting", isTesting); } public bool IsTestMode () { return adRegistration.CallStatic ("isTestMode"); } public void UseGeoLocation (bool isLocationEnabled) { adRegistration.CallStatic ("useGeoLocation", isLocationEnabled); } public bool IsLocationEnabled () { return adRegistration.CallStatic ("isLocationEnabled"); } public String GetVersion () { return adRegistration.CallStatic ("getVersion"); } public void SetServerlessMarkers (String[] markers) { adRegistration.CallStatic ("setServerlessMarkers", markers); } public void AddSlotGroup (SlotGroup sg) { // param SlotGroup sg adRegistration.CallStatic ("addSlotGroup", sg.dTBSlot); } public AndroidJavaObject GetSlotGroup (String name) { // return SlotGroup return adRegistration.CallStatic ("getSlotGroup", name); } public bool IsConsentStatusUnknown () { return adRegistration.CallStatic ("isConsentStatusUnknown"); } public void SetVendorList (List vendorList) { adRegistration.CallStatic ("setVendorList", vendorList); } public void SetConsentStatus (Amazon.ConsentStatus consentStatus) { AndroidJavaClass consEnum = new AndroidJavaClass ("com.amazon.device.ads.AdRegistration$ConsentStatus"); AndroidJavaObject curcons = consEnum.CallStatic ("valueOf", consentStatus.ToString ()); adRegistration.CallStatic ("setConsentStatus", curcons); } public void SetCMPFlavor (Amazon.CMPFlavor cFlavor) { AndroidJavaClass flavEnum = new AndroidJavaClass ("com.amazon.device.ads.AdRegistration$CMPFlavor"); AndroidJavaObject curFlav = flavEnum.CallStatic ("valueOf", cFlavor.ToString ()); adRegistration.CallStatic ("setCMPFlavor", curFlav); } public void ResetNonIAB () { adRegistration.CallStatic ("resetNonIAB"); } public class SlotGroup { private readonly AndroidJavaClass slotGroup = new AndroidJavaClass ("com.amazon.device.ads.AdRegistration$SlotGroup"); public AndroidJavaObject dTBSlot = null; public SlotGroup () { dTBSlot = new AndroidJavaObject ("com.amazon.device.ads.AdRegistration$SlotGroup"); } public SlotGroup (string name) { dTBSlot = new AndroidJavaObject ("com.amazon.device.ads.AdRegistration$SlotGroup", name); } public void AddSlot (IAdSize size) { dTBSlot.Call ("addSlot", ((DTBAdSize) size).GetInstance ()); } } public void AddCustomAttribute (string withKey, string value) { adRegistration.CallStatic ("addCustomAttribute", withKey, value); } public void RemoveCustomAttr (string forKey) { adRegistration.CallStatic ("removeCustomAttribute", forKey); } public void SetAdNetworkInfo (string adNetworkName) { AndroidJavaClass adNetworkEnum = new AndroidJavaClass (AmazonConstants.dtbAdNetworkClass); AndroidJavaObject adNetworkObj = adNetworkEnum.CallStatic ("valueOf", adNetworkName); AndroidJavaObject dtbAdNetworkInfo = new AndroidJavaObject (AmazonConstants.dtbAdNetworkInfoClass, adNetworkObj); adRegistration.CallStatic ("setAdNetworkInfo", dtbAdNetworkInfo); } } }