SquareDash/Library/PackageCache/com.unity.services.mediation@1.0.5/Editor/Settings/UnityAdsCompatibility.cs
kingjuulian06 0efb85038a Arbeit 2
2023-11-21 22:03:49 +01:00

101 lines
3.2 KiB
C#

#if UNITY_2019_1_OR_NEWER
using System.IO;
using UnityEditor.PackageManager.Requests;
using UnityEditor.PackageManager;
using UnityEditor;
using UnityEngine;
namespace Unity.Services.Mediation.Settings.Editor
{
[InitializeOnLoad]
class UnityAdsCompatibility
{
const string k_DialogTitle = "Advertisement (Legacy) package identified";
const string k_DialogText = "We detected that you have installed the Unity Ads package. " +
"This package may conflict with Unity Mediation as it's content is included in Mediation, and this may cause build issues. " +
"We recommend uninstalling the Unity Ads package when using Mediation.";
const string k_DialogButtonUninstall = "Uninstall Unity Ads";
const string k_DialogButtonCancel = "Don't ask me again";
const string k_DoNotShowAgainKey = "UninstallAdsDialogDontShow";
const string k_UnityAdsPackageId = "com.unity.ads";
static RemoveRequest s_PackageRemovalRequest;
[InitializeOnLoadMethod]
static void OnPackageLoad()
{
if (ShouldShowDialog())
{
ShowDialog();
}
}
static void ShowDialog()
{
var requestUninstall = EditorUtility.DisplayDialog(
k_DialogTitle,
k_DialogText,
k_DialogButtonUninstall,
k_DialogButtonCancel);
if (requestUninstall)
{
RemoveAdsPackage();
}
else
{
EditorPrefs.SetBool(k_DoNotShowAgainKey, true);
}
}
static bool ShouldShowDialog()
{
bool requestedNotToShow = false;
if (EditorPrefs.HasKey(k_DoNotShowAgainKey))
{
requestedNotToShow = EditorPrefs.GetBool(k_DoNotShowAgainKey);
}
bool packageInstalled = IsPackageInstalled(k_UnityAdsPackageId);
return !requestedNotToShow && packageInstalled;
}
static bool IsPackageInstalled(string packageId)
{
bool packageFound = false;
if (File.Exists("Packages/manifest.json"))
{
var jsonText = File.ReadAllText("Packages/manifest.json");
packageFound = jsonText.Contains("\"" + packageId + "\"");
}
return packageFound;
}
static void RemoveAdsPackage()
{
s_PackageRemovalRequest = Client.Remove(k_UnityAdsPackageId);
EditorApplication.update += OnEditorUpdate;
}
static void OnEditorUpdate()
{
if (s_PackageRemovalRequest.IsCompleted)
{
if (s_PackageRemovalRequest.Status == StatusCode.Success)
{
Debug.Log("Removed: " + s_PackageRemovalRequest.PackageIdOrName);
}
else if (s_PackageRemovalRequest.Status >= StatusCode.Failure)
{
Debug.Log(s_PackageRemovalRequest.Error.message);
}
EditorApplication.update -= OnEditorUpdate;
}
}
}
}
#endif