Daltron / NotificationBanner

The easiest way to display highly customizable in app notification banners in iOS
MIT License
4.75k stars 660 forks source link

closure #2 in BaseNotificationBanner.dismiss(forced:) NSInternalInconsistencyException - Must have a keyboard layer tracked. #415

Open fenglingdeyi opened 12 months ago

fenglingdeyi commented 12 months ago

Crash OS version: Only iOS17 NotificationBannerSwift Version: 3.2.0 and 3.1.0(Both versions have the same Crash on iOS17)

Crash Logs:

Fatal Exception: NSInternalInconsistencyException Must have a keyboard layer tracked.

Fatal Exception: NSInternalInconsistencyException 0 CoreFoundation 0xc7bc exceptionPreprocess 1 libobjc.A.dylib 0x18ea0 objc_exception_throw 2 Foundation 0x6aac24 _userInfoForFileAndLine 3 UIKitCore 0x8f9968 -[_UISceneKeyboardProxyLayerForwardingStateMachine _newProxyLayers] 4 UIKitCore 0x8f8b64 -[_UISceneKeyboardProxyLayerForwardingStateMachine window:changedFromLevel:toLevel:] 5 UIKitCore 0x333b6c -[UIWindow setWindowLevel:] 6 xxxxxx 0x16a7db8 closure #2 in BaseNotificationBanner.dismiss(forced:) + 610 (BaseNotificationBanner.swift:610) 7 xxxxxx 0x4707a0 thunk for @escaping @callee_guaranteed (@unowned Bool) -> () () 8 UIKitCore 0x120b088 __UIVIEW_IS_EXECUTING_ANIMATION_COMPLETION_BLOCK 9 UIKitCore 0xc6488 -[UIViewAnimationBlockDelegate _didEndBlockAnimation:finished:context:] 10 UIKitCore 0xc5448 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] 11 UIKitCore 0xc4b68 -[UIViewAnimationState animationDidStop:finished:] 12 QuartzCore 0x27c520 run_animation_callbacks(void*) 13 libdispatch.dylib 0x4300 _dispatch_client_callout 14 libdispatch.dylib 0x12998 _dispatch_main_queue_drain 15 libdispatch.dylib 0x125b0 _dispatch_main_queue_callback_4CF 16 CoreFoundation 0x997e0 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE 17 CoreFoundation 0x7ceb4 __CFRunLoopRun 18 CoreFoundation 0x816c0 CFRunLoopRunSpecific 19 GraphicsServices 0x1224 GSEventRunModal 20 UIKitCore 0x38ed2c -[UIApplication _run] 21 UIKitCore 0x38e990 UIApplicationMain 22 xxxxxx 0x6d2c main + 14 (main.swift:14) 23 ??? 0x1b9f644f8 (Missing)

BaseNotificationBanner.swift
line: 610

self.bannerQueue.showNext(callback: { (isEmpty) in if isEmpty || self.statusBarShouldBeShown() { self.appWindow?.windowLevel = UIWindow.Level.normal } })

@Daltron hello, Looking at the stack information, it seems that on iOS17, when setting the windowLevel of Window, there is a problem. Does it need to be adapted on iOS17?