diff --git a/source/plugin/Assets/GoogleMobileAds/Api/MobileAds.cs b/source/plugin/Assets/GoogleMobileAds/Api/MobileAds.cs index e08a58cc7..36ed64c55 100644 --- a/source/plugin/Assets/GoogleMobileAds/Api/MobileAds.cs +++ b/source/plugin/Assets/GoogleMobileAds/Api/MobileAds.cs @@ -283,6 +283,18 @@ public static void OpenAdInspector(Action adInspectorClosedAct }); } + public static void HelloWorld() + { + Instance.client.HelloWorld(); + } + +#if GMA_PREVIEW_FEATURES + public static void HelloWorldPreview() + { + Instance.client.HelloWorldPreview(); + } +#endif + internal static IClientFactory GetClientFactory() { if (clientFactory == null) { String typeName = null; diff --git a/source/plugin/Assets/GoogleMobileAds/Common/IMobileAdsClient.cs b/source/plugin/Assets/GoogleMobileAds/Common/IMobileAdsClient.cs index 093318646..7c864d107 100644 --- a/source/plugin/Assets/GoogleMobileAds/Common/IMobileAdsClient.cs +++ b/source/plugin/Assets/GoogleMobileAds/Common/IMobileAdsClient.cs @@ -77,5 +77,11 @@ void Preload(List configurations, /// /// Called when ad inspector UI closes. void OpenAdInspector(Action adInspectorClosedAction); + + void HelloWorld(); + +#if GMA_PREVIEW_FEATURES + void HelloWorldPreview(); +#endif } } diff --git a/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs b/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs new file mode 100644 index 000000000..a96573371 --- /dev/null +++ b/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs @@ -0,0 +1,41 @@ +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.iOS.Xcode; + +namespace GoogleMobileAds.Editor +{ + public class BuildPostProcessor: IPostprocessBuildWithReport + { + + public int callbackOrder { get { return 1; } } + + public void OnPostprocessBuild(BuildReport report) + { + if (report.summary.platform != BuildTarget.iOS) + { + return; + } + + string projectPath = PBXProject.GetPBXProjectPath(report.summary.outputPath); + var project = new PBXProject(); + project.ReadFromFile(projectPath); + string unityFrameworkTargetGuid = project.GetUnityFrameworkTargetGuid(); + string scriptingDefineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup( + BuildTargetGroup.iOS); + bool isPreviewEnabled = scriptingDefineSymbols.Contains("GMA_PREVIEW_FEATURES"); + + if (isPreviewEnabled) + { + // This is equivalent to adding `-DGMA_PREVIEW_FEATURES=1` to the compiler flags. + project.AddBuildProperty(unityFrameworkTargetGuid, + "GCC_PREPROCESSOR_DEFINITIONS", + "GMA_PREVIEW_FEATURES=1"); + + UnityEngine.Debug.Log("GMA Preview Features enabled for iOS build."); + } + + project.WriteToFile(projectPath); + } + } +} diff --git a/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs.meta b/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs.meta new file mode 100644 index 000000000..997d609d9 --- /dev/null +++ b/source/plugin/Assets/GoogleMobileAds/Editor/BuildPostProcessor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 0675132121274096a7b0c6981d345087 +timeCreated: 1754366216 \ No newline at end of file diff --git a/source/plugin/Assets/GoogleMobileAds/Platforms/Android/MobileAdsClient.cs b/source/plugin/Assets/GoogleMobileAds/Platforms/Android/MobileAdsClient.cs index 571270893..eda747240 100644 --- a/source/plugin/Assets/GoogleMobileAds/Platforms/Android/MobileAdsClient.cs +++ b/source/plugin/Assets/GoogleMobileAds/Platforms/Android/MobileAdsClient.cs @@ -146,6 +146,18 @@ public Version GetSDKVersion() return new Version(versionString); } + public void HelloWorld() + { + Debug.Log("Hello from MobileAdsClient!"); + } + +#if GMA_PREVIEW_FEATURES + public void HelloWorldPreview() + { + Debug.Log("Hello from MobileAdsClient Preview!"); + } +#endif + #region Callbacks from OnInitializationCompleteListener. public void onInitializationComplete(AndroidJavaObject initStatus) diff --git a/source/plugin/Assets/GoogleMobileAds/Platforms/Unity/MobileAdsClient.cs b/source/plugin/Assets/GoogleMobileAds/Platforms/Unity/MobileAdsClient.cs index c9689b4fa..8e7dabba1 100644 --- a/source/plugin/Assets/GoogleMobileAds/Platforms/Unity/MobileAdsClient.cs +++ b/source/plugin/Assets/GoogleMobileAds/Platforms/Unity/MobileAdsClient.cs @@ -219,5 +219,17 @@ public void DestroyAdInspector() AdBehaviour.DestroyAd(dummyAd); prefabAd = null; } + + public void HelloWorld() + { + Debug.Log("Hello from MobileAdsClient!"); + } + +#if GMA_PREVIEW_FEATURES + public void HelloWorldPreview() + { + Debug.Log("Hello from MobileAdsClient Preview!"); + } +#endif } } diff --git a/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/Externs.cs b/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/Externs.cs index f03e121ab..6644027bb 100644 --- a/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/Externs.cs +++ b/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/Externs.cs @@ -966,6 +966,15 @@ internal static extern IntPtr GADUAdapterResponseInfoAdError( internal static extern string GADUAdapterResponseInfoDescription(IntPtr error); #endregion + + [DllImport("__Internal")] + internal static extern void HelloWorld(); + +#if GMA_PREVIEW_FEATURES + [DllImport("__Internal")] + internal static extern void HelloWorldPreview(); +#endif + } } #endif diff --git a/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/MobileAdsClient.cs b/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/MobileAdsClient.cs index 17bba7406..60ae3b267 100644 --- a/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/MobileAdsClient.cs +++ b/source/plugin/Assets/GoogleMobileAds/Platforms/iOS/MobileAdsClient.cs @@ -145,6 +145,18 @@ public void OpenAdInspector(Action onAdInspecto Externs.GADUPresentAdInspector(this.mobileAdsClientPtr, AdInspectorClosedCallback); } + public void HelloWorld() + { + Externs.HelloWorld(); + } + +#if GMA_PREVIEW_FEATURES + public void HelloWorldPreview() + { + Externs.HelloWorldPreview(); + } +#endif + [MonoPInvokeCallback(typeof(GADUAdAvailableCallback))] private static void AdAvailableCallback(IntPtr mobileAdsClient, IntPtr config) { diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin.h b/source/plugin/Assets/Plugins/iOS/TestPlugin.h new file mode 100644 index 000000000..6362e2685 --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin.h @@ -0,0 +1,8 @@ + +#import + +@interface TestPlugin : NSObject + ++ (void)HelloWorld; + +@end diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin.h.meta b/source/plugin/Assets/Plugins/iOS/TestPlugin.h.meta new file mode 100644 index 000000000..7a102180e --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin.h.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 2642dac7c2fe8436f954e55145e16107 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin.m b/source/plugin/Assets/Plugins/iOS/TestPlugin.m new file mode 100644 index 000000000..71c43a604 --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin.m @@ -0,0 +1,10 @@ + +#import "TestPlugin.h" + +@implementation TestPlugin + ++ (void)HelloWorld { + NSLog(@"Hello World from TestPlugin"); +} + +@end diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin.m.meta b/source/plugin/Assets/Plugins/iOS/TestPlugin.m.meta new file mode 100644 index 000000000..364fb21ed --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin.m.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: 51b3efbd15c114396ac7db3a03c9f42b +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: 0 + settings: + DefaultValueInitialized: true + - first: + VisionOS: VisionOS + second: + enabled: 1 + settings: {} + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h new file mode 100644 index 000000000..bb7e65433 --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h @@ -0,0 +1,8 @@ +#import +#import "TestPlugin.h" + +@interface TestPlugin (Preview) + ++ (void)HelloWorldPreview; + +@end diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h.meta b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h.meta new file mode 100644 index 000000000..2df872dba --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.h.meta @@ -0,0 +1,27 @@ +fileFormatVersion: 2 +guid: 6ba9c5d6853e94c9e8c01e75b7d72f0f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m new file mode 100644 index 000000000..acf070118 --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m @@ -0,0 +1,11 @@ +#if GMA_PREVIEW_FEATURES +#import "TestPlugin_Preview.h" + +@implementation TestPlugin (Preview) + ++ (void)HelloWorldPreview { + NSLog(@"Hello World from TestPlugin_Preview"); +} + +@end +#endif diff --git a/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m.meta b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m.meta new file mode 100644 index 000000000..937619fae --- /dev/null +++ b/source/plugin/Assets/Plugins/iOS/TestPlugin_Preview.m.meta @@ -0,0 +1,42 @@ +fileFormatVersion: 2 +guid: ebb37684d2f58499d896ec45289ea5e1 +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: 0 + settings: + DefaultValueInitialized: true + - first: + VisionOS: VisionOS + second: + enabled: 1 + settings: {} + - first: + iPhone: iOS + second: + enabled: 1 + settings: {} + - first: + tvOS: tvOS + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: