|
39 | 39 | #import "OSSessionManager.h" |
40 | 40 |
|
41 | 41 | @implementation OSInAppMessageWillDisplayEvent |
| 42 | + |
42 | 43 | - (OSInAppMessageWillDisplayEvent*)initWithInAppMessage:(OSInAppMessage *)message { |
43 | 44 | _message = message; |
44 | 45 | return self; |
45 | 46 | } |
| 47 | + |
| 48 | +- (NSDictionary *)jsonRepresentation { |
| 49 | + NSMutableDictionary *json = [NSMutableDictionary new]; |
| 50 | + json[@"message"] = [self.message jsonRepresentation]; |
| 51 | + return json; |
| 52 | +} |
| 53 | + |
46 | 54 | @end |
47 | 55 |
|
48 | 56 | @implementation OSInAppMessageDidDisplayEvent |
| 57 | + |
49 | 58 | - (OSInAppMessageDidDisplayEvent*)initWithInAppMessage:(OSInAppMessage *)message { |
50 | 59 | _message = message; |
51 | 60 | return self; |
52 | 61 | } |
| 62 | + |
| 63 | +- (NSDictionary *)jsonRepresentation { |
| 64 | + NSMutableDictionary *json = [NSMutableDictionary new]; |
| 65 | + json[@"message"] = [self.message jsonRepresentation]; |
| 66 | + return json; |
| 67 | +} |
| 68 | + |
53 | 69 | @end |
54 | 70 |
|
55 | 71 | @implementation OSInAppMessageWillDismissEvent |
| 72 | + |
56 | 73 | - (OSInAppMessageWillDismissEvent*)initWithInAppMessage:(OSInAppMessage *)message { |
57 | 74 | _message = message; |
58 | 75 | return self; |
59 | 76 | } |
| 77 | + |
| 78 | +- (NSDictionary *)jsonRepresentation { |
| 79 | + NSMutableDictionary *json = [NSMutableDictionary new]; |
| 80 | + json[@"message"] = [self.message jsonRepresentation]; |
| 81 | + return json; |
| 82 | +} |
| 83 | + |
60 | 84 | @end |
61 | 85 |
|
62 | 86 | @implementation OSInAppMessageDidDismissEvent |
| 87 | + |
63 | 88 | - (OSInAppMessageDidDismissEvent*)initWithInAppMessage:(OSInAppMessage *)message { |
64 | 89 | _message = message; |
65 | 90 | return self; |
66 | 91 | } |
| 92 | + |
| 93 | +- (NSDictionary *)jsonRepresentation { |
| 94 | + NSMutableDictionary *json = [NSMutableDictionary new]; |
| 95 | + json[@"message"] = [self.message jsonRepresentation]; |
| 96 | + return json; |
| 97 | +} |
| 98 | + |
67 | 99 | @end |
68 | 100 |
|
69 | 101 | @interface OSMessagingController () |
@@ -91,7 +123,7 @@ @interface OSMessagingController () |
91 | 123 |
|
92 | 124 | @property (nonatomic) NSMutableArray<NSObject<OSInAppMessageClickListener> *> *clickListeners; |
93 | 125 |
|
94 | | -@property (weak, nonatomic, nullable) NSObject<OSInAppMessageLifecycleListener> *inAppMessageDelegate; |
| 126 | +@property (nonatomic) NSMutableArray<NSObject<OSInAppMessageLifecycleListener> *> *lifecycleListeners; |
95 | 127 |
|
96 | 128 | @property (strong, nullable) OSInAppMessageViewController *viewController; |
97 | 129 |
|
@@ -169,6 +201,7 @@ - (instancetype)init { |
169 | 201 | [self initializeTriggerController]; |
170 | 202 | self.messageDisplayQueue = [NSMutableArray new]; |
171 | 203 | self.clickListeners = [NSMutableArray new]; |
| 204 | + self.lifecycleListeners = [NSMutableArray new]; |
172 | 205 |
|
173 | 206 | let standardUserDefaults = OneSignalUserDefaults.initStandard; |
174 | 207 |
|
@@ -309,43 +342,47 @@ - (void)removeInAppMessageClickListener:(NSObject<OSInAppMessageClickListener> * |
309 | 342 | [_clickListeners removeObject:listener]; |
310 | 343 | } |
311 | 344 |
|
312 | | -- (void)setInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate { |
313 | | - _inAppMessageDelegate = delegate; |
| 345 | +- (void)addInAppMessageLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener { |
| 346 | + [_lifecycleListeners addObject:listener]; |
314 | 347 | } |
315 | 348 |
|
316 | | -- (void)removeInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate { |
317 | | - _inAppMessageDelegate = nil; |
| 349 | +- (void)removeInAppMessageLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener { |
| 350 | + [_lifecycleListeners removeObject:listener]; |
318 | 351 | } |
319 | 352 |
|
320 | 353 | - (void)onWillDisplayInAppMessage:(OSInAppMessageInternal *)message { |
321 | | - if (self.inAppMessageDelegate && |
322 | | - [self.inAppMessageDelegate respondsToSelector:@selector(onWillDisplayInAppMessage:)]) { |
323 | | - OSInAppMessageWillDisplayEvent *event = [[OSInAppMessageWillDisplayEvent alloc] initWithInAppMessage:message]; |
324 | | - [self.inAppMessageDelegate onWillDisplayInAppMessage:event]; |
| 354 | + for (NSObject<OSInAppMessageLifecycleListener> *listener in _lifecycleListeners) { |
| 355 | + if ([listener respondsToSelector:@selector(onWillDisplayInAppMessage:)]) { |
| 356 | + OSInAppMessageWillDisplayEvent *event = [[OSInAppMessageWillDisplayEvent alloc] initWithInAppMessage:message]; |
| 357 | + [listener onWillDisplayInAppMessage:event]; |
| 358 | + } |
325 | 359 | } |
326 | 360 | } |
327 | 361 |
|
328 | 362 | - (void)onDidDisplayInAppMessage:(OSInAppMessageInternal *)message { |
329 | | - if (self.inAppMessageDelegate && |
330 | | - [self.inAppMessageDelegate respondsToSelector:@selector(onDidDisplayInAppMessage:)]) { |
331 | | - OSInAppMessageDidDisplayEvent *event = [[OSInAppMessageDidDisplayEvent alloc] initWithInAppMessage:message]; |
332 | | - [self.inAppMessageDelegate onDidDisplayInAppMessage:event]; |
| 363 | + for (NSObject<OSInAppMessageLifecycleListener> *listener in _lifecycleListeners) { |
| 364 | + if ([listener respondsToSelector:@selector(onDidDisplayInAppMessage:)]) { |
| 365 | + OSInAppMessageDidDisplayEvent *event = [[OSInAppMessageDidDisplayEvent alloc] initWithInAppMessage:message]; |
| 366 | + [listener onDidDisplayInAppMessage:event]; |
| 367 | + } |
333 | 368 | } |
334 | 369 | } |
335 | 370 |
|
336 | 371 | - (void)onWillDismissInAppMessage:(OSInAppMessageInternal *)message { |
337 | | - if (self.inAppMessageDelegate && |
338 | | - [self.inAppMessageDelegate respondsToSelector:@selector(onWillDismissInAppMessage:)]) { |
339 | | - OSInAppMessageWillDismissEvent *event = [[OSInAppMessageWillDismissEvent alloc] initWithInAppMessage:message]; |
340 | | - [self.inAppMessageDelegate onWillDismissInAppMessage:event]; |
| 372 | + for (NSObject<OSInAppMessageLifecycleListener> *listener in _lifecycleListeners) { |
| 373 | + if ([listener respondsToSelector:@selector(onWillDismissInAppMessage:)]) { |
| 374 | + OSInAppMessageWillDismissEvent *event = [[OSInAppMessageWillDismissEvent alloc] initWithInAppMessage:message]; |
| 375 | + [listener onWillDismissInAppMessage:event]; |
| 376 | + } |
341 | 377 | } |
342 | 378 | } |
343 | 379 |
|
344 | 380 | - (void)onDidDismissInAppMessage:(OSInAppMessageInternal *)message { |
345 | | - if (self.inAppMessageDelegate && |
346 | | - [self.inAppMessageDelegate respondsToSelector:@selector(onDidDismissInAppMessage:)]) { |
347 | | - OSInAppMessageDidDismissEvent *event = [[OSInAppMessageDidDismissEvent alloc] initWithInAppMessage:message]; |
348 | | - [self.inAppMessageDelegate onDidDismissInAppMessage:event]; |
| 381 | + for (NSObject<OSInAppMessageLifecycleListener> *listener in _lifecycleListeners) { |
| 382 | + if ([listener respondsToSelector:@selector(onDidDismissInAppMessage:)]) { |
| 383 | + OSInAppMessageDidDismissEvent *event = [[OSInAppMessageDidDismissEvent alloc] initWithInAppMessage:message]; |
| 384 | + [listener onDidDismissInAppMessage:event]; |
| 385 | + } |
349 | 386 | } |
350 | 387 | } |
351 | 388 |
|
@@ -565,10 +602,10 @@ - (void)setDataForRedisplay:(OSInAppMessageInternal *)message { |
565 | 602 | BOOL messageDismissed = [_seenInAppMessages containsObject:message.messageId]; |
566 | 603 | let redisplayMessageSavedData = [_redisplayedInAppMessages objectForKey:message.messageId]; |
567 | 604 |
|
568 | | - [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"Redisplay dismissed: %@ and data: %@", messageDismissed ? @"YES" : @"NO", redisplayMessageSavedData.jsonRepresentation.description]]; |
| 605 | + [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"Redisplay dismissed: %@ and data: %@", messageDismissed ? @"YES" : @"NO", redisplayMessageSavedData.jsonRepresentationInternal.description]]; |
569 | 606 |
|
570 | 607 | if (messageDismissed && redisplayMessageSavedData) { |
571 | | - [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"Redisplay IAM: %@", message.jsonRepresentation.description]]; |
| 608 | + [OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"Redisplay IAM: %@", message.jsonRepresentationInternal.description]]; |
572 | 609 |
|
573 | 610 | message.displayStats.displayQuantity = redisplayMessageSavedData.displayStats.displayQuantity; |
574 | 611 | message.displayStats.lastDisplayTime = redisplayMessageSavedData.displayStats.lastDisplayTime; |
|
0 commit comments