100 lines
3.6 KiB
C#
100 lines
3.6 KiB
C#
//
|
|
// AppLovinBuildPreProcessiOS.cs
|
|
// AppLovin MAX Unity Plugin
|
|
//
|
|
// Created by Jonathan Liu on 10/17/2023.
|
|
// Copyright © 2023 AppLovin. All rights reserved.
|
|
//
|
|
|
|
#if UNITY_IOS
|
|
|
|
using System.Xml.Linq;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
|
|
namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
|
{
|
|
public class AppLovinPreProcessiOS : AppLovinPreProcess, IPreprocessBuildWithReport
|
|
{
|
|
public void OnPreprocessBuild(BuildReport report)
|
|
{
|
|
AddGoogleCmpDependencyIfNeeded();
|
|
}
|
|
|
|
private const string ElementNameIosPods = "iosPods";
|
|
private const string ElementNameIosPod = "iosPod";
|
|
private const string AttributeNameName = "name";
|
|
private const string AttributeNameVersion = "version";
|
|
private const string UmpDependencyPod = "GoogleUserMessagingPlatform";
|
|
private const string UmpDependencyVersion = "~> 2.1";
|
|
|
|
private static void AddGoogleCmpDependencyIfNeeded()
|
|
{
|
|
if (AppLovinInternalSettings.Instance.ConsentFlowEnabled)
|
|
{
|
|
var umpDependency = new XElement(ElementNameIosPod,
|
|
new XAttribute(AttributeNameName, UmpDependencyPod),
|
|
new XAttribute(AttributeNameVersion, UmpDependencyVersion));
|
|
var success = AddOrUpdateIosDependency(UmpDependencyPod, umpDependency);
|
|
if (!success)
|
|
{
|
|
MaxSdkLogger.UserWarning("Google CMP will not function. Unable to add GoogleUserMessagingPlatform dependency.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
RemoveIosDependency(UmpDependencyPod);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds or updates an iOS pod in the AppLovin Dependencies.xml file.
|
|
/// </summary>
|
|
/// <param name="pod">The pod that we are trying to update</param>
|
|
/// <param name="newDependency">The new dependency to add if it doesn't exist</param>
|
|
/// <returns>Returns true if the file was successfully edited</returns>
|
|
private static bool AddOrUpdateIosDependency(string pod, XElement newDependency)
|
|
{
|
|
var dependenciesFilePath = AppLovinDependenciesFilePath;
|
|
var dependenciesDocument = GetAppLovinDependenciesFile(dependenciesFilePath, AppLovinIntegrationManager.IsPluginInPackageManager);
|
|
if (dependenciesDocument == null) return false;
|
|
|
|
AddOrUpdateDependency(dependenciesDocument,
|
|
ElementNameIosPods,
|
|
ElementNameIosPod,
|
|
AttributeNameName,
|
|
pod,
|
|
newDependency);
|
|
return SaveDependenciesFile(dependenciesDocument, dependenciesFilePath);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Removed an iOS pod from the AppLovin Dependencies.xml file.
|
|
/// </summary>
|
|
/// <param name="pod">The pod to remove</param>
|
|
private static void RemoveIosDependency(string pod)
|
|
{
|
|
var dependenciesFilePath = AppLovinDependenciesFilePath;
|
|
var dependenciesDocument = GetAppLovinDependenciesFile(dependenciesFilePath);
|
|
if (dependenciesDocument == null) return;
|
|
|
|
var removed = RemoveDependency(dependenciesDocument,
|
|
ElementNameIosPods,
|
|
ElementNameIosPod,
|
|
AttributeNameName,
|
|
pod);
|
|
|
|
if (!removed) return;
|
|
|
|
SaveDependenciesFile(dependenciesDocument, dependenciesFilePath);
|
|
}
|
|
|
|
public int callbackOrder
|
|
{
|
|
get { return CallbackOrder; }
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|