DeskConnect / SBShortcutMenuSimulator

3D Touch shortcuts in the Simulator
MIT License
1.75k stars 164 forks source link

SpringBoard Quit expectedly - Simulator Version 9.2 (SimulatorApp-643 #12

Open sushihangover opened 8 years ago

sushihangover commented 8 years ago

Using the 9.2 Sim and matching Xcode 7.2 Build version 7C68

Springboard crashes when 'echo com.apple.mobilecal' | nc 127.0.0.1 8000 is performed.

gereons commented 8 years ago

same here

gabrielmaldi commented 8 years ago

I can confirm this issue.

The output of xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib is Service configured for next launch..

Then when I execute xcrun simctl spawn booted launchctl stop com.apple.SpringBoard the simulator restarts.

And finally with echo 'com.apple.mobilecal' | nc 127.0.0.1 8000 it crashes.

Here is the crash report, in case it helps.

Thanks!

cjimenezpacho commented 8 years ago

same here

Subu1449 commented 8 years ago

Confirmed for me as well. Running version Xcode 7.2.

Application Specific Information: *\ Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SBIconController _revealMenuForIconView:presentImmediately:]: unrecognized selector sent to instance 0x7fc8e3099800' terminating with uncaught exception of type NSException abort() called CoreSimulator 201.3 - Device: iPhone 6s - Runtime: iOS 9.2 (13C75) - DeviceType: iPhone 6s

ashen-zhao commented 8 years ago

same here

codyrotwein commented 8 years ago

Same.

tizaks commented 8 years ago

The problem appears to be that the method that is called to present the Quick Actions menu has changed from - (void)_revealMenuForIconView:(id)arg1 presentImmediately:(_Bool)arg2; to -(void)_revealMenuForIconView:(id)iconView;. After changing the code in SBShortcutMenuListener.m I've still been unable to get the menu to appear - it highlights the app icon but doesn't present the menu.

aouaki commented 8 years ago

Workaround: You can install the iOS 9.1 Simulator through Xcode (Preferences -> Downloads). Then using this simulator with Xcode 7.2 installed, it all works fine. Of course the issue still needs to be fixed...

janagrill commented 8 years ago

Any progress here? My app is already set to run on iOS 9.2 so, the above workaround does not work for me and I would really appreciate an update.

ban9ban3 commented 8 years ago

The same issue for me. I using Xcode 7.2 and run iOS 9.1 Simulator

lepetitroro commented 8 years ago

The SBIconControler header if it helps ...

