Skip to content

Commit ec3321d

Browse files
Merge pull request #437 from OneSignal/fix/doubledInit
[FIX] Initialized SDK twice if before RuntimeInitializeOnLoadMethod
2 parents 52e8c97 + ad00041 commit ec3321d

File tree

5 files changed

+25
-6
lines changed

5 files changed

+25
-6
lines changed

OneSignalExample/Assets/OneSignal/Attribution/VspAttribution.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,15 @@ public static AnalyticsResult SendAttributionEvent(string actionName, string par
9393
return AnalyticsResult.AnalyticsDisabled;
9494
}
9595
}
96+
9697
#if ONE_SIGNAL_INSTALLED
97-
[RuntimeInitializeOnLoadMethod]
98-
public static void AttachToInit()
99-
=> OneSignal.OnInitialize += appId => SendAttributionEvent("Login", "OneSignal", appId);
98+
[RuntimeInitializeOnLoadMethod]
99+
public static void AttachToInit() {
100+
if (string.IsNullOrEmpty(OneSignal.AppId))
101+
OneSignal.OnInitialize += appId => SendAttributionEvent("Login", "OneSignal", appId);
102+
else
103+
SendAttributionEvent("Login", "OneSignal", OneSignal.AppId);
104+
}
100105
#endif
101106
}
102107
}

OneSignalExample/Assets/OneSignal/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
- `NotificationPermission` return from native SDK no longer raises a casting exception on iOS
1212
- Resolved infinite loops on logging initialization conditions
1313
- iOS postprocessing will respect existing entitlement files
14+
- Will no longer init SDK again if done before `RuntimeInitializeOnLoadMethod`
1415

1516
## [3.0.0-beta.3]
1617
### Fixed

com.onesignal.unity.android/Runtime/OneSignalAndroidInit.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ namespace OneSignalSDK {
3333
///
3434
/// </summary>
3535
internal static class OneSignalAndroidInit {
36-
[RuntimeInitializeOnLoadMethod] public static void Init() => OneSignal.Default = new OneSignalAndroid();
36+
[RuntimeInitializeOnLoadMethod] public static void Init() {
37+
if (!OneSignal.DidInitialize)
38+
OneSignal.Default = new OneSignalAndroid();
39+
}
3740
}
3841
}
3942
#endif

com.onesignal.unity.core/Runtime/OneSignal.Internal.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,15 @@
3131

3232
namespace OneSignalSDK {
3333
public abstract partial class OneSignal {
34+
internal static string AppId { get; private set; }
35+
internal static bool DidInitialize { get; private set; }
3436
internal static event Action<string> OnInitialize;
35-
protected static void _completedInit(string appId) => OnInitialize?.Invoke(appId);
37+
38+
protected static void _completedInit(string appId) {
39+
AppId = appId;
40+
DidInitialize = true;
41+
OnInitialize?.Invoke(AppId);
42+
}
3643

3744
protected LogLevel _logLevel = LogLevel.Fatal;
3845
protected LogLevel _alertLevel = LogLevel.None;

com.onesignal.unity.ios/Runtime/OneSignalIOSInit.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ namespace OneSignalSDK {
3333
///
3434
/// </summary>
3535
internal static class OneSignalIOSInit {
36-
[RuntimeInitializeOnLoadMethod] public static void Init() => OneSignal.Default = new OneSignalIOS();
36+
[RuntimeInitializeOnLoadMethod] public static void Init() {
37+
if (!OneSignal.DidInitialize)
38+
OneSignal.Default = new OneSignalIOS();
39+
}
3740
}
3841
}
3942
#endif

0 commit comments

Comments
 (0)