Dev:Disabling NC, CC and Home gestures

In iOS 9-11, we have the class 'SBSystemGestureManager' which helps a great deal. It has a method '_isGestureWithTypeAllowed' which is called early in the gestures and can be used to see which ones are being invoked.

%hook SBSystemGestureManager -(BOOL)_isGestureWithTypeAllowed:(unsigned long long)arg1 { NSLog(@"_isGestureWithTypeAllowed [%u]", arg1); // iOS 11 - Normal device (11.0.3) // ===============================================================       // 1 = Notification center // 2 = Control center OR Home gesture? //    This method is called twice, first with '2' then with '6'. I        //     am currently assuming that this '2' is related to home gesture //    and the '6' is the proper control center. Only using '2' did //    not prevent the CC showing up, which is why I use '6' instead. // 6 = Control center 2 - This method is called twice, second with '2' // iOS 11 - iPhone X (testing with 'fake iPhoneX' tweak 'LittleX') //         only on an iPhone SE (11.0.3) // ===============================================================       // 1 = A) Notification center (swipe down on left side of 'notch')        //     B) Control center (swipe down on right side of 'notch') // 2 = From bottom, after '20' // 6 = Control center - This method is called after '1' when swiping //    on the right side of the notch. // 20 = Home gesture AND Horizontal left/right swipe on the new //     grabber to switch between apps easily //       // Note: With LittleX neither '1 B' nor '6' works, however since //      the CC still comes up from the bottom, since it's not a        //       real iPhoneX, I think this might be a bug so I will ignore //      it for now and hope it works on real X devices. // iOS 10 (Tested on 10.2 only) // ===============================================================       // 1 = Notification center // 3 = Control center // iOS 9 - iPhone (9.0.2) // ===============================================================       // 1 = Notification center // 3 = Control center // iOS 9 - iPad (9.3.3) // ===============================================================       // 1 = Notification center // 3 = Control center // 6 = Related to the 4/5 finger swipe to change apps I think. // 7 = Pre-Notification center + Pre-Control center + 4 finger touch? //    7 is both called before the NC and the CC. In the case of the CC, the //    order this method is called in is 7-7-3. Still not sure what the '7' is. //    This is also appearing a lot when we do 4 finger touch to fast-switch apps. //    A possibility is that this is just "any touch". Since it appears multiple //    times when doing the 4/5 finger swipe (see '6'). But who knows. // 8 = Pre-Notification center //    When swiping from the top area in iOS 9 (maybe others) this method is        //     called 3 times before finally calling the '1' (NC). In this order: //    7-7-8-1. I am not sure what they are, but to prevent the NC from //    appearing we can simply just look for the '1' which is more or less //    confirmed to be the NC. // iOS 8 and below // ===============================================================       // This class does not exist in iOS 8 and below. // TODO: Make sure iOS 6, 7 and 8 also can prevent CC/NC if( arg1 == 1 || arg1 == 6 || arg1 == 3 || arg1 == 20 ){ return NO; }       return %orig; }   %end

Here are some enums that the numbers actually mean.

SBSystemGestureTypeNone = 0, SBSystemGestureTypeShowNotificationCenter, SBSystemGestureTypeDismissBanner, SBSystemGestureTypeShowControlCenter, SBSystemGestureTypeSuspendApp, SBSystemGestureTypeSwitcherSlideUp, SBSystemGestureTypeSwitchApp, SBSystemGestureTypeSceneResize, SBSystemGestureTypeSideAppReveal, SBSystemGestureTypeSideAppGrabberReveal, SBSystemGestureTypeSideAppOverlayDismiss, SBSystemGestureTypeSideSwitcherReveal, SBSystemGestureTypeSideSwitcherGrabberPress, SBSystemGestureTypeSwitcherForcePress, SBSystemGestureTypeDimissCarPlayBanner

Quote regarding iOS 7/8

"and for ios 7/8 this stuff lived in SBUIController https://github.com/thomasfinch/iOS-7-SpringBoard-Headers/blob/master/SBUIController.h#L166 (edited)"

Again for iOS 7/8 you could use the below one as well. If you don't use the one from the github link.

Someone should confirm this, but it is what I use in 'Snapper 2' and it didn't show the CC NC so..

%hook SBUIController // I guess this one prevents the CC and NC from appearing in iOS 8? (and 7?) // But for above, we need to do the (see below) -(BOOL)shouldSendTouchesToSystemGestures{ return NO; }   %end

Alternative ways to prevent the Home gesture in iOS 11 on iPhone X are

//   // Disables the 'Home Gesture' on iPhone X (starting at iOS 11) // NOTE: If we have issues with the horizontal iPhoneX app switching gesture // maybe look into "_handleDeckSwitcherPanGesture:" in "SBFluidSwitcherGestureManager" // which the SBGrabber shouldBeginTouch (?) needs to be off from. //   %hook SBHomeGestureSettings -(BOOL)isHomeGestureEnabled{ return NO; }   %end

And %hook SBFluidSwitcherGestureManager - (BOOL)_shouldBeginBottomEdgePanGesture:(id)arg1 { return NO; }   %end