From a2a3e5c4ad2514cd7e3d85b2629024500634ad13 Mon Sep 17 00:00:00 2001 From: Adam Schlesinger Date: Wed, 19 Jan 2022 15:41:28 -0500 Subject: [PATCH 1/4] Set an use the app id as an init marker internally --- .../Runtime/OneSignalAndroidInit.cs | 5 ++++- com.onesignal.unity.core/Runtime/OneSignal.Internal.cs | 7 ++++++- com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs | 5 ++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs b/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs index 6fc747655..3480dcbff 100755 --- a/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs +++ b/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs @@ -33,7 +33,10 @@ namespace OneSignalSDK { /// /// internal static class OneSignalAndroidInit { - [RuntimeInitializeOnLoadMethod] public static void Init() => OneSignal.Default = new OneSignalAndroid(); + [RuntimeInitializeOnLoadMethod] public static void Init() { + if (string.IsNullOrEmpty(OneSignal.AppId)) + OneSignal.Default = new OneSignalAndroid(); + } } } #endif \ No newline at end of file diff --git a/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs b/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs index 84112a697..cbad64893 100755 --- a/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs +++ b/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs @@ -31,8 +31,13 @@ namespace OneSignalSDK { public abstract partial class OneSignal { + internal static string AppId { get; private set; } internal static event Action OnInitialize; - protected static void _completedInit(string appId) => OnInitialize?.Invoke(appId); + + protected static void _completedInit(string appId) { + AppId = appId; + OnInitialize?.Invoke(AppId); + } protected LogLevel _logLevel = LogLevel.Fatal; protected LogLevel _alertLevel = LogLevel.None; diff --git a/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs b/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs index 637be35c8..9b957e485 100644 --- a/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs +++ b/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs @@ -33,7 +33,10 @@ namespace OneSignalSDK { /// /// internal static class OneSignalIOSInit { - [RuntimeInitializeOnLoadMethod] public static void Init() => OneSignal.Default = new OneSignalIOS(); + [RuntimeInitializeOnLoadMethod] public static void Init() { + if (string.IsNullOrEmpty(OneSignal.AppId)) + OneSignal.Default = new OneSignalIOS(); + } } } #endif \ No newline at end of file From 9e57950d77d4bd76ebeefde976fa6dc094bec3ed Mon Sep 17 00:00:00 2001 From: Adam Schlesinger Date: Wed, 19 Jan 2022 15:41:57 -0500 Subject: [PATCH 2/4] Use OnInitialize in VSP if not yet init --- .../Assets/OneSignal/Attribution/VspAttribution.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OneSignalExample/Assets/OneSignal/Attribution/VspAttribution.cs b/OneSignalExample/Assets/OneSignal/Attribution/VspAttribution.cs index b039fb5d1..bf16ea89b 100644 --- a/OneSignalExample/Assets/OneSignal/Attribution/VspAttribution.cs +++ b/OneSignalExample/Assets/OneSignal/Attribution/VspAttribution.cs @@ -93,10 +93,15 @@ public static AnalyticsResult SendAttributionEvent(string actionName, string par return AnalyticsResult.AnalyticsDisabled; } } + #if ONE_SIGNAL_INSTALLED - [RuntimeInitializeOnLoadMethod] - public static void AttachToInit() - => OneSignal.OnInitialize += appId => SendAttributionEvent("Login", "OneSignal", appId); + [RuntimeInitializeOnLoadMethod] + public static void AttachToInit() { + if (string.IsNullOrEmpty(OneSignal.AppId)) + OneSignal.OnInitialize += appId => SendAttributionEvent("Login", "OneSignal", appId); + else + SendAttributionEvent("Login", "OneSignal", OneSignal.AppId); + } #endif } } \ No newline at end of file From 6bc7c09b934fdd02157ee31486b1272f2f3cf727 Mon Sep 17 00:00:00 2001 From: Adam Schlesinger Date: Wed, 19 Jan 2022 15:43:22 -0500 Subject: [PATCH 3/4] Updated CHANGELOG --- OneSignalExample/Assets/OneSignal/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/OneSignalExample/Assets/OneSignal/CHANGELOG.md b/OneSignalExample/Assets/OneSignal/CHANGELOG.md index 21d9ae994..7d1010336 100644 --- a/OneSignalExample/Assets/OneSignal/CHANGELOG.md +++ b/OneSignalExample/Assets/OneSignal/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `NotificationPermission` return from native SDK no longer raises a casting exception on iOS - Resolved infinite loops on logging initialization conditions - iOS postprocessing will respect existing entitlement files +- Will no longer init SDK again if done before `RuntimeInitializeOnLoadMethod` ## [3.0.0-beta.3] ### Fixed From ad0004177ce73cfcb5d6f32dd5b01f3cc285a9e1 Mon Sep 17 00:00:00 2001 From: Adam Schlesinger Date: Wed, 19 Jan 2022 16:22:34 -0500 Subject: [PATCH 4/4] Explicitly call out if initialized via boolean --- com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs | 2 +- com.onesignal.unity.core/Runtime/OneSignal.Internal.cs | 4 +++- com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs b/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs index 3480dcbff..2173ee6a7 100755 --- a/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs +++ b/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs @@ -34,7 +34,7 @@ namespace OneSignalSDK { /// internal static class OneSignalAndroidInit { [RuntimeInitializeOnLoadMethod] public static void Init() { - if (string.IsNullOrEmpty(OneSignal.AppId)) + if (!OneSignal.DidInitialize) OneSignal.Default = new OneSignalAndroid(); } } diff --git a/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs b/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs index cbad64893..d74f083d4 100755 --- a/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs +++ b/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs @@ -32,10 +32,12 @@ namespace OneSignalSDK { public abstract partial class OneSignal { internal static string AppId { get; private set; } + internal static bool DidInitialize { get; private set; } internal static event Action OnInitialize; protected static void _completedInit(string appId) { - AppId = appId; + AppId = appId; + DidInitialize = true; OnInitialize?.Invoke(AppId); } diff --git a/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs b/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs index 9b957e485..2f1d938ab 100644 --- a/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs +++ b/com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs @@ -34,7 +34,7 @@ namespace OneSignalSDK { /// internal static class OneSignalIOSInit { [RuntimeInitializeOnLoadMethod] public static void Init() { - if (string.IsNullOrEmpty(OneSignal.AppId)) + if (!OneSignal.DidInitialize) OneSignal.Default = new OneSignalIOS(); } }