[M] sync n3

This commit is contained in:
2024-12-09 16:54:19 +08:00
parent c90bbe86e7
commit 05331e6286
845 changed files with 6138 additions and 1307 deletions

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7863556d88b814e09ba9cfc75a91d655
guid: da76ae4f9ba92124087139583d0dd929
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -28,6 +28,7 @@ public class AFInAppEvents {
public const string LOCATION_CHANGED = "af_location_changed";
public const string LOCATION_COORDINATES = "af_location_coordinates";
public const string ORDER_ID = "af_order_id";
public const string GA = "af_ga_event";
/**
* Event Parameter Name
* **/

0
sdk-intergration/Assets/AppsFlyer/AFMiniJSON.cs Executable file → Normal file
View File

View File

@@ -1,145 +1,145 @@
//#define AFSDK_WIN_DEBUG
//#define UNITY_WSA_10_0
//#define ENABLE_WINMD_SUPPORT
#if UNITY_WSA_10_0
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.ComponentModel;
using UnityEngine;
using System.Threading.Tasks;
#if ENABLE_WINMD_SUPPORT
using AppsFlyerLib;
#endif
namespace AppsFlyerSDK
{
public class AppsFlyerWindows
{
#if ENABLE_WINMD_SUPPORT
static private MonoBehaviour _gameObject = null;
#endif
public static void InitSDK(string devKey, string appId, MonoBehaviour gameObject)
{
#if ENABLE_WINMD_SUPPORT
#if AFSDK_WIN_DEBUG
// Remove callstack
Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None);
#endif
Log("[InitSDK]: devKey: {0}, appId: {1}, gameObject: {2}", devKey, appId, gameObject == null ? "null" : gameObject.ToString());
AppsFlyerTracker tracker = AppsFlyerTracker.GetAppsFlyerTracker();
tracker.devKey = devKey;
tracker.appId = appId;
// Interface
_gameObject = gameObject;
#endif
}
public static string GetAppsFlyerId()
{
#if ENABLE_WINMD_SUPPORT
Log("[GetAppsFlyerId]");
return AppsFlyerTracker.GetAppsFlyerTracker().GetAppsFlyerUID();
#else
return "";
#endif
}
public static void SetCustomerUserId(string customerUserId)
{
#if ENABLE_WINMD_SUPPORT
Log("[SetCustomerUserId] customerUserId: {0}", customerUserId);
if (customerUserId.Contains("test_device:"))
{
string testDeviceId = customerUserId.Substring(12);
AppsFlyerTracker.GetAppsFlyerTracker().testDeviceId = testDeviceId;
}
AppsFlyerTracker.GetAppsFlyerTracker().customerUserId = customerUserId;
#endif
}
public static void Start()
{
#if ENABLE_WINMD_SUPPORT
Log("[Start]");
AppsFlyerTracker.GetAppsFlyerTracker().TrackAppLaunchAsync(Callback);
#endif
}
#if ENABLE_WINMD_SUPPORT
public static void Callback(AppsFlyerLib.ServerStatusCode code)
{
Log("[Callback]: {0}", code.ToString());
AppsFlyerRequestEventArgs eventArgs = new AppsFlyerRequestEventArgs((int)code, code.ToString());
if (_gameObject != null) {
var method = _gameObject.GetType().GetMethod("AppsFlyerOnRequestResponse");
if (method != null) {
method.Invoke(_gameObject, new object[] { AppsFlyerTracker.GetAppsFlyerTracker(), eventArgs });
}
}
}
#endif
public static void LogEvent(string eventName, Dictionary<string, string> eventValues)
{
#if ENABLE_WINMD_SUPPORT
if (eventValues == null)
{
eventValues = new Dictionary<string, string>();
}
IDictionary<string, object> result = new Dictionary<string, object>();
foreach (KeyValuePair<string, string> kvp in eventValues)
{
result.Add(kvp.Key.ToString(), kvp.Value);
}
Log("[LogEvent]: eventName: {0} result: {1}", eventName, result.ToString());
AppsFlyerTracker tracker = AppsFlyerTracker.GetAppsFlyerTracker();
tracker.TrackEvent(eventName, result);
#endif
}
public static void GetConversionData(string _reserved)
{
#if ENABLE_WINMD_SUPPORT
Task.Run(async () =>
{
AppsFlyerLib.AppsFlyerTracker tracker = AppsFlyerLib.AppsFlyerTracker.GetAppsFlyerTracker();
string conversionData = await tracker.GetConversionDataAsync();
IAppsFlyerConversionData conversionDataHandler = _gameObject as IAppsFlyerConversionData;
if (conversionDataHandler != null)
{
Log("[GetConversionData] Will call `onConversionDataSuccess` with: {0}", conversionData);
conversionDataHandler.onConversionDataSuccess(conversionData);
} else {
Log("[GetConversionData] Object with `IAppsFlyerConversionData` interface not found! Check `InitSDK` implementation");
}
// _gameObject.GetType().GetMethod("onConversionDataSuccess").Invoke(_gameObject, new[] { conversionData });
});
#endif
}
private static void Log(string format, params string[] args)
{
#if AFSDK_WIN_DEBUG
#if ENABLE_WINMD_SUPPORT
Debug.Log("AF_UNITY_WSA_10_0" + String.Format(format, args));
#endif
#endif
}
}
}
#endif
//#define AFSDK_WIN_DEBUG
//#define UNITY_WSA_10_0
//#define ENABLE_WINMD_SUPPORT
#if UNITY_WSA_10_0
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.ComponentModel;
using UnityEngine;
using System.Threading.Tasks;
#if ENABLE_WINMD_SUPPORT
using AppsFlyerLib;
#endif
namespace AppsFlyerSDK
{
public class AppsFlyerWindows
{
#if ENABLE_WINMD_SUPPORT
static private MonoBehaviour _gameObject = null;
#endif
public static void InitSDK(string devKey, string appId, MonoBehaviour gameObject)
{
#if ENABLE_WINMD_SUPPORT
#if AFSDK_WIN_DEBUG
// Remove callstack
Application.SetStackTraceLogType(LogType.Log, StackTraceLogType.None);
#endif
Log("[InitSDK]: devKey: {0}, appId: {1}, gameObject: {2}", devKey, appId, gameObject == null ? "null" : gameObject.ToString());
AppsFlyerTracker tracker = AppsFlyerTracker.GetAppsFlyerTracker();
tracker.devKey = devKey;
tracker.appId = appId;
// Interface
_gameObject = gameObject;
#endif
}
public static string GetAppsFlyerId()
{
#if ENABLE_WINMD_SUPPORT
Log("[GetAppsFlyerId]");
return AppsFlyerTracker.GetAppsFlyerTracker().GetAppsFlyerUID();
#else
return "";
#endif
}
public static void SetCustomerUserId(string customerUserId)
{
#if ENABLE_WINMD_SUPPORT
Log("[SetCustomerUserId] customerUserId: {0}", customerUserId);
if (customerUserId.Contains("test_device:"))
{
string testDeviceId = customerUserId.Substring(12);
AppsFlyerTracker.GetAppsFlyerTracker().testDeviceId = testDeviceId;
}
AppsFlyerTracker.GetAppsFlyerTracker().customerUserId = customerUserId;
#endif
}
public static void Start()
{
#if ENABLE_WINMD_SUPPORT
Log("[Start]");
AppsFlyerTracker.GetAppsFlyerTracker().TrackAppLaunchAsync(Callback);
#endif
}
#if ENABLE_WINMD_SUPPORT
public static void Callback(AppsFlyerLib.ServerStatusCode code)
{
Log("[Callback]: {0}", code.ToString());
AppsFlyerRequestEventArgs eventArgs = new AppsFlyerRequestEventArgs((int)code, code.ToString());
if (_gameObject != null) {
var method = _gameObject.GetType().GetMethod("AppsFlyerOnRequestResponse");
if (method != null) {
method.Invoke(_gameObject, new object[] { AppsFlyerTracker.GetAppsFlyerTracker(), eventArgs });
}
}
}
#endif
public static void LogEvent(string eventName, Dictionary<string, string> eventValues)
{
#if ENABLE_WINMD_SUPPORT
if (eventValues == null)
{
eventValues = new Dictionary<string, string>();
}
IDictionary<string, object> result = new Dictionary<string, object>();
foreach (KeyValuePair<string, string> kvp in eventValues)
{
result.Add(kvp.Key.ToString(), kvp.Value);
}
Log("[LogEvent]: eventName: {0} result: {1}", eventName, result.ToString());
AppsFlyerTracker tracker = AppsFlyerTracker.GetAppsFlyerTracker();
tracker.TrackEvent(eventName, result);
#endif
}
public static void GetConversionData(string _reserved)
{
#if ENABLE_WINMD_SUPPORT
Task.Run(async () =>
{
AppsFlyerLib.AppsFlyerTracker tracker = AppsFlyerLib.AppsFlyerTracker.GetAppsFlyerTracker();
string conversionData = await tracker.GetConversionDataAsync();
IAppsFlyerConversionData conversionDataHandler = _gameObject as IAppsFlyerConversionData;
if (conversionDataHandler != null)
{
Log("[GetConversionData] Will call `onConversionDataSuccess` with: {0}", conversionData);
conversionDataHandler.onConversionDataSuccess(conversionData);
} else {
Log("[GetConversionData] Object with `IAppsFlyerConversionData` interface not found! Check `InitSDK` implementation");
}
// _gameObject.GetType().GetMethod("onConversionDataSuccess").Invoke(_gameObject, new[] { conversionData });
});
#endif
}
private static void Log(string format, params string[] args)
{
#if AFSDK_WIN_DEBUG
#if ENABLE_WINMD_SUPPORT
Debug.Log("AF_UNITY_WSA_10_0" + String.Format(format, args));
#endif
#endif
}
}
}
#endif

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7047d3afa28754c68bb1b75839add256
guid: 374495418f507124e80cfe5137776bf6
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 559e25347dd3d4992953b41e4968fc33
guid: b0579fd5f5ba2e146908c139c7324d32
folderAsset: yes
DefaultImporter:
externalObjects: {}

