1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #if SERVICES_SDK_CORE_ENABLED
- using System;
- using System.Reflection;
- using Unity.Services.Core.Editor;
- using UnityEditor.Advertisements;
-
- namespace UnityEngine.Advertisements.Editor
- {
- class AdsServiceEnabler : EditorGameServiceFlagEnabler
- {
- const string k_ProjectSettingName = "Unity Ads";
-
- static MethodInfo s_GetCloudServiceEnabled;
-
- static MethodInfo s_SetCloudServiceEnabled;
-
- public event Action ServiceEnabled;
-
- public event Action ServiceDisabled;
-
- protected override string FlagName { get; } = "ads";
-
- static AdsServiceEnabler()
- {
- s_GetCloudServiceEnabled = TryGetPlayerSettingsMethod("GetCloudServiceEnabled");
- s_SetCloudServiceEnabled = TryGetPlayerSettingsMethod("SetCloudServiceEnabled");
- }
-
- static MethodInfo TryGetPlayerSettingsMethod(string methodName)
- {
- MethodInfo playerSettingsMethod = null;
- try
- {
- var playerSettingsType = Type.GetType("UnityEditor.PlayerSettings,UnityEditor.dll");
- playerSettingsMethod = playerSettingsType?.GetMethod(methodName, BindingFlags.Static | BindingFlags.NonPublic);
- }
- catch (Exception)
- {
- //Simply return null if something failed in the reflection.
- }
-
- return playerSettingsMethod;
- }
-
- public AdsServiceEnabler()
- {
- if (!(s_GetCloudServiceEnabled is null))
- {
- AdvertisementSettings.enabled = GetProjectSettingWithReflection();
- }
- }
-
- static bool GetProjectSettingWithReflection()
- {
- var enabledStateResult = s_GetCloudServiceEnabled.Invoke(null, new object[] { k_ProjectSettingName });
- var isEnabled = Convert.ToBoolean(enabledStateResult);
- return isEnabled;
- }
-
- public override bool IsEnabled()
- {
- return AdvertisementSettings.enabled;
- }
-
- protected override void EnableLocalSettings()
- {
- SetSettingFlag(true);
-
- ServiceEnabled?.Invoke();
- }
-
- protected override void DisableLocalSettings()
- {
- SetSettingFlag(false);
-
- ServiceDisabled?.Invoke();
- }
-
- static void SetSettingFlag(bool value)
- {
- AdvertisementSettings.enabled = value;
- s_SetCloudServiceEnabled?.Invoke(null, new object[] { k_ProjectSettingName, value });
- }
- }
- }
- #endif
|