@interface SBIconController : XXUnknownSuperclass <SBApplicationShortcutMenuDelegate, BBObserverDelegate, MCProfileConnectionObserver, SBApplicationRestrictionObserver, SBFolderControllerDelegate, SBSearchGestureObserver, SBIconViewDelegate, SBIconModelDelegate, SBIconViewMapDelegate, SBIconModelApplicationDataSource, SBReachabilityObserver> { NSSet* _visibleTags; NSSet* _hiddenTags; SBIconModel* _iconModel; BOOL _needsRelayout; BOOL _sendITunesNotification; BBObserver* _bbObserver; NSMutableSet* _displayIDsWithBadgingEnabled; SBRootFolderController* _rootFolderController; SBFolder* _closingFolder; SBFolder* _folderToOpenWhenScrollingEnds; BOOL _rotating; SBIcon* _launchingIcon; SBIcon* _highlightedIcon; SBLeafIcon* _iconToReveal; SBIcon* _grabbedIcon; SBIcon* _recipientIcon; NSMutableArray* _droppedIconsAnimatingIntoPlace; NSMutableArray* _droppedIconsInToOrOutOfFolder; unsigned _numberOfDroppedIconsAnimatingIntoOrOutOfFolder; SBIcon* _lastTouchedIcon; BOOL _isEditing; BOOL _animatingFolder; BOOL _grabbedIconIsDraggedOutOfFolderView; SBFolder* _grabbedIconSourceFolder; BOOL _allowsUninstall; float _iconAlpha; float _oldScrollOffset; UITouch* _lastTouch; NSTimer* _folderSpringloadTimer; BOOL _keyboardIsRotating; BOOL _isAnimatingFolderCreation; BOOL _isAnimatingForUnscatter; BOOL _isAnimatingSignficantly; unsigned _maxIconViewsInHierarchy; SBIconColorSettings* _iconColorSettings; BOOL _reachabilityModeActive; SBApplicationShortcutMenu* _presentedShortcutMenu; BOOL _skipCancelTouchesAfterShortcutMenuDismiss; BOOL _showingSearch; _UILegibilitySettings* _legibilitySettings; NSIndexPath* _indexPathToResetTo; BOOL _performedInitialLayout; } @property(readonly, copy) NSString* debugDescription; @property(readonly, copy) NSString* description; @property(readonly, assign) Class superclass; @property(readonly, assign) unsigned hash; @property(retain, nonatomic) SBApplicationShortcutMenu* presentedShortcutMenu; @property(retain, nonatomic) _UILegibilitySettings* legibilitySettings; +(id)sharedInstance; -(void)applicationShortcutMenu:(id)menu launchApplicationWithIconView:(id)iconView; -(void)applicationShortcutMenu:(id)menu startEditingForIconView:(id)iconView; -(void)applicationShortcutMenuDidDismiss:(id)applicationShortcutMenu; -(void)applicationShortcutMenuDidPresent:(id)applicationShortcutMenu; -(void)applicationShortcutMenu:(id)menu activateShortcutItem:(id)item index:(int)index; -(id)_aggregateLoggingAppKeyForShortcutMenu:(id)shortcutMenu; -(void)_cleanupForDismissingShortcutMenu:(id)dismissingShortcutMenu; -(void)_dismissShortcutMenuAnimated:(BOOL)animated completionHandler:(id)handler; -(void)dismissShortcutMenuWithCompletionHandler:(id)completionHandler; -(void)_revealMenuForIconView:(id)iconView; -(void)_handleShortcutMenuPeek:(id)peek; -(BOOL)_canRevealShortcutMenu; -(void)handleReachabilityModeDeactivated; -(void)handleReachabilityModeActivated; -(BOOL)_shouldCancelFailedReachability; -(BOOL)_shouldRespondToReachability; -(void)_performReachabilityTransactionForActivate:(BOOL)activate immediately:(BOOL)immediately; -(void)searchGesture:(id)gesture changedPercentComplete:(float)complete; -(void)folderControllerDidReceiveCancelReachabilityAction:(id)folderController; -(void)folderControllerDidEndScrolling:(id)folderController; -(void)folderControllerShouldBeginEditing:(id)folderController; -(void)folderControllerShouldClose:(id)folderController; -(void)folderController:(id)controller draggedIconShouldDropFromListView:(id)draggedIcon; -(BOOL)folderController:(id)controller draggedIconMightDropFromListView:(id)listView; -(BOOL)folderController:(id)controller draggedIconDidMoveFromListView:(id)draggedIcon toListView:(id)listView; -(BOOL)folderController:(id)controller draggedIconDidPauseAtLocation:(CGPoint)draggedIcon inListView:(id)listView; -(Class)controllerClassForFolder:(id)folder; -(Class)_controllerClassForFolderClass:(Class)folderClass; -(id)_debugStringForIconOrder:(int)iconOrder; -(void)applicationRestrictionController:(id)controller didUpdateVisibleTags:(id)tags hiddenTags:(id)tags3; -(void)profileConnectionDidReceiveEffectiveSettingsChangedNotification:(id)profileConnection userInfo:(id)info; -(id)firstPageLeafIdentifiers; -(id)defaultIconState; -(id)allApplications; -(void)observer:(id)observer noteServerConnectionStateChanged:(BOOL)changed; -(void)observer:(id)observer updateSectionInfo:(id)info; -(void)_updateEnabledBadgesSetWithSections:(id)sections; -(BOOL)_badgesAreEnabledForSectionInfo:(id)sectionInfo; -(BOOL)iconViewDisplaysCloseBox:(id)box; -(BOOL)iconViewDisplaysBadges:(id)badges; -(BOOL)iconAllowsBadging:(id)badging; -(void)iconCloseBoxTapped:(id)tapped; -(BOOL)icon:(id)icon canReceiveGrabbedIcon:(id)icon2; -(void)iconTapped:(id)tapped; -(BOOL)iconShouldAllowTap:(id)icon; -(void)icon:(id)icon touchMoved:(id)moved; -(void)iconTouchBegan:(id)began; -(void)icon:(id)icon touchEnded:(BOOL)ended; -(void)iconHandleLongPress:(id)press; -(void)viewMap:(id)map configureIconView:(id)view; -(int)viewMap:(id)map locationForIcon:(id)icon; -(unsigned)viewMap:(id)map numberOfViewsToPrepareOfClass:(Class)aClass; -(id)viewMapShouldPrepareViewsOfClasses:(id)viewMap; -(Class)iconViewClassForIcon:(id)icon location:(int)location; -(id)windowForRecycledViewsInViewMap:(id)viewMap; -(unsigned)viewMap:(id)map maxRecycledViewsOfClass:(Class)aClass; -(void)didDeleteIconState:(id)state; -(void)didSaveIconState:(id)state; -(BOOL)canSaveIconState:(id)state; -(BOOL)canAddDownloadingIconForApplication:(id)application; -(BOOL)canAddWebClip:(id)clip; -(BOOL)supportsDock; -(unsigned)maxColCountForListInRootFolderWithInterfaceOrientation:(int)interfaceOrientation; -(unsigned)maxRowCountForListInRootFolderWithInterfaceOrientation:(int)interfaceOrientation; -(unsigned)maxIconCountForDock; -(unsigned)maxIconCountForListInFolderClass:(Class)folderClass; -(unsigned)maxListCountForFolders; -(void)noteIconStateChangedExternally; -(BOOL)importIconState:(id)state; -(void)_selectIconModel:(BOOL)model; -(void)_installedAppsDidChange:(id)_installedApps; -(void)_iconModelDidLayout:(id)_iconModel; -(void)_iconModelWillLayout:(id)_iconModel; -(void)_iconModelDidReloadIcons:(id)_iconModel; -(void)_iconModelWillReloadIcons:(id)_iconModel; -(BOOL)relayout; -(BOOL)_dismissRightEdgeSpotlight:(BOOL)spotlight; -(BOOL)_presentRightEdgeSpotlight:(BOOL)spotlight; -(void)_activateShortcutItem:(id)item fromApplication:(id)application; -(BOOL)_dismissTopEdgeSpotlight:(BOOL)spotlight; -(BOOL)_presentTopEdgeSpotlight:(BOOL)spotlight; -(void)_searchViewControllerIsPresented:(BOOL)presented fromBreadcrumb:(BOOL)breadcrumb; -(BOOL)dismissSpotlightIfNecessary; -(BOOL)dismissSpotlightAnimated:(BOOL)animated; -(BOOL)presentSpotlightFromEdge:(unsigned)edge fromBreadcrumb:(BOOL)breadcrumb animated:(BOOL)animated; -(void)_lockScreenUIWillLock:(id)_lockScreenUI; -(void)_noteUserIsInteractingWithIcons; -(BOOL)isIconVisiblyRepresented:(id)represented; -(BOOL)_iconListIndexIsValid:(int)valid; -(void)layoutIconLists:(float)lists domino:(BOOL)domino forceRelayout:(BOOL)relayout; -(void)compactIconsInIconListsInFolder:(id)folder moveNow:(BOOL)now limitToIconList:(id)iconList; -(void)compactRootIconLists; -(void)compactFolders:(id)folders; -(void)animationDidStop:(id)animation finished:(BOOL)finished; -(void)folderSpringloadTimerFired; -(void)noteGrabbedIconLocationChangedWithTouch:(id)touch; -(void)_resetFolderSpringloadTimer; -(void)_cancelFolderSpringloadTimer; -(id)recipientIcon; -(void)setLastTouchedIcon:(id)icon; -(id)lastTouchedIcon; -(void)setRecipientIcon:(id)icon duration:(double)duration; -(id)grabbedIcon; -(void)_iconDropDidFinish:(id)_iconDrop; -(void)setGrabbedIcon:(id)icon; -(void)_dropIcon:(id)icon withInsertionPath:(id)insertionPath; -(void)fixupBouncedIconsInFolder:(id)folder startingWithIndex:(int)index; -(void)setLastTouch:(id)touch; -(void)noteViewCovered; -(void)restoreScrollingAndRotationAfterUngrab; -(void)moveIconFromWindow:(id)window toIconList:(id)iconList; -(void)_moveIconToContentView:(id)contentView; -(void)_keyboardWillHide:(id)_keyboard; -(void)_keyboardWillShow:(id)_keyboard; -(BOOL)isEditing; -(void)setIsEditing:(BOOL)editing; -(void)iconWasTapped:(id)tapped; -(void)clearHighlightedIcon; -(void)launchIcon:(id)icon; -(void)removeAllIconAnimations; -(BOOL)isAnimatingForUnscatter; -(void)unscatterAnimated:(BOOL)animated afterDelay:(double)delay withCompletion:(id)completion; -(void)scatterAnimated:(BOOL)animated withCompletion:(id)completion; -(void)setIdleModeText:(id)text; -(void)updateNumberOfRowsWithDuration:(double)duration; -(void)uninstallIcon:(id)icon animate:(BOOL)animate; -(void)uninstallIcon:(id)icon; -(BOOL)canUninstallIcon:(id)icon; -(BOOL)allowsUninstall; -(void)uninstallIconAnimationCompletedForIcon:(id)icon; -(void)removeIcon:(id)icon compactFolder:(BOOL)folder; -(void)removeIcon:(id)icon andCompactFolder:(BOOL)folder folderRef:(id)ref; -(id)insertIcon:(id)icon intoListView:(id)view iconIndex:(int)index moveNow:(BOOL)now; -(id)insertIcon:(id)icon intoListView:(id)view iconIndex:(int)index moveNow:(BOOL)now pop:(BOOL)pop; -(id)insertIcon:(id)icon atIndexPath:(id)indexPath moveNow:(BOOL)now; -(id)insertIcon:(id)icon atIndexPath:(id)indexPath moveNow:(BOOL)now pop:(BOOL)pop; -(id)placeIcon:(id)icon atIndexPath:(id)indexPath moveNow:(BOOL)now layoutNow:(BOOL)now4 pop:(BOOL)pop; -(void)scrollToIconToRevealAnimated:(BOOL)revealAnimated; -(void)finishInstallingIconAnimated:(BOOL)animated; -(void)setIconToReveal:(id)reveal revealingPrevious:(BOOL)previous; -(id)iconToReveal; -(void)replaceIconAtPath:(id)path withIcon:(id)icon saveState:(BOOL)state; -(void)addNewIconToDesignatedLocation:(id)designatedLocation animate:(BOOL)animate scrollToList:(BOOL)list saveIconState:(BOOL)state; -(void)addNewIconsToDesignatedLocations:(id)designatedLocations saveIconState:(BOOL)state; -(void)viewWillTransitionToSize:(CGSize)view withTransitionCoordinator:(id)transitionCoordinator; -(void)_didRotateFromInterfaceOrientation:(int)interfaceOrientation; -(void)_willAnimateRotationToInterfaceOrientation:(int)interfaceOrientation duration:(double)duration; -(void)_willRotateToInterfaceOrientation:(int)interfaceOrientation duration:(double)duration; -(void)handleHomeButtonTap; -(BOOL)scrollToIconListAtIndex:(int)index animate:(BOOL)animate; -(void)scrollToIconListContainingIcon:(id)iconListContainingIcon animate:(BOOL)animate; -(BOOL)_shouldLockItemsInStoreDemoMode; -(BOOL)_iconCanBeGrabbed:(id)grabbed; -(id)dropDestinationIconList; -(int)dropDestinationIconListIndex; -(id)currentFolderIconList; -(id)dockListView; -(id)currentRootIconList; -(void)resetCurrentVisibleIconListImageVisibilityAndJitterState; -(void)updateCurrentIconListIndexAndVisibility:(BOOL)visibility; -(void)updateCurrentIconListIndexAndVisibility; -(BOOL)isFolderScrolling; -(BOOL)isScrolling; -(void)showCarrierDebuggingAlertIfNeeded; -(void)showInfoAlertIfNeeded:(BOOL)needed; -(void)showDeveloperBuildExpirationAlertIfNecessaryFromLockscreen:(BOOL)lockscreen toLauncher:(BOOL)launcher; -(void)_iconVisibilityChanged:(id)changed; -(void)_resetRootIconLists; -(id)folderNameForDisplayID:(id)displayID; -(void)_prepareToResetRootIconLists; -(id)folderIconListAtIndex:(unsigned)index; -(id)rootIconListAtIndex:(int)index; -(int)currentFolderIconListIndex; -(int)currentIconListIndex; -(id)_currentFolderController; -(id)_openFolderController; -(id)_rootFolderController; -(id)rootFolder; -(int)orientation; -(int)_effectiveOrientation; -(BOOL)shouldAutorotate; -(unsigned)supportedInterfaceOrientations; -(void)viewWillLayoutSubviews; -(id)contentView; -(void)loadView; -(void)dealloc; -(id)model; -(id)init; -(void)_runScrollFolderTest:(int)test; -(void)_runFolderCloseTest; -(void)_runFolderOpenTest; -(unsigned)_folderRowsForFolder:(id)folder; -(unsigned)_folderRowsForFolder:(id)folder inOrientation:(int)orientation; -(CGRect)_contentViewRelativeFrameForIcon:(id)icon; -(void)shiftFolderViewsForKeyboardAppearing:(BOOL)keyboardAppearing keyboardHeight:(float)height; -(BOOL)allowsNestedFolders; -(id)_proposedFolderNameForGrabbedIcon:(id)grabbedIcon recipientIcon:(id)icon; -(void)_snapshotFadeDidStop:(id)_snapshotFade finished:(id)finished snapshot:(id)snapshot; -(void)_addToFolderAnimation:(id)folderAnimation didFinish:(id)finish context:(id)context; -(void)_compactRootListsAfterFolderCloseWithAnimation:(BOOL)animation; -(void)_cleanupForClosingFolderAnimated:(BOOL)closingFolderAnimated; -(void)_folderDidFinishOpenClose:(BOOL)_folder animated:(BOOL)animated; -(void)_animateFolder:(id)folder open:(BOOL)open animated:(BOOL)animated withCompletion:(id)completion; -(void)_folderControllerDidReceiveCancelReachabilityAction:(id)_folderController; -(void)_disableReachabilityImmediately:(BOOL)immediately; -(void)_presentNotificationCenterForReachability; -(void)replaceFolderIcon:(id)icon byContainedIcon:(id)icon2 animated:(BOOL)animated; -(void)addIcons:(id)icons intoFolderIcon:(id)icon animated:(BOOL)animated openFolderOnFinish:(BOOL)finish complete:(id)complete; -(BOOL)isDroppingIcon:(id)icon; -(BOOL)isDroppingIconsInOrOutOfFolder; -(void)_moveDroppedIconsToLocation:(int)location; -(void)_dropIconOutOfClosingFolder:(id)closingFolder withInsertionPath:(id)insertionPath; -(void)_dropIconIntoOpenFolder:(id)folder withInsertionPath:(id)insertionPath; -(id)createNewFolderFromRecipientIcon:(id)recipientIcon grabbedIcon:(id)icon; -(void)_closeFolderController:(id)controller animated:(BOOL)animated withCompletion:(id)completion; -(void)closeFolderAnimated:(BOOL)animated; -(void)closeFolderAnimated:(BOOL)animated withCompletion:(id)completion; -(void)openFolder:(id)folder animated:(BOOL)animated; -(id)openFolder; -(BOOL)hasOpenFolder; -(BOOL)hasAnimatingFolder; -(void)_setAnimatingFolderCreation:(BOOL)creation; -(void)_setFolderToOpenAfterScrolling:(id)openAfterScrolling; -(void)_setHasAnimatingFolder:(BOOL)folder; -(void)noteFolderAnimationStateDidChange; -(id)iconListViewAtIndex:(unsigned)index inFolder:(id)folder createIfNecessary:(BOOL)necessary; -(void)getListView:(id)view folder:(id)folder relativePath:(id)path forIndexPath:(id)indexPath createIfNecessary:(BOOL)necessary; @end

xiongyuanwen commented 8 years ago

Hi,遇到同样的问题,在9.2模拟器上运行crash。

shrutic commented 8 years ago

I hit the exact same issue as described above..

MicroLearner commented 8 years ago

same problem

ali-saeed commented 8 years ago

It works if you download iOS 9.1 for the Simulator (Hardware->Devices->Manage Device) then click the + at the bottom left to Add Simulator. Then change iOS to iOS 9.1 (might have to Download it)

nitxc commented 8 years ago

thank you ! I willl download iOS 9.1 for the Simulator.

Monkeyzc commented 8 years ago

Hi, when run command line xcrun simctl spawn booted launchctl debug system/com.apple.SpringBoard --environment DYLD_INSERT_LIBRARIES=$PWD/SBShortcutMenuSimulator.dylib Service configured for next launch. , then the simulator restart, and when I run echo 'com.apple.mobilecal' | nc 127.0.0.1 8000, then the SpringBoard crash, can you tell me how to fix it?

NeilChan commented 8 years ago

Same here.

renaun commented 8 years ago

Get PoomSmart's PR into the project or your own copy to make it work across OSes

gabrielmaldi commented 8 years ago

Get PoomSmart's PR into the project or your own copy to make it work across OSes

That's #18.