diff --git a/iOS_SDK/OneSignalSDK/Source/OSInAppMessage.h b/iOS_SDK/OneSignalSDK/Source/OSInAppMessage.h index 00f91f54d..e5bc443c6 100644 --- a/iOS_SDK/OneSignalSDK/Source/OSInAppMessage.h +++ b/iOS_SDK/OneSignalSDK/Source/OSInAppMessage.h @@ -46,6 +46,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) BOOL isPreview; @property (nonatomic) BOOL isDisplayedInSession; @property (nonatomic) BOOL isTriggerChanged; +@property (nonatomic) BOOL dragToDismissDisabled; @property (nonatomic) NSNumber *height; - (BOOL)isBanner; diff --git a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.h b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.h index 1f03be08f..b05e4008a 100644 --- a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.h +++ b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.h @@ -41,6 +41,7 @@ typedef NS_ENUM(NSUInteger, OSInAppMessageBridgeEventType) { @interface OSInAppMessageBridgeEventRenderingComplete : NSObject @property (nonatomic) OSInAppMessageDisplayPosition displayLocation; @property (nonatomic) NSNumber *height; +@property (nonatomic) BOOL dragToDismissDisabled; @end @interface OSInAppMessageBridgeEventResize : NSObject diff --git a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.m b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.m index 64d178862..64863d85b 100644 --- a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.m +++ b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageBridgeEvent.m @@ -97,6 +97,10 @@ + (instancetype)instanceWithJson:(NSDictionary *)json { if (json[@"pageMetaData"][@"rect"][@"height"]) instance.height = json[@"pageMetaData"][@"rect"][@"height"]; + if (json[@"dragToDismissDisabled"]) { + instance.dragToDismissDisabled = [json[@"dragToDismissDisabled"] boolValue]; + } + return instance; } diff --git a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m index 269f7bb49..166a29ae8 100644 --- a/iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m +++ b/iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m @@ -487,15 +487,16 @@ - (void)beginPanAtLocation:(CGPoint)location { Adds the pan recognizer (for swiping up and down) and the tap recognizer (for dismissing) */ - (void)setupGestureRecognizers { - // Pan gesture recognizer for swiping - let recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognizerDidMove:)]; - [self.messageView addGestureRecognizer:recognizer]; - - recognizer.maximumNumberOfTouches = 1; - recognizer.minimumNumberOfTouches = 1; - - self.panGestureRecognizer = recognizer; + if (!self.message.dragToDismissDisabled) { + // Pan gesture recognizer for swiping + let recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognizerDidMove:)]; + [self.messageView addGestureRecognizer:recognizer]; + recognizer.maximumNumberOfTouches = 1; + recognizer.minimumNumberOfTouches = 1; + + self.panGestureRecognizer = recognizer; + } // Only center modal and full screen should dismiss on background click // Banners will allow interacting with the view behind it still @@ -632,6 +633,7 @@ - (void)jsEventOccurredWithBody:(NSData *)body { self.message.position = event.renderingComplete.displayLocation; self.message.height = event.renderingComplete.height; + self.message.dragToDismissDisabled = event.renderingComplete.dragToDismissDisabled; // The page is fully loaded and should now be displayed // This is only fired once the javascript on the page sends the "rendering_complete" type event