summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicoleYarroch <nicole@livio.io>2019-12-11 15:31:51 -0500
committerNicoleYarroch <nicole@livio.io>2019-12-11 15:31:51 -0500
commit7a7636dcc6984e2934e987e6383e229cfef86dfb (patch)
treee84ddaaefa9721a0e4b10e7f23cbb43df336f59a
parentc2ab70d0087dc604c88c8b338a1665860e067125 (diff)
downloadsdl_ios-bugfix/issue_1501_wrong_appwindow_shown_on_lockscreen_dismissal.tar.gz
Fixed black screen when lock screen is presented in background
-rw-r--r--SmartDeviceLink/SDLLockScreenManager.m52
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 {