powerfun-unity/Assets/AppCenter/Editor/AppCenterSettingsMakerIos.cs

151 lines
5.2 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
using System.IO;
using UnityEditor;
public class AppCenterSettingsMakerIos : IAppCenterSettingsMaker
{
private static readonly string TemplateFilePath = AppCenterSettingsContext.AppCenterPath + "/Plugins/iOS/Core/AppCenterStarter.original";
private static readonly string TargetFilePath = AppCenterSettingsContext.AppCenterPath + "/Plugins/iOS/Core/AppCenterStarter.m";
private const string AppSecretSearchText = "appcenter-app-secret";
private const string AllowNetworkRequestsText = "allow-network-requests";
private const string TransmissionTargetTokenSearchText = "appcenter-transmission-target-token";
private const string LogUrlSearchText = "custom-log-url";
private const string LogUrlToken = "APPCENTER_UNITY_USE_CUSTOM_LOG_URL";
private const string LogLevelSearchText = "0/*LOG_LEVEL*/";
private const string StartupTypeSearchText = "0/*STARTUP_TYPE*/";
private const string UseCrashesToken = "APPCENTER_UNITY_USE_CRASHES";
private const string UseAnalyticsToken = "APPCENTER_UNITY_USE_ANALYTICS";
private const string UseDistributeToken = "APPCENTER_UNITY_USE_DISTRIBUTE";
private const string DistributeDisableAutomaticCheckForUpdateToken = "APPCENTER_DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE";
private const string ApiUrlSearchText = "custom-api-url";
private const string ApiUrlToken = "APPCENTER_UNITY_USE_CUSTOM_API_URL";
private const string InstallUrlSearchText = "custom-install-url";
private const string InstallUrlToken = "APPCENTER_UNITY_USE_CUSTOM_INSTALL_URL";
private const string UseCustomMaxStorageSize = "APPCENTER_USE_CUSTOM_MAX_STORAGE_SIZE";
private const string MaxStorageSize = "APPCENTER_MAX_STORAGE_SIZE";
private const string UpdateTrackSearchText = "1 /*UPDATE_TRACK*/";
private string _loaderFileText;
private bool _enableDistributeForDebuggableBuild;
public AppCenterSettingsMakerIos()
{
_loaderFileText = File.ReadAllText(TemplateFilePath);
}
public void SetLogLevel(int logLevel)
{
_loaderFileText = _loaderFileText.Replace(LogLevelSearchText, logLevel.ToString());
}
public void IsAllowNetworkRequests(bool isAllowed)
{
_loaderFileText = _loaderFileText.Replace(AllowNetworkRequestsText, isAllowed ? "YES" : "NO");
}
public void SetStartupType(int startupType)
{
_loaderFileText = _loaderFileText.Replace(StartupTypeSearchText, startupType.ToString());
}
public void SetLogUrl(string logUrl)
{
AddToken(LogUrlToken);
_loaderFileText = _loaderFileText.Replace(LogUrlSearchText, logUrl);
}
public void SetAppSecret(AppCenterSettings settings)
{
_loaderFileText = _loaderFileText.Replace(AppSecretSearchText, settings.iOSAppSecret);
}
public void SetTransmissionTargetToken(string transmissionTargetToken)
{
_loaderFileText = _loaderFileText.Replace(TransmissionTargetTokenSearchText, transmissionTargetToken);
}
public void StartCrashesClass()
{
AddToken(UseCrashesToken);
}
public void StartDistributeClass()
{
if (_enableDistributeForDebuggableBuild || !EditorUserBuildSettings.development)
{
AddToken(UseDistributeToken);
}
}
public void StartAnalyticsClass()
{
AddToken(UseAnalyticsToken);
}
public void SetApiUrl(string apiUrl)
{
AddToken(ApiUrlToken);
_loaderFileText = _loaderFileText.Replace(ApiUrlSearchText, apiUrl);
}
public void SetInstallUrl(string installUrl)
{
AddToken(InstallUrlToken);
_loaderFileText = _loaderFileText.Replace(InstallUrlSearchText, installUrl);
}
public void CommitSettings()
{
File.WriteAllText(TargetFilePath, _loaderFileText);
}
public void SetMaxStorageSize(long size)
{
AddToken(UseCustomMaxStorageSize);
_loaderFileText = _loaderFileText.Replace(MaxStorageSize, size.ToString());
}
private void AddToken(string token)
{
var tokenText = "#define " + token + "\n";
_loaderFileText = tokenText + _loaderFileText;
}
public bool IsStartFromAppCenterBehavior(AppCenterSettingsAdvanced advancedSettings)
{
return advancedSettings.StartIOSNativeSDKFromAppCenterBehavior;
}
public bool IsAnalyticsAvailable()
{
return Directory.Exists(AppCenterSettingsContext.AppCenterPath + "/Plugins/iOS/Analytics");
}
public bool IsCrashesAvailable()
{
return Directory.Exists(AppCenterSettingsContext.AppCenterPath + "/Plugins/iOS/Crashes");
}
public bool IsDistributeAvailable()
{
return Directory.Exists(AppCenterSettingsContext.AppCenterPath + "/Plugins/iOS/Distribute");
}
public void SetShouldEnableDistributeForDebuggableBuild()
{
_enableDistributeForDebuggableBuild = true;
}
public void SetDistributeDisableAutomaticCheckForUpdate()
{
AddToken(DistributeDisableAutomaticCheckForUpdateToken);
}
public void SetUpdateTrack(int updateTrack)
{
_loaderFileText = _loaderFileText.Replace(UpdateTrackSearchText, updateTrack.ToString());
}
}