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 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 diff --git a/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs b/com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs index 6fc747655..2173ee6a7 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 (!OneSignal.DidInitialize) + 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..d74f083d4 100755 --- a/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs +++ b/com.onesignal.unity.core/Runtime/OneSignal.Internal.cs @@ -31,8 +31,15 @@ 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) => OnInitialize?.Invoke(appId); + + protected static void _completedInit(string appId) { + AppId = appId; + DidInitialize = true; + 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..2f1d938ab 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 (!OneSignal.DidInitialize) + OneSignal.Default = new OneSignalIOS(); + } } } #endif \ No newline at end of file