[M] sync n3
This commit is contained in:
@@ -26,19 +26,27 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
// TODO: Make this list dynamic.
|
||||
public static readonly Dictionary<string, string> MinAdapterVersions = new Dictionary<string, string>()
|
||||
{
|
||||
{"ADMOB_NETWORK", "android_19.3.0.3_ios_7.65.0.0"},
|
||||
{"CHARTBOOST_NETWORK", "android_8.1.0.7_ios_8.2.1.3"},
|
||||
{"FACEBOOK_MEDIATE", "android_6.0.0.1_ios_6.0.0.3"},
|
||||
{"FYBER_NETWORK", "android_7.7.0.1_ios_7.6.4.1"},
|
||||
{"GOOGLE_AD_MANAGER_NETWORK", "android_19.3.0.3_ios_7.65.0.0"},
|
||||
{"INMOBI_NETWORK", "android_9.0.9.2_ios_9.0.7.9"},
|
||||
{"IRONSOURCE_NETWORK", "android_7.0.1.1.1_ios_7.0.1.0.1"},
|
||||
{"MYTARGET_NETWORK", "android_5.9.1.2_ios_5.7.5.1"},
|
||||
{"SMAATO_NETWORK", "android_21.5.2.5_ios_21.5.2.3"},
|
||||
{"TIKTOK_NETWORK", "android_3.1.0.1.6_ios_3.2.5.1.1"},
|
||||
{"UNITY_NETWORK", "android_3.4.8.2_ios_3.4.8.2"},
|
||||
{"VUNGLE_NETWORK", "android_6.7.1.2_ios_6.7.1.3"},
|
||||
{"YANDEX_NETWORK", "android_2.170.2_ios_2.18.0.1"}
|
||||
{"ADMOB_NETWORK", "android_23.3.0.1_ios_11.9.0.1"},
|
||||
{"BIDMACHINE_NETWORK", "android_3.0.1.1_ios_3.0.0.0.1"},
|
||||
{"CHARTBOOST_NETWORK", "android_9.7.0.3_ios_9.7.0.2"},
|
||||
{"FACEBOOK_MEDIATE", "android_6.17.0.1_ios_6.15.2.1"},
|
||||
{"FYBER_NETWORK", "android_8.3.1.1_ios_8.3.2.1"},
|
||||
{"GOOGLE_AD_MANAGER_NETWORK", "android_23.3.0.1_ios_11.9.0.1"},
|
||||
{"HYPRMX_NETWORK", "android_6.4.2.1_ios_6.4.1.0.1"},
|
||||
{"INMOBI_NETWORK", "android_10.7.7.1_ios_10.7.5.1"},
|
||||
{"IRONSOURCE_NETWORK", "android_8.3.0.0.2_ios_8.3.0.0.1"},
|
||||
{"LINE_NETWORK", "android_2024.8.27.1_ios_2.8.20240827.1"},
|
||||
{"MINTEGRAL_NETWORK", "android_16.8.51.1_ios_7.7.2.0.1"},
|
||||
{"MOBILEFUSE_NETWORK", "android_1.7.6.1_ios_1.7.6.1"},
|
||||
{"MOLOCO_NETWORK", "android_3.1.0.1_ios_3.1.3.1"},
|
||||
{"MYTARGET_NETWORK", "android_5.22.1.1_ios_5.21.7.1"},
|
||||
{"PUBMATIC_NETWORK", "android_3.9.0.2_ios_3.9.0.2"},
|
||||
{"SMAATO_NETWORK", "android_22.7.0.1_ios_22.8.4.1"},
|
||||
{"TIKTOK_NETWORK", "android_6.2.0.5.2_ios_6.2.0.7.2"},
|
||||
{"UNITY_NETWORK", "android_4.12.2.1_ios_4.12.2.1"},
|
||||
{"VERVE_NETWORK", "android_3.0.4.1_ios_3.0.4.1"},
|
||||
{"VUNGLE_NETWORK", "android_7.4.1.1_ios_7.4.1.1"},
|
||||
{"YANDEX_NETWORK", "android_7.4.0.1_ios_2.18.0.1"},
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -56,6 +56,8 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
private const string KeyConsentFlowPrivacyPolicy = "consent_flow_privacy_policy";
|
||||
private const string KeyConsentFlowDebugUserGeography = "consent_flow_debug_user_geography";
|
||||
|
||||
private const string KeyRenderOutsideSafeArea = "render_outside_safe_area";
|
||||
|
||||
#if UNITY_2022_3_OR_NEWER
|
||||
// To match "'com.android.library' version '7.3.1'" line in build.gradle
|
||||
private static readonly Regex TokenGradleVersionLibrary = new Regex(".*id ['\"]com\\.android\\.library['\"] version");
|
||||
@@ -354,6 +356,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
|
||||
// Add the SDK key to the SDK settings.
|
||||
appLovinSdkSettings[KeySdkKey] = AppLovinSettings.Instance.SdkKey;
|
||||
appLovinSdkSettings[KeyRenderOutsideSafeArea] = PlayerSettings.Android.renderOutsideSafeArea;
|
||||
|
||||
// Add the Consent/Terms flow settings if needed.
|
||||
if (AppLovinInternalSettings.Instance.ConsentFlowEnabled)
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
|
||||
using System.IO;
|
||||
using UnityEditor.Android;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
{
|
||||
@@ -27,15 +26,21 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
// On Unity 2019.3+, the path returned is the path to the unityLibrary's module.
|
||||
// The AppLovin Quality Service buildscript closure related lines need to be added to the root build.gradle file.
|
||||
var rootGradleBuildFilePath = Path.Combine(path, "../build.gradle");
|
||||
#if UNITY_2022_2_OR_NEWER
|
||||
if (!AddPluginToRootGradleBuildFile(rootGradleBuildFilePath)) return;
|
||||
|
||||
var rootSettingsGradleFilePath = Path.Combine(path, "../settings.gradle");
|
||||
if (!AddAppLovinRepository(rootSettingsGradleFilePath)) return;
|
||||
#else
|
||||
|
||||
// For 2022.2 and newer and 2021.3.41+
|
||||
var qualityServiceAdded = AddPluginToRootGradleBuildFile(rootGradleBuildFilePath);
|
||||
var appLovinRepositoryAdded = AddAppLovinRepository(rootSettingsGradleFilePath);
|
||||
|
||||
// For 2021.3.40 and older and 2022.0 - 2022.1.x
|
||||
var buildScriptChangesAdded = AddQualityServiceBuildScriptLines(rootGradleBuildFilePath);
|
||||
if (!buildScriptChangesAdded) return;
|
||||
#endif
|
||||
|
||||
var failedToAddPlugin = !buildScriptChangesAdded && !(qualityServiceAdded && appLovinRepositoryAdded);
|
||||
if (failedToAddPlugin)
|
||||
{
|
||||
MaxSdkLogger.UserWarning("Failed to add AppLovin Quality Service plugin to the gradle project.");
|
||||
return;
|
||||
}
|
||||
|
||||
// The plugin needs to be added to the application module (named launcher)
|
||||
var applicationGradleBuildFilePath = Path.Combine(path, "../launcher/build.gradle");
|
||||
|
||||
@@ -39,13 +39,15 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
#if !UNITY_2019_3_OR_NEWER
|
||||
private const string UnityMainTargetName = "Unity-iPhone";
|
||||
#endif
|
||||
// Use a priority of 90 to have AppLovin embed frameworks after Pods are installed (EDM finishes installing Pods at priority 60) and before Firebase Crashlytics runs their scripts (at priority 100).
|
||||
private const int AppLovinEmbedFrameworksPriority = 90;
|
||||
|
||||
private const string TargetUnityIphonePodfileLine = "target 'Unity-iPhone' do";
|
||||
private const string UseFrameworksPodfileLine = "use_frameworks!";
|
||||
private const string UseFrameworksDynamicPodfileLine = "use_frameworks! :linkage => :dynamic";
|
||||
private const string UseFrameworksStaticPodfileLine = "use_frameworks! :linkage => :static";
|
||||
|
||||
private const string LegacyResourcesDirectoryName = "Resources";
|
||||
private const string ResourcesDirectoryName = "Resources";
|
||||
private const string AppLovinMaxResourcesDirectoryName = "AppLovinMAXResources";
|
||||
private const string AppLovinAdvertisingAttributionEndpoint = "https://postbacks-app.com";
|
||||
|
||||
@@ -80,7 +82,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
/// 1. Downloads the Quality Service ruby script.
|
||||
/// 2. Runs the script using Ruby which integrates AppLovin Quality Service to the project.
|
||||
/// </summary>
|
||||
//[PostProcessBuild(int.MaxValue)] // We want to run Quality Service script last.
|
||||
[PostProcessBuild(int.MaxValue)] // We want to run Quality Service script last.
|
||||
public static void OnPostProcessBuild(BuildTarget buildTarget, string buildPath)
|
||||
{
|
||||
if (!AppLovinSettings.Instance.QualityServiceEnabled) return;
|
||||
@@ -146,7 +148,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
}
|
||||
}
|
||||
|
||||
[PostProcessBuild(int.MaxValue)]
|
||||
[PostProcessBuild(AppLovinEmbedFrameworksPriority)]
|
||||
public static void MaxPostProcessPbxProject(BuildTarget buildTarget, string buildPath)
|
||||
{
|
||||
var projectPath = PBXProject.GetPBXProjectPath(buildPath);
|
||||
@@ -365,9 +367,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
|
||||
private static void LocalizeUserTrackingDescriptionIfNeeded(string localizedUserTrackingDescription, string localeCode, string buildPath, PBXProject project, string targetGuid)
|
||||
{
|
||||
// Use the legacy resources directory name if the build is being appended (the "Resources" directory already exists if it is an incremental build).
|
||||
var resourcesDirectoryName = Directory.Exists(Path.Combine(buildPath, LegacyResourcesDirectoryName)) ? LegacyResourcesDirectoryName : AppLovinMaxResourcesDirectoryName;
|
||||
var resourcesDirectoryPath = Path.Combine(buildPath, resourcesDirectoryName);
|
||||
var resourcesDirectoryPath = Path.Combine(buildPath, AppLovinMaxResourcesDirectoryName);
|
||||
var localeSpecificDirectoryName = localeCode + ".lproj";
|
||||
var localeSpecificDirectoryPath = Path.Combine(resourcesDirectoryPath, localeSpecificDirectoryName);
|
||||
var infoPlistStringsFilePath = Path.Combine(localeSpecificDirectoryPath, "InfoPlist.strings");
|
||||
@@ -381,6 +381,15 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
return;
|
||||
}
|
||||
|
||||
// Log an error if we detect a localization file for this language in the `Resources` directory
|
||||
var legacyResourcedDirectoryPath = Path.Combine(buildPath, ResourcesDirectoryName);
|
||||
var localeSpecificLegacyDirectoryPath = Path.Combine(legacyResourcedDirectoryPath, localeSpecificDirectoryName);
|
||||
if (Directory.Exists(localeSpecificLegacyDirectoryPath))
|
||||
{
|
||||
MaxSdkLogger.UserError("Detected existing localization resource for \"" + localeCode + "\" locale. Skipping localization for User Tracking Usage Description. Please disable localization in AppLovin Integration manager and add the localizations to your existing resource.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Create intermediate directories as needed.
|
||||
if (!Directory.Exists(resourcesDirectoryPath))
|
||||
{
|
||||
@@ -425,7 +434,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
File.WriteAllText(infoPlistStringsFilePath, "/* Localized versions of Info.plist keys - Generated by AL MAX plugin */\n" + localizedDescriptionLine);
|
||||
}
|
||||
|
||||
var localeSpecificDirectoryRelativePath = Path.Combine(resourcesDirectoryName, localeSpecificDirectoryName);
|
||||
var localeSpecificDirectoryRelativePath = Path.Combine(AppLovinMaxResourcesDirectoryName, localeSpecificDirectoryName);
|
||||
var guid = project.AddFolderReference(localeSpecificDirectoryRelativePath, localeSpecificDirectoryRelativePath);
|
||||
project.AddFileToBuild(targetGuid, guid);
|
||||
}
|
||||
|
||||
@@ -37,11 +37,9 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
private static readonly Regex TokenApiKey = new Regex(".*apiKey.*");
|
||||
private static readonly Regex TokenAppLovinPlugin = new Regex(".*apply plugin:.+?(?=applovin-quality-service).*");
|
||||
|
||||
#if UNITY_2022_2_OR_NEWER
|
||||
private const string PluginsMatcher = "plugins";
|
||||
private const string PluginManagementMatcher = "pluginManagement";
|
||||
private const string QualityServicePluginRoot = " id 'com.applovin.quality' version '+' apply false // NOTE: Requires version 4.8.3+ for Gradle version 7.2+";
|
||||
#endif
|
||||
|
||||
private const string BuildScriptMatcher = "buildscript";
|
||||
private const string QualityServiceMavenRepo = "maven { url 'https://artifacts.applovin.com/android'; content { includeGroupByRegex 'com.applovin.*' } }";
|
||||
@@ -108,9 +106,19 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
Console.WriteLine(exception);
|
||||
}
|
||||
}
|
||||
#if UNITY_2022_2_OR_NEWER
|
||||
|
||||
/// <summary>
|
||||
/// Adds AppLovin Quality Service plugin DSL element to the project's root build.gradle file.
|
||||
/// Adds AppLovin Quality Service plugin DSL element to the project's root build.gradle file.
|
||||
/// Sample build.gradle file after adding quality service:
|
||||
/// plugins {
|
||||
/// id 'com.android.application' version '7.4.2' apply false
|
||||
/// id 'com.android.library' version '7.4.2' apply false
|
||||
/// id 'com.applovin.quality' version '+' apply false
|
||||
/// }
|
||||
/// tasks.register('clean', Delete) {
|
||||
/// delete rootProject.layout.buildDirectory
|
||||
/// }
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="rootGradleBuildFile">The path to project's root build.gradle file.</param>
|
||||
/// <returns><c>true</c> when the plugin was added successfully.</returns>
|
||||
@@ -141,11 +149,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
outputLines.Add(line);
|
||||
}
|
||||
|
||||
if (!pluginAdded)
|
||||
{
|
||||
MaxSdkLogger.UserError("Failed to add AppLovin Quality Service plugin to root gradle file.");
|
||||
return false;
|
||||
}
|
||||
if (!pluginAdded) return false;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -163,6 +167,18 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
|
||||
/// <summary>
|
||||
/// Adds the AppLovin maven repository to the project's settings.gradle file.
|
||||
/// Sample settings.gradle file after adding AppLovin Repository:
|
||||
/// pluginManagement {
|
||||
/// repositories {
|
||||
/// maven { url 'https://artifacts.applovin.com/android'; content { includeGroupByRegex 'com.applovin.*' } }
|
||||
///
|
||||
/// gradlePluginPortal()
|
||||
/// google()
|
||||
/// mavenCentral()
|
||||
/// }
|
||||
/// }
|
||||
/// ...
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="settingsGradleFile">The path to the project's settings.gradle file.</param>
|
||||
/// <returns><c>true</c> if the repository was added successfully.</returns>
|
||||
@@ -212,11 +228,7 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
}
|
||||
}
|
||||
|
||||
if (!mavenRepoAdded)
|
||||
{
|
||||
MaxSdkLogger.UserError("Failed to add AppLovin Quality Service plugin maven repo to settings gradle file.");
|
||||
return false;
|
||||
}
|
||||
if (!mavenRepoAdded) return false;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -231,11 +243,25 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UNITY_2019_3_OR_NEWER
|
||||
/// <summary>
|
||||
/// Adds the necessary AppLovin Quality Service dependency and maven repo lines to the provided root build.gradle file.
|
||||
/// Sample build.gradle file after adding quality service:
|
||||
/// allprojects {
|
||||
/// buildscript {
|
||||
/// repositories {
|
||||
/// maven { url 'https://artifacts.applovin.com/android'; content { includeGroupByRegex 'com.applovin.*' } }
|
||||
/// google()
|
||||
/// jcenter()
|
||||
/// }
|
||||
///
|
||||
/// dependencies {
|
||||
/// classpath 'com.android.tools.build:gradle:4.0.1'
|
||||
/// classpath 'com.applovin.quality:AppLovinQualityServiceGradlePlugin:+'
|
||||
/// }
|
||||
/// ...
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="rootGradleBuildFile">The root build.gradle file path</param>
|
||||
/// <returns><c>true</c> if the build script lines were applied correctly.</returns>
|
||||
@@ -536,7 +562,6 @@ namespace AppLovinMax.Scripts.IntegrationManager.Editor
|
||||
|
||||
if ((addBuildScriptLines && (!qualityServiceRepositoryAdded || !qualityServiceDependencyClassPathAdded)) || (addPlugin && !qualityServicePluginAdded))
|
||||
{
|
||||
MaxSdkLogger.UserError("Failed to add AppLovin Quality Service plugin. Quality Service Plugin Added?: " + qualityServicePluginAdded + ", Quality Service Repo added?: " + qualityServiceRepositoryAdded + ", Quality Service dependency added?: " + qualityServiceDependencyClassPathAdded);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class MaxSdk :
|
||||
MaxSdkUnityEditor
|
||||
#endif
|
||||
{
|
||||
private const string _version = "6.6.1";
|
||||
private const string _version = "7.0.0";
|
||||
|
||||
/// <summary>
|
||||
/// Returns the current plugin version.
|
||||
|
||||
@@ -171,33 +171,6 @@ public class MaxSdkAndroid : MaxSdkBase
|
||||
return MaxUnityPluginClass.CallStatic<bool>("isUserConsentSet");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mark user as age restricted (i.e. under 16).
|
||||
/// </summary>
|
||||
/// <param name="isAgeRestrictedUser"><c>true</c> if the user is age restricted (i.e. under 16).</param>
|
||||
public static void SetIsAgeRestrictedUser(bool isAgeRestrictedUser)
|
||||
{
|
||||
MaxUnityPluginClass.CallStatic("setIsAgeRestrictedUser", isAgeRestrictedUser);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if user is age restricted.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if the user is age-restricted. <c>false</c> if the user is not age-restricted or the age-restriction has not been set<see cref="IsAgeRestrictedUserSet">.</returns>
|
||||
public static bool IsAgeRestrictedUser()
|
||||
{
|
||||
return MaxUnityPluginClass.CallStatic<bool>("isAgeRestrictedUser");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if the user has set its age restricted settings.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if the user has set its age restricted settings.</returns>
|
||||
public static bool IsAgeRestrictedUserSet()
|
||||
{
|
||||
return MaxUnityPluginClass.CallStatic<bool>("isAgeRestrictedUserSet");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set whether or not user has opted out of the sale of their personal information.
|
||||
/// </summary>
|
||||
|
||||
@@ -275,17 +275,39 @@ public abstract class MaxSdkBase
|
||||
/// </summary>
|
||||
FullscreenAdNotReady = -24,
|
||||
|
||||
#if UNITY_ANDROID
|
||||
#if UNITY_IOS || UNITY_IPHONE
|
||||
/// <summary>
|
||||
/// This error code indicates that the SDK failed to load an ad because it could not find the top Activity.
|
||||
/// This error code indicates you attempted to present a fullscreen ad from an invalid view controller.
|
||||
/// </summary>
|
||||
NoActivity = -5601,
|
||||
FullscreenAdInvalidViewController = -25,
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// This error code indicates you are attempting to load a fullscreen ad while another fullscreen ad is already loading.
|
||||
/// </summary>
|
||||
FullscreenAdAlreadyLoading = -26,
|
||||
|
||||
/// <summary>
|
||||
/// This error code indicates you are attempting to load a fullscreen ad while another fullscreen ad is still showing.
|
||||
/// </summary>
|
||||
FullscreenAdLoadWhileShowing = -27,
|
||||
|
||||
#if UNITY_ANDROID
|
||||
/// <summary>
|
||||
/// This error code indicates that the SDK failed to display an ad because the user has the "Don't Keep Activities" developer setting enabled.
|
||||
/// </summary>
|
||||
DontKeepActivitiesEnabled = -5602,
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// This error code indicates that the SDK failed to load an ad because the publisher provided an invalid ad unit identifier.
|
||||
/// Possible reasons for an invalid ad unit identifier:
|
||||
/// 1. Ad unit identifier is malformed or does not exist
|
||||
/// 2. Ad unit is disabled
|
||||
/// 3. Ad unit is not associated with the current app's package name
|
||||
/// 4. Ad unit was created within the last 30-60 minutes
|
||||
/// </summary>
|
||||
InvalidAdUnitId = -5603
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,8 +23,6 @@ public class MaxSdkUnityEditor : MaxSdkBase
|
||||
private static bool _isInitialized;
|
||||
private static bool _hasUserConsent = false;
|
||||
private static bool _isUserConsentSet = false;
|
||||
private static bool _isAgeRestrictedUser = false;
|
||||
private static bool _isAgeRestrictedUserSet = false;
|
||||
private static bool _doNotSell = false;
|
||||
private static bool _isDoNotSellSet = false;
|
||||
private static bool _showStubAds = true;
|
||||
@@ -222,34 +220,6 @@ public class MaxSdkUnityEditor : MaxSdkBase
|
||||
return _isUserConsentSet;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mark user as age restricted (i.e. under 16).
|
||||
/// </summary>
|
||||
/// <param name="isAgeRestrictedUser"><c>true</c> if the user is age restricted (i.e. under 16).</param>
|
||||
public static void SetIsAgeRestrictedUser(bool isAgeRestrictedUser)
|
||||
{
|
||||
_isAgeRestrictedUser = isAgeRestrictedUser;
|
||||
_isAgeRestrictedUserSet = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if user is age restricted.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if the user is age-restricted. <c>false</c> if the user is not age-restricted or the age-restriction has not been set<see cref="IsAgeRestrictedUserSet"/>.</returns>
|
||||
public static bool IsAgeRestrictedUser()
|
||||
{
|
||||
return _isAgeRestrictedUser;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check if user set its age restricted settings.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if user has set its age restricted settings.</returns>
|
||||
public static bool IsAgeRestrictedUserSet()
|
||||
{
|
||||
return _isAgeRestrictedUserSet;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set whether or not user has opted out of the sale of their personal information.
|
||||
/// </summary>
|
||||
|
||||
@@ -214,42 +214,6 @@ public class MaxSdkiOS : MaxSdkBase
|
||||
return _MaxIsUserConsentSet();
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _MaxSetIsAgeRestrictedUser(bool isAgeRestrictedUser);
|
||||
|
||||
/// <summary>
|
||||
/// Mark user as age restricted (i.e. under 16).
|
||||
/// </summary>
|
||||
/// <param name="isAgeRestrictedUser"><c>true</c> if the user is age restricted (i.e. under 16).</param>
|
||||
public static void SetIsAgeRestrictedUser(bool isAgeRestrictedUser)
|
||||
{
|
||||
_MaxSetIsAgeRestrictedUser(isAgeRestrictedUser);
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern bool _MaxIsAgeRestrictedUser();
|
||||
|
||||
/// <summary>
|
||||
/// Check if user is age restricted.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if the user is age-restricted. <c>false</c> if the user is not age-restricted or the age-restriction has not been set<see cref="IsAgeRestrictedUserSet">.</returns>
|
||||
public static bool IsAgeRestrictedUser()
|
||||
{
|
||||
return _MaxIsAgeRestrictedUser();
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern bool _MaxIsAgeRestrictedUserSet();
|
||||
|
||||
/// <summary>
|
||||
/// Check if user set its age restricted settings.
|
||||
/// </summary>
|
||||
/// <returns><c>true</c> if user has set its age restricted settings.</returns>
|
||||
public static bool IsAgeRestrictedUserSet()
|
||||
{
|
||||
return _MaxIsAgeRestrictedUserSet();
|
||||
}
|
||||
|
||||
[DllImport("__Internal")]
|
||||
private static extern void _MaxSetDoNotSell(bool doNotSell);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user