@@ -187,6 +187,19 @@ - (void)resetRedisplayMessagesBySession {
187187 }
188188}
189189
190+ - (void )deleteInactiveMessage : (OSInAppMessage *)message {
191+ let deleteMessage = [NSString stringWithFormat: @" Deleting inactive in-app message from cache: %@ " , message.messageId];
192+ [OneSignal onesignal_Log: ONE_S_LL_ERROR message: deleteMessage];
193+ NSMutableArray *newMessagesArray = [NSMutableArray arrayWithArray: self .messages];
194+ [newMessagesArray removeObject: message];
195+ self.messages = newMessagesArray;
196+ if (self.messages ) {
197+ [OneSignalUserDefaults.initStandard saveCodeableDataForKey: OS_IAM_MESSAGES_ARRAY withValue: self .messages];
198+ } else {
199+ [OneSignalUserDefaults.initStandard removeValueForKey: OS_IAM_MESSAGES_ARRAY];
200+ }
201+ }
202+
190203/*
191204 Part of redisplay logic
192205 Remove IAMs that the last display time was six month ago
@@ -275,21 +288,28 @@ - (void)displayMessage:(OSInAppMessage *)message {
275288 }
276289
277290 self.isInAppMessageShowing = true ;
278- [self showAndImpressMessage : message];
291+ [self showMessage : message];
279292}
280293
281- - (void )showAndImpressMessage : (OSInAppMessage *)message {
294+ - (void )showMessage : (OSInAppMessage *)message {
282295 self.viewController = [[OSInAppMessageViewController alloc ] initWithMessage: message delegate: self ];
283296 if (message.hasLiquid && !self.calledLoadTags ) {
284297 self.viewController .waitForTags = YES ;
285298 [self loadTags ];
286299 }
287300 dispatch_async (dispatch_get_main_queue (), ^{
288- [[self .viewController view ] setNeedsLayout ];
289- [self messageViewImpressionRequest: message];
301+ [[self .viewController view ] setNeedsLayout ];
290302 });
291303}
292304
305+ - (void )sendMessageImpression : (OSInAppMessage *)message {
306+ if ([self shouldSendImpression: message]) {
307+ dispatch_async (dispatch_get_main_queue (), ^{
308+ [self messageViewImpressionRequest: message];
309+ });
310+ }
311+ }
312+
293313- (void )loadTags {
294314 self.calledLoadTags = YES ;
295315 [OneSignal getTags: ^(NSDictionary *result) {
@@ -677,6 +697,10 @@ - (void)messageViewDidDisplayPage:(OSInAppMessage *)message withPageId:(NSString
677697 });
678698}
679699
700+ - (void )messageIsNotActive : (OSInAppMessage *)message {
701+ [self deleteInactiveMessage: message];
702+ }
703+
680704/*
681705* Show the developer what will happen with a non IAM preview
682706 */
@@ -754,12 +778,16 @@ - (void)sendOutcomes:(NSArray<OSInAppMessageOutcome *>*)outcomes forMessageId:(N
754778/*
755779 This method must be called on the Main thread
756780 */
757- - (void )webViewContentFinishedLoading {
781+ - (void )webViewContentFinishedLoading : (OSInAppMessage *) message {
758782 if (!self.viewController ) {
759783 [self evaluateMessages ];
760784 return ;
761785 }
762786
787+ if (message) {
788+ [self sendMessageImpression: message];
789+ }
790+
763791 if (!self.window ) {
764792 self.window = [[UIWindow alloc ] init ];
765793 self.window .windowLevel = UIWindowLevelAlert;
@@ -845,7 +873,7 @@ - (id)getTriggerValueForKey:(NSString *)key { return 0; }
845873#pragma mark OSInAppMessageViewControllerDelegate Methods
846874- (void )messageViewControllerWasDismissed {}
847875- (void )messageViewDidSelectAction : (OSInAppMessage *)message withAction : (OSInAppMessageAction *)action {}
848- - (void )webViewContentFinishedLoading {}
876+ - (void )webViewContentFinishedLoading : (OSInAppMessage *) message {}
849877#pragma mark OSTriggerControllerDelegate Methods
850878- (void )triggerConditionChanged {}
851879- (void )dynamicTriggerCompleted : (NSString *)triggerId {}
0 commit comments