@@ -361,7 +361,7 @@ - (void)setDataForRedisplay:(OSInAppMessage *)message {
361361 message.displayStats .lastDisplayTime = redisplayMessageSavedData.displayStats .lastDisplayTime ;
362362
363363 // Message that don't have triggers should display only once per session
364- BOOL triggerHasChanged = message. isTriggerChanged || (!redisplayMessageSavedData. isDisplayedInSession && [message.triggers count ] == 0 ) ;
364+ BOOL triggerHasChanged = [ self hasMessageTriggerChanged: message] ;
365365
366366 [OneSignal onesignal_Log: ONE_S_LL_VERBOSE message: [NSString stringWithFormat: @" setDataForRedisplay with message: %@ \n triggerHasChanged: %@ \n no triggers: %@ \n displayed in session saved: %@ " , message, message.isTriggerChanged ? @" YES" : @" NO" , [message.triggers count ] == 0 ? @" YES" : @" NO" , redisplayMessageSavedData.isDisplayedInSession ? @" YES" : @" NO" ]];
367367 // Check if conditions are correct for redisplay
@@ -378,6 +378,18 @@ - (void)setDataForRedisplay:(OSInAppMessage *)message {
378378 }
379379}
380380
381+ - (BOOL )hasMessageTriggerChanged : (OSInAppMessage *)message {
382+ // Message that only have dynamic trigger should display only once per session
383+ BOOL messageHasOnlyDynamicTrigger = [self .triggerController messageHasOnlyDynamicTriggers: message];
384+ if (messageHasOnlyDynamicTrigger)
385+ return !message.isDisplayedInSession ;
386+
387+ // Message that don't have triggers should display only once per session
388+ BOOL shouldMessageDisplayInSession = !message.isDisplayedInSession && [message.triggers count ] == 0 ;
389+
390+ return message.isTriggerChanged || shouldMessageDisplayInSession;
391+ }
392+
381393/*
382394 Method to check whether or not to show an IAM
383395 Checks if the IAM matches any triggers or if it exists in cached seenInAppMessages set
@@ -498,7 +510,6 @@ - (void)persistInAppMessageForRedisplay:(OSInAppMessage *)message {
498510 return ;
499511 }
500512
501-
502513 let displayTimeSeconds = self.dateGenerator ();
503514 message.displayStats .lastDisplayTime = displayTimeSeconds;
504515 [message.displayStats incrementDisplayQuantity ];
0 commit comments