diff options
author | NicoleYarroch <nicole@livio.io> | 2019-12-11 15:31:51 -0500 |
---|---|---|
committer | NicoleYarroch <nicole@livio.io> | 2019-12-11 15:31:51 -0500 |
commit | 7a7636dcc6984e2934e987e6383e229cfef86dfb (patch) | |
tree | e84ddaaefa9721a0e4b10e7f23cbb43df336f59a | |
parent | c2ab70d0087dc604c88c8b338a1665860e067125 (diff) | |
download | sdl_ios-bugfix/issue_1501_wrong_appwindow_shown_on_lockscreen_dismissal.tar.gz |
Fixed black lockscreen animationbugfix/issue_1501_wrong_appwindow_shown_on_lockscreen_dismissal
Fixed black screen when lock screen is presented in background
-rw-r--r-- | SmartDeviceLink/SDLLockScreenManager.m | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/SmartDeviceLink/SDLLockScreenManager.m b/SmartDeviceLink/SDLLockScreenManager.m index 8faa127c1..e4ef8cd22 100644 --- a/SmartDeviceLink/SDLLockScreenManager.m +++ b/SmartDeviceLink/SDLLockScreenManager.m @@ -156,26 +156,38 @@ NS_ASSUME_NONNULL_BEGIN return; } - // Present the VC depending on the lock screen status - if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeAlways) { - if (!self.presenter.presented && self.canPresent) { - [self.presenter present]; - } - } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusRequired]) { - if (!self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) { - [self.presenter present]; - } - } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOptional]) { - if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired && !self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) { - [self.presenter present]; - } else if (self.config.displayMode != SDLLockScreenConfigurationDisplayModeOptionalOrRequired && self.presenter.presented) { - [self.presenter dismiss]; - } - } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOff]) { - if (self.presenter.presented) { - [self.presenter dismiss]; - } - } + __weak typeof(self) weakself = self; + dispatch_async(dispatch_get_main_queue(), ^{ + if (!([UIApplication sharedApplication].applicationState == UIApplicationStateActive)) { + // Don't present lock screen when app is backgrounded because the screenshot will be a black screen + return; + } + + [weakself sdl_checkLockScreenStatus]; + }); +} + +- (void)sdl_checkLockScreenStatus { + // Present the VC depending on the lock screen status + if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeAlways) { + if (!self.presenter.presented && self.canPresent) { + [self.presenter present]; + } + } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusRequired]) { + if (!self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) { + [self.presenter present]; + } + } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOptional]) { + if (self.config.displayMode == SDLLockScreenConfigurationDisplayModeOptionalOrRequired && !self.presenter.presented && self.canPresent && !self.lockScreenDismissedByUser) { + [self.presenter present]; + } else if (self.config.displayMode != SDLLockScreenConfigurationDisplayModeOptionalOrRequired && self.presenter.presented) { + [self.presenter dismiss]; + } + } else if ([self.lastLockNotification.lockScreenStatus isEqualToEnum:SDLLockScreenStatusOff]) { + if (self.presenter.presented) { + [self.presenter dismiss]; + } + } } - (void)sdl_updateLockScreenDismissable { |