Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
a4c4615
Improve initialization and pass `userId` to Ads sdk.
rstecca-metica Sep 30, 2025
94500c8
Simplify `SdkConfig`
rstecca-metica Sep 30, 2025
418664a
[Work in Progress] : throwing things into the air here, the rearrange…
rstecca-metica Oct 2, 2025
1f6b9dc
Rename `CurrentUserId` -> `UserId`
rstecca-metica Oct 3, 2025
cf68f5e
Return `MeticaAdsInitializationResult` from `InitializeAsync`, rename…
rstecca-metica Oct 3, 2025
e6db716
Add `customKeys` to `SdkConfig`
rstecca-metica Oct 3, 2025
2aed62b
Rename `MeticaAdsInitializationResult`
rstecca-metica Oct 3, 2025
f235f5d
Add methods to `Registry` to add flexibility in registering (or not r…
rstecca-metica Oct 3, 2025
e6ce503
MeticaSdk: static wrappers for Events, SmartConfigs, Offers and Ads m…
rstecca-metica Oct 3, 2025
9fcd610
Update MeticaUnitySdk.cs
rstecca-metica Oct 3, 2025
b9e20a6
Minor changes
rstecca-metica Oct 3, 2025
e10aa20
Convert SdkConfig to MeticaConfiguration.
rstecca-metica Oct 3, 2025
e60ff28
Fix Registry bug.
rstecca-metica Oct 6, 2025
6961568
Simplify SdkConfig further - remove Version and LogLevl (moved to Met…
rstecca-metica Oct 8, 2025
c24320d
Remove SdkConfig in favour of MeticaConfiguration
rstecca-metica Oct 8, 2025
817d481
Rename a few configuration related classes and files
rstecca-metica Oct 8, 2025
8695930
Some cleanup
rstecca-metica Oct 8, 2025
33c6ce9
Remove Prefab and and set the object MeticaConfiguration through code.
antonurankar-moloco Oct 9, 2025
f877dec
Remove meticaAdsExternalTrackerClass
antonurankar-moloco Oct 9, 2025
b4a8892
Remove MaxSdk initialization
antonurankar-moloco Oct 9, 2025
a26e1f6
public void onInitialized(AndroidJavaObject initResponse)
antonurankar-moloco Oct 9, 2025
3398c40
Make Ads static class `internal`
rstecca-metica Oct 9, 2025
b327e1b
Remove redundant method
rstecca-metica Oct 9, 2025
f9e6833
Cleanup and placeholder for `DisposeAsync` in Ads
rstecca-metica Oct 9, 2025
dfbac0a
Remove an empty asmdef reference
rstecca-metica Oct 9, 2025
4b39b54
Made Ads.Dispose placeholder internal.
rstecca-metica Oct 9, 2025
e24b67e
Comment docs tidy up and add a TODO for custom keys
rstecca-metica Oct 9, 2025
cb88962
- Add `Metica.Core` dependency to `Metica.ADS`
rstecca-metica Oct 10, 2025
cce4716
Code style and includes (`using`)
rstecca-metica Oct 10, 2025
28acd08
AndroidDelegate.cs passes ApplovinKey
antonurankar-moloco Oct 10, 2025
3ac65e3
UnityBridge
antonurankar-moloco Oct 11, 2025
f32b83c
AndroidJavaObject parse MeticaSmartFloors
antonurankar-moloco Oct 12, 2025
023f589
Add deprecated
antonurankar-moloco Oct 12, 2025
192b90f
add ids
antonurankar-moloco Oct 12, 2025
867558c
Working ads
antonurankar-moloco Oct 12, 2025
a85f66b
Rewmove CreateMeticaAd
antonurankar-moloco Oct 12, 2025
cc2ef26
MeticaAds can't be internal for now unfortunately. Removed circular c…
rstecca-metica Oct 13, 2025
4308fd5
Logs in AndroidDelegate
rstecca-metica Oct 13, 2025
8cf8ed1
Merge branch 'experimental/MET-4221' into tomi-unity_bridge
antonurankar-moloco Oct 13, 2025
d46225d
v2.0.0-beta1
antonurankar-moloco Oct 13, 2025
e61af21
v2.0.0-beta
antonurankar-moloco Oct 14, 2025
1582f3f
Register MeticaSDK service immediately
antonurankar-moloco Oct 14, 2025
cc76c86
Add setLogEnabled
antonurankar-moloco Oct 14, 2025
1597e88
Use MeticaAds.Log.LogDebug(() =>
antonurankar-moloco Oct 14, 2025
189c8e1
Merge branch 'develop' into tomi-unity_bridge
antonurankar-moloco Oct 14, 2025
3841025
v2.0.0-beta1
antonurankar-moloco Oct 15, 2025
3dd115b
comment
antonurankar-moloco Oct 15, 2025
0b4d3ba
Reformat AndroidDelegate.cs
antonurankar-moloco Oct 15, 2025
42d88c6
Pass interstitialId to public API
antonurankar-moloco Oct 15, 2025
9523fcf
Pass rewardedId to public API
antonurankar-moloco Oct 15, 2025
ab99af4
Reformat InitCallbackProxy.cs
antonurankar-moloco Oct 15, 2025
8418c24
Add InitCallbackProxy.cs
antonurankar-moloco Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Editor/Metica.UnityEd.asmdef
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "Metica.UnityEd",
"rootNamespace": "",
"references": [
"GUID:c2fa3a29e8c2d344eb32bb07693f48f2"
"GUID:201bb3ee2b9a58648b8158bc0b3694a5"
],
"includePlatforms": [
"Editor"
Expand Down
2 changes: 1 addition & 1 deletion Editor/MeticaAdsDependencies.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="com.metica:metica-sdk:1.13.5" />
<androidPackage spec="com.metica:metica-sdk:2.0.0-beta1" />
</androidPackages>
</dependencies>
2 changes: 1 addition & 1 deletion Editor/MeticaEditorUtilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
using UnityEngine;
using UnityEditor;
using System.IO;
using Metica.Unity;
using Metica.SDK.Unity;

namespace Metica.UnityEd
{
Expand Down
7 changes: 3 additions & 4 deletions Editor/MeticaUnitySdkEditor.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
using UnityEngine;
using UnityEditor;
using System.IO;

using Metica.Unity;
using Metica.SDK.Unity;

namespace Metica.UnityEd
{
[CustomEditor(typeof(MeticaUnitySdk))]
public class MeticaUnitySdkEditor : Editor
{
MeticaUnitySdk m_sdk = null;
SdkConfigProvider m_configProvider = null;
MeticaConfigProvider m_configProvider = null;

private const string MeticaDataFolder = "Assets/Metica/Data";

Expand Down Expand Up @@ -40,7 +39,7 @@ public override void OnInspectorGUI()

if (!string.IsNullOrEmpty(assetPath))
{
m_configProvider = ScriptableObject.CreateInstance<SdkConfigProvider>();
m_configProvider = ScriptableObject.CreateInstance<MeticaConfigProvider>();

AssetDatabase.CreateAsset(m_configProvider, assetPath);
AssetDatabase.Refresh();
Expand Down
3 changes: 1 addition & 2 deletions Runtime/ADS/Metica.ADS.asmdef
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
"name": "Metica.ADS",
"rootNamespace": "",
"references": [
"Metica.SDK",
"MaxSdk.Scripts",
"Metica.Core"
],
Expand All @@ -15,4 +14,4 @@
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}
}
6 changes: 5 additions & 1 deletion Runtime/ADS/Metica.ADS.asmdef.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

69 changes: 20 additions & 49 deletions Runtime/ADS/MeticaAds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

using System.Threading.Tasks;
using Metica.Core;
using Metica.SDK;
using UnityEngine.Assertions;

// ReSharper disable once CheckNamespace
namespace Metica.ADS
{
// TODO: make the whole class internal
public static class MeticaAds
{
public const string TAG = "MeticaUnityPlugin";
Expand All @@ -23,7 +23,7 @@ static MeticaAds()
// Check for Unity Editor first since the editor also responds to the currently selected platform.
PlatformDelegate = GetUnityPlayerDelegate();
#elif UNITY_ANDROID
PlatformDelegate = new Android.AndroidDelegate(AndroidUnityBridge.UnityBridgeClass, AndroidUnityBridge.MeticaAdsExternalTrackerClass);
PlatformDelegate = new Android.AndroidDelegate(AndroidUnityBridge.UnityBridgeClass);
#elif UNITY_IPHONE || UNITY_IOS
PlatformDelegate = new IOS.IOSDelegate();
#else
Expand Down Expand Up @@ -55,20 +55,14 @@ static MeticaAds()
PlatformDelegate.RewardedAdRevenuePaid += MeticaAdsCallbacks.Rewarded.OnAdRevenuePaidInternal;
}

public static async Task<bool> InitializeAsync(MeticaConfiguration configuration)
{
var result = await InitializeWithResultAsync(configuration);
return result.IsMeticaAdsEnabled;
}

public static async Task<MeticaAdsInitializationResult> InitializeWithResultAsync(MeticaConfiguration configuration)
public static async Task<MeticaInitializationResult> InitializeAsync(MeticaConfiguration configuration)
{
return await PlatformDelegate.InitializeAsync(
MeticaSdk.ApiKey,
MeticaSdk.AppId,
MeticaSdk.CurrentUserId,
MeticaSdk.Version,
MeticaSdk.BaseEndpoint,
configuration.ApiKey,
configuration.AppId,
configuration.UserId,
configuration.Version,
configuration.BaseEndpoint,
configuration
);
}
Expand All @@ -86,7 +80,6 @@ public static void CreateBanner(string bannerAdUnitId, MeticaBannerPosition posi
// Banner ad methods
public static void ShowBanner(string adUnitId)
{

PlatformDelegate.ShowBanner(adUnitId);
}
public static void HideBanner(string adUnitId)
Expand All @@ -100,53 +93,31 @@ public static void DestroyBanner(string adUnitId)
}

// Interstitial ad methods
public static void LoadInterstitial()
public static void LoadInterstitial(string interstitialAdUnitId)
{
PlatformDelegate.LoadInterstitial();
PlatformDelegate.LoadInterstitial(interstitialAdUnitId);
}
public static void ShowInterstitial()
public static void ShowInterstitial(string interstitialAdUnitId)
{
PlatformDelegate.ShowInterstitial();
PlatformDelegate.ShowInterstitial(interstitialAdUnitId);
}
public static bool IsInterstitialReady()
public static bool IsInterstitialReady(string interstitialAdUnitId)
{
return PlatformDelegate.IsInterstitialReady();
return PlatformDelegate.IsInterstitialReady(interstitialAdUnitId);
}

// Rewarded ad methods
public static void LoadRewarded()
{
PlatformDelegate.LoadRewarded();
}
public static void ShowRewarded()
{
PlatformDelegate.ShowRewarded();
}
public static bool IsRewardedReady()
public static void LoadRewarded(string rewardedAdUnitId)
{
return PlatformDelegate.IsRewardedReady();
PlatformDelegate.LoadRewarded(rewardedAdUnitId);
}

public static void NotifyAdLoadAttempt(string interstitialAdUnitId)
{
PlatformDelegate.NotifyAdLoadAttempt(interstitialAdUnitId);
}

public static void NotifyAdLoadSuccess(MeticaAd meticaAd)
public static void ShowRewarded(string rewardedAdUnitId)
{
PlatformDelegate.NotifyAdLoadSuccess(meticaAd);
PlatformDelegate.ShowRewarded(rewardedAdUnitId);
}

public static void NotifyAdLoadFailed(string adUnitId, string error)
{
PlatformDelegate.NotifyAdLoadFailed(adUnitId, error);
}

public static void NotifyAdShowSuccess(MeticaAd meticaAd)
public static bool IsRewardedReady(string rewardedAdUnitId)
{
// Internally we use the NotifyAdRevenue call, but externally as to not
// break API we use NotifyAdShowSuccess. Which is similar as both will tel you ad was shown.
PlatformDelegate.NotifyAdRevenue(meticaAd);
return PlatformDelegate.IsRewardedReady(rewardedAdUnitId);
}

private static UnityPlayer.UnityPlayerDelegate GetUnityPlayerDelegate()
Expand Down
14 changes: 8 additions & 6 deletions Runtime/ADS/MeticaAdsAssignmentStatus.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
namespace Metica.ADS
{
public enum MeticaAdsAssignmentStatus
{
Normal,
Holdout,
HoldoutDueToError,
}
[System.Obsolete(
"Use MeticaUserGroup instead. This enum has been superseded by MeticaUserGroup which provides clearer trial/holdout assignment status.")]
public enum MeticaAdsAssignmentStatus
{
Normal,
Holdout,
HoldoutDueToError,
}
}
35 changes: 31 additions & 4 deletions Runtime/ADS/MeticaConfiguration.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,33 @@
namespace Metica.ADS
using System.Collections.Generic;

namespace Metica.ADS
{
public class MeticaConfiguration
{
}
[System.Serializable]
public struct MeticaConfiguration
{
/// <summary>
/// Metica API Key
/// </summary>
public string ApiKey;
/// <summary>
/// Metica App ID
/// </summary>
public string AppId;
[System.Obsolete]
public string UserId;
[System.Obsolete]
public string Version;
public string BaseEndpoint;
/// <summary>
/// Allows adding custom API keys or other values.
/// TODO: https://linear.app/metica/issue/MET-4645/custom-additional-api-keys
/// </summary>
public List<KeyMap> CustomKeys;

public struct KeyMap
{
public string Key;
public string Value;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
namespace Metica.ADS
{
public class MeticaAdsInitializationResult
public class MeticaInitializationResult
{
public MeticaAdsInitializationResult(MeticaAdsAssignmentStatus status)
public MeticaAdsAssignmentStatus Status { get; }

public MeticaInitializationResult(MeticaAdsAssignmentStatus status)
{
Status = status;
}
Expand All @@ -21,7 +23,5 @@ public bool IsMeticaAdsEnabled
return false;
}
}

public MeticaAdsAssignmentStatus Status { get; }
}
}
16 changes: 16 additions & 0 deletions Runtime/ADS/MeticaSmartFloors.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using UnityEngine;

namespace Metica.ADS
{
public class MeticaSmartFloors
{
public MeticaUserGroup userGroup { get; private set; }
public bool isSuccess { get; private set; }

public MeticaSmartFloors(MeticaUserGroup userGroup, bool isSuccess)
{
this.userGroup = userGroup;
this.isSuccess = isSuccess;
}
}
}
3 changes: 3 additions & 0 deletions Runtime/ADS/MeticaSmartFloors.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Runtime/ADS/MeticaUserGroup.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Metica.ADS
{
public enum MeticaUserGroup
{
TRIAL,
HOLDOUT,
}
}
3 changes: 3 additions & 0 deletions Runtime/ADS/MeticaUserGroup.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading