Skip to content

Commit 8909cc2

Browse files
committed
setting sessionManager delegate as nullable
Setting OneSignal as sessionManager delegate in init
1 parent 97b491d commit 8909cc2

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

iOS_SDK/OneSignalSDK/OneSignalOutcomes/Source/OutcomeEvents/OSSessionManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838

3939
+ (OSSessionManager*)sharedSessionManager;
4040

41-
@property (nonatomic) id<SessionStatusDelegate> _Nonnull delegate;
41+
@property (nonatomic) id<SessionStatusDelegate> _Nullable delegate;
4242

43-
- (instancetype _Nonnull)init:(Class<SessionStatusDelegate> _Nonnull)delegate withTrackerFactory:(OSTrackerFactory *_Nonnull)trackerFactory;
43+
- (instancetype _Nonnull)init:(Class<SessionStatusDelegate> _Nullable)delegate withTrackerFactory:(OSTrackerFactory *_Nonnull)trackerFactory;
4444

4545
- (NSArray<OSInfluence *> *_Nonnull)getInfluences;
4646
- (NSArray<OSInfluence *> *_Nonnull)getSessionInfluences;

iOS_SDK/OneSignalSDK/OneSignalOutcomes/Source/OutcomeEvents/OSSessionManager.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ @implementation OSSessionManager
4141
static OSSessionManager *_sessionManager;
4242
+ (OSSessionManager*)sharedSessionManager {
4343
if (!_sessionManager)
44-
_sessionManager = [[OSSessionManager alloc] init:self withTrackerFactory:[OSTrackerFactory sharedTrackerFactory]];
44+
_sessionManager = [[OSSessionManager alloc] init:nil withTrackerFactory:[OSTrackerFactory sharedTrackerFactory]];
4545
return _sessionManager;
4646
}
4747

@@ -255,7 +255,7 @@ - (BOOL)willChangeSessionForChannel:(OSChannelTracker *)channelTracker withInflu
255255
- (void)sendSessionEndingWithInfluences:(NSArray<OSInfluence *> *)endingInfluences {
256256
[OneSignalLog onesignalLog:ONE_S_LL_DEBUG message:[NSString stringWithFormat:@"OneSignal SessionManager sendSessionEndingWithInfluences with influences: %@", endingInfluences.description]];
257257
// Only end session if there are influences available to end
258-
if (endingInfluences.count > 0 && _delegate)
258+
if (endingInfluences.count > 0 && _delegate && [_delegate respondsToSelector:@selector(onSessionEnding:)])
259259
[_delegate onSessionEnding:endingInfluences];
260260
}
261261

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,8 @@ + (void)setInAppMessageLifecycleHandler:(NSObject<OSInAppMessageLifecycleHandler
695695
*/
696696
+ (void)init {
697697
[[OSMigrationController new] migrate];
698+
// using classes as delegates is not best practice. We should consider using a shared instance of a class instead
699+
[OSSessionManager sharedSessionManager].delegate = (id<SessionStatusDelegate>)self;
698700
if ([self requiresUserPrivacyConsent]) {
699701
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"Delayed initialization of the OneSignal SDK until the user provides privacy consent using the consentGranted() method"];
700702
delayedInitializationForPrivacyConsent = true;
@@ -1788,7 +1790,6 @@ + (void)registerUserInternal {
17881790
return;
17891791

17901792
[_outcomeEventsController clearOutcomes];
1791-
[OSSessionManager sharedSessionManager].delegate = self;
17921793
[[OSSessionManager sharedSessionManager] restartSessionIfNeeded:_appEntryState];
17931794

17941795
[OneSignalTrackFirebaseAnalytics trackInfluenceOpenEvent];

0 commit comments

Comments
 (0)