Binary file not shown.

View File

@@ -1,10 +1,5 @@
fileFormatVersion: 2
guid: 5552c54c11d94016bcfe740f27df44a6
labels:
- gvh
- gvh_version-1.2.177
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.177/Google.IOSResolver.dll
- gvhp_targets-editor
guid: 6cc76c7bd652be74bb4eecae879d9c3b
PluginImporter:
externalObjects: {}
serializedVersion: 2
@@ -46,31 +41,31 @@ PluginImporter:
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: OSX
OS: AnyOS
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: AnyCPU
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: AnyCPU
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: AnyCPU
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: AnyCPU
CPU: None
- first:
Windows Store Apps: WindowsStoreApps
second:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b539e47b3e609b0489cf78ee8db1ca03
guid: 4283d5a798253634689dfaccaba552e9
folderAsset: yes
DefaultImporter:
externalObjects: {}

Binary file not shown.

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 03a65c11b1b2d4d068764ce890d18383
guid: a6aee3e70b1022d4aa0dd15acad74351
PluginImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ddfa0c1d1c36b4079848d61bac0913ff
guid: b6c176e912c23c742927770501978946
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,77 @@
fileFormatVersion: 2
guid: 03845875206fd43188499b44315ff8b4
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 0
Exclude Editor: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude Win: 0
Exclude Win64: 0
- first:
Android: Android
second:
enabled: 1
settings:
AndroidSharedLibraryType: Executable
CPU: ARMv7
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
- first:
Standalone: Linux64
second:
enabled: 1
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 1
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 1
settings:
CPU: x86
- first:
Standalone: Win64
second:
enabled: 1
settings:
CPU: x86_64
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -64,7 +64,7 @@ public class BuildTool
outPath = "../Bin/tysdkTest.apk"
};
BuildiOS(bparams);
BuildAndroid(bparams);
}
public static void CIBuildAndroid()

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2eaa69f2af3e445d591e6c66028a9d80
guid: 016b33dc25cccbf4e95c82f356514690
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a018e17712e364f0e97a392611a0718c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,38 @@
fileFormatVersion: 2
guid: 3429646f5d4949efa347230fa86778b7
labels:
- gvh
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,9 +1,9 @@
fileFormatVersion: 2
guid: 1f4f113972f04c3695341dfb3ba48d3b
guid: 5b1a2b9a8d0748609fa3195265844d21
labels:
- gvh
- gvh_version-1.2.177
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.177/Google.JarResolver.dll
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.182/Google.JarResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}

View File

@@ -1,9 +1,9 @@
fileFormatVersion: 2
guid: 413ed4abd14645c38ebbd8c5ff26e9de
guid: 4026c19ba8ec495f93f5919b5f2934ee
labels:
- gvh
- gvh_version-1.2.177
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.177/Google.PackageManagerResolver.dll
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.182/Google.PackageManagerResolver.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}

View File

@@ -1,9 +1,9 @@
fileFormatVersion: 2
guid: 38d0b40a7b2d44c6a6a2362599bfc41e
guid: 025280fbe75c450fbdf7c5fc7ecc8860
labels:
- gvh
- gvh_version-1.2.177
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.177/Google.VersionHandlerImpl.dll
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/1.2.182/Google.VersionHandlerImpl.dll
- gvhp_targets-editor
PluginImporter:
externalObjects: {}

View File

@@ -1,3 +1,23 @@
# Version 1.2.182 - Aug 2, 2024
* General - Check for gradle version instead of Unity version when determining
the template files to modify.
# Version 1.2.181 - Jun 26, 2024
* General - Disable `EditorMeasurement` reporting that relied on the
Measurement Protocol for Universal Analytics.
# Version 1.2.180 - Jun 4, 2024
* General - Fix project settings resetting on domain reload.
Fixes #524
# Version 1.2.179 - Feb 12, 2024
* Android Resolver - Added logic to automatically turn on `mainTemplate.gradle`
for new projects, and prompt users to enable it on projects that have previously
had the resolver run.
# Version 1.2.178 - Dec 20, 2023
* Added [OpenUPM support](https://openupm.com/packages/com.google.external-dependency-manager/).
# Version 1.2.177 - Aug 14, 2023
* iOS Resolver - Added `/opt/homebrew/bin` to Cocoapod executable search path.
Fixes #627

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 6cdb6572965940cb9bcd8ce572951c7d
guid: b699fc553a294dbcad96ff0365038f6a
labels:
- gvh
- gvh_version-1.2.177
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/CHANGELOG.md
timeCreated: 1584567712
licenseType: Pro

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 86460262ea60447dbb6a62d21167790f
guid: 61128ff4560e43ddb606dc203efe7799
labels:
- gvh
- gvh_version-1.2.177
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/Google.VersionHandler.dll
- gvhp_targets-editor
timeCreated: 1480838400

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 7640443de1d445eab9dfaac68fefcc3b
guid: b91d7551a5d9453e914e5295af46195e
labels:
- gvh
- gvh_version-1.2.177
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/LICENSE
timeCreated: 1584567712
licenseType: Pro

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 6fd4c95e7f9941198f1bac5f0fff74c8
guid: ee2d63ed1abf409b893e36120a404f03
labels:
- gvh
- gvh_version-1.2.177
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/README.md
timeCreated: 1584567712
licenseType: Pro

View File

@@ -1,13 +0,0 @@
Assets/ExternalDependencyManager/Editor/1.2.177/Google.IOSResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.177/Google.IOSResolver.dll.mdb
Assets/ExternalDependencyManager/Editor/1.2.177/Google.JarResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.177/Google.JarResolver.dll.mdb
Assets/ExternalDependencyManager/Editor/1.2.177/Google.PackageManagerResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.177/Google.PackageManagerResolver.dll.mdb
Assets/ExternalDependencyManager/Editor/1.2.177/Google.VersionHandlerImpl.dll
Assets/ExternalDependencyManager/Editor/1.2.177/Google.VersionHandlerImpl.dll.mdb
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll.mdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md

View File

@@ -0,0 +1,13 @@
Assets/ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.182/Google.IOSResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.182/Google.JarResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.182/Google.JarResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.182/Google.PackageManagerResolver.dll
Assets/ExternalDependencyManager/Editor/1.2.182/Google.PackageManagerResolver.pdb
Assets/ExternalDependencyManager/Editor/1.2.182/Google.VersionHandlerImpl.dll
Assets/ExternalDependencyManager/Editor/1.2.182/Google.VersionHandlerImpl.pdb
Assets/ExternalDependencyManager/Editor/CHANGELOG.md
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.dll
Assets/ExternalDependencyManager/Editor/Google.VersionHandler.pdb
Assets/ExternalDependencyManager/Editor/LICENSE
Assets/ExternalDependencyManager/Editor/README.md

View File

@@ -1,10 +1,10 @@
fileFormatVersion: 2
guid: 2764c5ea3b354f3cb7ca80028fd08da2
guid: d602686ba68d4bfea020d161c28431a9
labels:
- gvh
- gvh_manifest
- gvh_version-1.2.177
- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.177_manifest.txt
- gvh_version-1.2.182
- gvhp_exportpath-ExternalDependencyManager/Editor/external-dependency-manager_version-1.2.182_manifest.txt
- gvhp_manifestname-0External Dependency Manager
- gvhp_manifestname-play-services-resolver
timeCreated: 1474401009

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e6dd5e1cf473c244ba09d6cf5058a3fd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 30111a133e0c14b7c85f133882f7b282
guid: 1d1ca9700477e4b43ab8edb535f588c6
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin:applovin-sdk:12.6.0" />
<androidPackage spec="com.applovin:applovin-sdk:13.0.0" />
</androidPackages>
<iosPods>
<iosPod name="AppLovinSDK" version="12.6.0" />
<iosPod name="AppLovinSDK" version="13.0.0" />
</iosPods>
</dependencies>

View File

@@ -8,7 +8,7 @@
#import "MAUnityAdManager.h"
#define VERSION @"6.6.1"
#define VERSION @"7.0.0"
#define NSSTRING(_X) ( (_X != NULL) ? [NSString stringWithCString: _X encoding: NSStringEncodingConversionAllowLossy].al_stringByTrimmingWhitespace : nil)
@interface NSString (ALUtils)
@@ -28,7 +28,6 @@ extern "C"
static NSString *const KeySdkKey = @"SdkKey";
UIView* UnityGetGLView();
NSString *getSdkKeyFromAppLovinSettingsPlist();
static ALSdkInitializationConfigurationBuilder *_initConfigurationBuilder;
static ALSdk *_sdk;
@@ -42,16 +41,6 @@ extern "C"
// Helper method to log errors
void logUninitializedAccessError(const char *callingMethod);
ALSdkInitializationConfigurationBuilder *getInitConfigurationBuilder()
{
if ( !_initConfigurationBuilder )
{
_initConfigurationBuilder = [ALSdkInitializationConfiguration builderWithSdkKey: getSdkKeyFromAppLovinSettingsPlist()];
}
return _initConfigurationBuilder;
}
ALSdk *getSdk()
{
if ( !_sdk )
@@ -72,6 +61,17 @@ extern "C"
return _adManager;
}
ALSdkInitializationConfigurationBuilder *getInitConfigurationBuilder()
{
if ( !_initConfigurationBuilder )
{
NSString *sdkKey = [getSdk().settings.extraParameters al_stringForKey: KeySdkKey];
_initConfigurationBuilder = [ALSdkInitializationConfiguration builderWithSdkKey: sdkKey];
}
return _initConfigurationBuilder;
}
int getConsentStatusValue(NSNumber *consentStatus)
{
if ( consentStatus )
@@ -117,14 +117,6 @@ extern "C"
return array;
}
NSString *getSdkKeyFromAppLovinSettingsPlist()
{
NSString *settingsPlistResourceURL = [NSBundle.mainBundle pathForResource: @"AppLovin-Settings" ofType: @"plist"];
NSDictionary<NSString *, id> *sdkSettingsFromPlist = settingsPlistResourceURL ? [[NSDictionary alloc] initWithContentsOfFile: settingsPlistResourceURL] : @{};
return [sdkSettingsFromPlist al_stringForKey: KeySdkKey];
}
MASegmentCollection *getSegmentCollection(const char *collectionJson)
{
MASegmentCollectionBuilder *segmentCollectionBuilder = [MASegmentCollection builder];
@@ -289,21 +281,6 @@ extern "C"
return [ALPrivacySettings isUserConsentSet];
}
void _MaxSetIsAgeRestrictedUser(bool isAgeRestrictedUser)
{
[ALPrivacySettings setIsAgeRestrictedUser: isAgeRestrictedUser];
}
bool _MaxIsAgeRestrictedUser()
{
return [ALPrivacySettings isAgeRestrictedUser];
}
bool _MaxIsAgeRestrictedUserSet()
{
return [ALPrivacySettings isAgeRestrictedUserSet];
}
void _MaxSetDoNotSell(bool doNotSell)
{
[ALPrivacySettings setDoNotSell: doNotSell];

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ceafa35ff4b964f12b9c025f47227c44
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 28880992a399a48b7abe95b66649d711
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Facebook/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<!-- Ensure that Resolver doesn't inadvertently pull Facebook's beta versions of the SDK by forcing a specific version.
Since FAN SDK depends on older versions of a few support and play service versions
`com.applovin.mediation:facebook-adapter:x.y.z.a` resolves to `com.applovin.mediation:facebook-adapter:+` which pulls down the beta versions of FAN SDK.
Note that forcing the adapter is enough to stop Jar Resolver from pulling the latest FAN SDK. -->
<androidPackage spec="com.applovin.mediation:facebook-adapter:[6.18.0.0]" />
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationFacebookAdapter" version="6.15.2.1" />
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: aea9bdf974328420db5ae118ef0d2b87
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Facebook/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d082a8938aab642cd8a004a029248a3b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e076e4ef7e2874ba69b108cc7a346c2a
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Fyber/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin.mediation:fyber-adapter:8.3.1.1"/>
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationFyberAdapter" version="8.3.2.1"/>
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 5e123cdc08e804dffb2c40c4fbc83caf
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Fyber/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ac48cf571fb649d6b44e9973e31d03d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e8015bd045cea462c8f39c8a05867d08
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Google/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<!-- Ensure that Resolver doesn't inadvertently pull the latest Play Services Ads' SDK that we haven't certified against. -->
<androidPackage spec="com.applovin.mediation:google-adapter:[23.3.0.1]" />
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationGoogleAdapter" version="11.10.0.0" />
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 053b810d3594744e38b6fd0fa378fb57
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Google/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0d540ee5f5b374e3ea122e65b3d9fa98
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 531d860cac61f47d19e32f526470ae43
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/IronSource/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin.mediation:ironsource-adapter:8.3.0.0.2">
<repositories>
<repository>https://android-sdk.is.com/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationIronSourceAdapter" version="8.3.0.0.1" />
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 19262406303f04f05b14b31b3c734d35
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/IronSource/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 65275fe8716b147f2a622c8018ca68d2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 30751f2dc322a40e588edfb7c978c9c0
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/UnityAds/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin.mediation:unityads-adapter:4.12.3.0" />
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationUnityAdsAdapter" version="4.12.3.0" />
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 9950f1cb0da1e43efbeca604db142076
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 83e47aa65ef684577b34edb98b63a226
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 77b6ea05736a9458f8ef8762ee9b64bb
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Vungle/Editor
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin.mediation:vungle-adapter:7.4.1.2" />
</androidPackages>
<iosPods>
<iosPod name="AppLovinMediationVungleAdapter" version="7.4.1.1" />
</iosPods>
</dependencies>

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 0d8ad3a6ddc4f44fab2efe607fe14f26
labels:
- al_max
- al_max_export_path-MaxSdk/Mediation/Vungle/Editor/Dependencies.xml
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -30,7 +30,7 @@ MonoBehaviour:
userTrackingUsageDescriptionJa:
userTrackingUsageDescriptionKo:
userTrackingUsageDescriptionZhHans:
userTrackingUsageDescriptionZhHant: default_localization
adMobAndroidAppId:
adMobIosAppId:
userTrackingUsageDescriptionZhHant:
adMobAndroidAppId: ca-app-pub-1541656156622049~4671899521
adMobIosAppId: ca-app-pub-1541656156622049~9934477255
showInternalSettingsInIntegrationManager: 0

View File

Before

Width:  |  Height:  |  Size: 159 B

After

Width:  |  Height:  |  Size: 159 B

View File

@@ -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>

View File

@@ -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)

View File

@@ -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");

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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.

View File

@@ -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>

View File

@@ -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
}
/**

View File

@@ -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>

View File

@@ -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);

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: de38137d567d12045bbe1372bc888de6
guid: 83607d3558d16fd44868ee734e051f0b
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3fdee26ffb417244da1c9778ddaf7e90
guid: 15ef3a13abd225e4db1d26b28e321a97
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arkgame.ft"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.VIBRATE" />
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.arkgame.ft"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:extractNativeLibs="true" android:name="com.unity3d.player.TYApp" android:usesCleartextTraffic="true">
<activity android:name="com.unity3d.player.TYUnityActivity"
android:theme="@style/UnityThemeSelector">

View File

@@ -15,10 +15,10 @@ dependencies {
api "com.squareup.retrofit2:adapter-rxjava:2.1.0"
api "io.reactivex:rxandroid:1.2.1"
api "io.reactivex:rxjava:1.1.9"
//GA依赖
// implementation 'com.tuyoo.component:growsdk-gasdk:2.4.22_0115-RELEASE' 由于build时候 包获取不到(可能是网络原因)平台已经给了 aar文件
implementation 'net.aihelp:android-aihelp-aar:4.6.+'
// Google Play In-App Review
implementation 'com.google.android.play:review:2.0.1'
implementation 'net.aihelp:android-aihelp-aar:5.3.+'
implementation 'com.google.android.gms:play-services-auth:20.2.0'
implementation('com.android.billingclient:billing:6.0.1')
@@ -31,9 +31,6 @@ dependencies {
implementation 'org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.41'
implementation 'androidx.core:core:1.8.0'
// implementation 'com.appsflyer:af-android-sdk:6.14.2' //tuyou 讓使用6.12.5 版本 ,對接后發現 缺少了一些文件 所以使用6.14.2版本
// implementation 'com.appsflyer:unity-wrapper:6.14.3'
// implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.miui.referrer:homereferrer:1.0.0.6'
implementation platform('com.google.firebase:firebase-bom:32.7.4')
@@ -45,7 +42,13 @@ dependencies {
// Android Resolver Dependencies Start
implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:10
implementation 'com.applovin:applovin-sdk:12.6.0' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
implementation 'com.applovin.mediation:facebook-adapter:[6.18.0.0]' // Assets/MaxSdk/Mediation/Facebook/Editor/Dependencies.xml:8
implementation 'com.applovin.mediation:fyber-adapter:8.3.1.1' // Assets/MaxSdk/Mediation/Fyber/Editor/Dependencies.xml:4
implementation 'com.applovin.mediation:google-adapter:[23.3.0.1]' // Assets/MaxSdk/Mediation/Google/Editor/Dependencies.xml:5
implementation 'com.applovin.mediation:ironsource-adapter:8.3.0.0.2' // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
implementation 'com.applovin.mediation:unityads-adapter:4.12.3.0' // Assets/MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml:4
implementation 'com.applovin.mediation:vungle-adapter:7.4.1.2' // Assets/MaxSdk/Mediation/Vungle/Editor/Dependencies.xml:4
implementation 'com.applovin:applovin-sdk:13.0.0' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
implementation 'com.appsflyer:adrevenue:6.9.1' // Assets/AppsFlyer/Editor/AppsFlyerAdRevenueDependencies.xml:4
implementation 'com.appsflyer:af-android-sdk:6.14.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:6
implementation 'com.appsflyer:unity-adrevenue-generic-wrapper:6.9.1' // Assets/AppsFlyer/Editor/AppsFlyerAdRevenueDependencies.xml:5

View File

@@ -0,0 +1,49 @@
package com.android.action.activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.provider.Settings;
import android.util.Log;
class NS{
public static void GotoNS(Context context){
Intent intent = new Intent();
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.O) {
intent.setAction(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.getPackageName());
}
else if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP&&
Build.VERSION.SDK_INT<Build.VERSION_CODES.O) {
intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
intent.putExtra("app_package", context.getPackageName());
//Log.e("success grt packagename",context.getPackageName());
intent.putExtra("app_uid", context.getApplicationInfo().uid);
//Log.e("success get uid", String.valueOf(context.getApplicationInfo().uid));
}
else if(Build.VERSION.SDK_INT==Build.VERSION_CODES.KITKAT) {
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + context.getPackageName()));
}
else{
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if(Build.VERSION.SDK_INT>=9)
{
intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
intent.setData(Uri.fromParts("package",context.getPackageName(),null));
}
else if(Build.VERSION.SDK_INT<=8){
intent.setAction(Intent.ACTION_VIEW);
intent.setClassName("com.android.settings", "com.android.setting.InstalledAppDetails");
intent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
}
}
context.startActivity(intent);
}
}

View File

@@ -0,0 +1,32 @@
fileFormatVersion: 2
guid: bec28024fb536c549856ff8c4ebc57af
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -17,7 +17,9 @@ dependencyResolutionManagement {
google()
mavenCentral()
// Android Resolver Repos Start
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
maven {
url "https://android-sdk.is.com/" // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
}
mavenLocal()
// Android Resolver Repos End
flatDir {

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using AppsFlyerSDK;
using asap.core;
using Newtonsoft.Json.Linq;

View File

@@ -1 +0,0 @@
2d1ff846becd15535825f810a1098903

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: d04ab5feb9b027f4fb188506d52dc152
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,6 +0,0 @@
{
"name": "ta",
"version": "0.0.1",
"displayName": "TA",
"description": "ThinkingData SDK"
}

View File

@@ -0,0 +1,180 @@
**v2.5.1** 2022/11/21
- 新增支持设置实例名称
- 新增支持获取国家/地区信息
- 优化代码
**v2.5.0** 2022/10/20
- 优化代码
**v2.4.1** 2022/08/08
- 支持 Package Manager 接入
- 新增自动采集场景加载、卸载事件
- 优化代码
**v2.4.0** 2022/06/24
- 新增支持去重追加用户属性
- 新增支持自动采集事件回调
- 新增支持 iOS / Android 数据加密上报
- 优化代码
**v2.3.1** 2022/04/21
- 新增预置属性禁用开关
- 优化代码
**v2.3.0** 2022/02/28
- 全平台支持缓存事件、批量发送
- 优化代码
**v2.2.5** 2022/01/17
- 新增预置属性`#app_version`
- 支持 Switch 等平台,放开对支持平台的限制
- 简化初始化流程,放开 Unity 预置体限制
- 优化代码
**v2.2.4** 2021/11/15
- 支持复杂数据类型传输
- 自动采集事件支持自定义属性
- 优化代码
**v2.2.3** 2021/09/24
- 适配 WebGL 平台
- 优化代码
**v2.2.2** 2021/09/15
- 支持手动初始化
- 支持事件黑名单
- 优化代码
**v2.2.1** 2021/07/21
- 优化代码
**v2.2.0** 2021/06/16
- 适配低版本 Xcode 版本
- 适配 .NET 3.5 / 2017.x 环境
- 新增 C# 异常采集
- 调整事件属性、公共属性、预置属性的覆盖顺序
- 更新 Android SDK (v2.7.0)、iOS SDK (v2.7.0)
**v2.1.5** 2021/04/19
- 兼容低版本 .NET
- 代码优化
**v2.1.4** 2021/03/15
- 适配 iOS 14
- 适配 Android 11
- 新增预置属性`#bundle_id` (应用唯一标识)
- 优化网络信号获取逻辑
**v2.1.3** 2021/01/04
- 支持 UnityEditor 中上报数据
- 支持 PC 端游戏 ( Windows, MacOS )
- 多实例场景,支持代码设置默认实例
**v.2.1.2**(2020-10-31)
- autodata中信息放入track事件的properties
- 移除iOS bundle资源文件
- install,start事件以后立即flush
- 新增iOS 5G信息采集;更新5G情况的数据上报判断逻辑
- 调整未知网络数据上报逻辑调整
- 默认上报策略调整为所有网络情况均可上报
- 大量安卓日志打印OOM异常优化
**v2.1.1** (2020-08-25)
- 修复特殊事件不设置timeZone导致上报错误的#zone_offset的问题.
**v2.1.0** (2020-08-24)
- 支持首次事件, 允许传入自定义的 ID 校验是否首次上报
- 支持可更新、可重写的事件
- 优化#lib/#lib_version 字段为 Unity SDK 信息
- 升级原生 SDK 版本为 v2.6.0
**v2.0.8** (2020-06-28)
- 更新原生 Android SDK解决极端情况下的空指针异常
**v2.0.7** (2020-06-23)
- 新增预置属性 #system_language
- 更新原生 SDK 版本号: Android v2.5.5, iOS v2.5.5
- Android 不再通过修改 gradle 配置来引入ThinkingAnalyticsSDK 依赖
**v2.0.6** (2020-06-17)
- 解决 iOS 32 位机型 long 型溢出的问题
**v2.0.5** (2020-05-19)
- 解决 2018.04 版本无法使用 ntp 校准时间的问题
**v2.0.4** (2020-05-15)
- 更新原生 iOS SDK 到 v2.5.2,解决上个版本中 Debug 模式问题
**v2.0.3** (2020-05-14)
- 更新原生 SDK 版本,适配 TA 后台埋点管理功能
- 优化代码,避免出现异常(可能会导致与其他崩溃采集 SDK 冲突)
**v2.0.2** (2020-04-17)
- 修复 Double 类型在自定义 CultureInfo 的场景下格式错误
**v2.0.1** (2020-04-14)
- 修复 Android 平台 DEBUG 模式上报事件的 BUG.
**v2.0.0** (2020-04-03)
- 修改自动采集逻辑,支持四种类型的自动采集事件:启动、关闭、崩溃、安装
- 支持 SDK 时间校准功能,支持时间戳校准和 NTP 服务器校准
- 允许为用户属性相关设置接口传入指定时间
**v1.4.3** (2020-03-19)
- 支持对数据 #time 属性的默认时区设置
- 更新原生 SDK 版本
**v1.4.2** (2020-02-21)
- 更新iOS 插件修复之前版本bug
**v1.4.1** (2020-02-14)
- 适配 Unity 2019.3.1f1
**v1.4.0** (2020-02-11)
- 属性值支持 List / Array 类型
- 新增 UserAppend 接口
- 支持 Debug 模式数据校验
- 支持为每个实例单独配置接收端地址
- 去除本地数据格式校验
**v1.3.1** (2019-12-25)
- 修复 Android 4.3 以下版本退出超时
- 修复 未包含 iOS 开发环境时的报错
**v1.3.0** (2019-10-18)
- 新增 UserUnset 接口:用于重置用户属性.
- 事件预置属性新增时间偏移,适配多时区需求
**v1.2.2** (2019-10-11)
- 优化 iOS 平台上报逻辑,解决缓存数据库异常导致的重复上报
**v1.2.1** (2019-09-27)
- 解决老版本 .NET 的兼容性问题
**v1.2.0** (2019-08-31)
- 支持关闭/打开数据上报
- 支持暂停/继续数据上报
- 支持轻量级实例
- 修复2019.2.1f 版本设置网络类型失败
- 修复timeEvent 不准确问题
- Android/iOS SDK 升级为2.1.0
**v1.1.0** (2019-08-09)
- 支持获取设备ID
- 支持动态公共属性
- 支持安装事件采集
- Android SDK 默认升级为2.0.2
- iOS SDK 升级为2.0.1
- 支持上报缓存选项用户可以选择主动调用StartTrack() 去开始上报
**v1.0.0** (2019-06-20)
- 支持访客ID 和用户账号的设置
- 支持事件和用户属性上报
- 支持 ta_app_start 和 ta_app_end 事件的自动上报
- 支持公共属性接口
- 支持 timeEvent 接口
- 支持多项目上报

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d66857cec492747aa8da439d6d1ff532
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,17 @@
{
"name": "ThinkingAnalytics-Editor",
"references": [
"ThinkingAnalytics"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: dbc881e260fba43c3b36c3da8364a4b1
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More