diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2019-05-17 14:29:45 -0400 |
---|---|---|
committer | Joel Fischer <joeljfischer@gmail.com> | 2019-05-17 14:29:45 -0400 |
commit | 35aa42592314b8e5440aba6744f477cf2c74ffe8 (patch) | |
tree | 56b5714ff2e28a4649c74e3cdf1505b9d1482ada | |
parent | cd44a87f9d50d8c0cb2f0510cc94a290c363f454 (diff) | |
parent | 7b5666be83b6cad4f905285e5a17dbb0572286a3 (diff) | |
download | sdl_ios-35aa42592314b8e5440aba6744f477cf2c74ffe8.tar.gz |
Merge branch 'develop' into bugfix/issue_1234_softbutton_multiple_states
-rw-r--r-- | CHANGELOG.md | 30 | ||||
-rw-r--r-- | Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist | 2 | ||||
-rw-r--r-- | Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist | 2 | ||||
-rw-r--r-- | SmartDeviceLink-iOS.podspec | 2 | ||||
-rw-r--r-- | SmartDeviceLink-iOS.xcodeproj/project.pbxproj | 14 | ||||
-rw-r--r-- | SmartDeviceLink.podspec | 4 | ||||
-rw-r--r-- | SmartDeviceLink/Info.plist | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLAlert.h | 1 | ||||
-rw-r--r-- | SmartDeviceLink/SDLError.h | 1 | ||||
-rw-r--r-- | SmartDeviceLink/SDLError.m | 96 | ||||
-rw-r--r-- | SmartDeviceLink/SDLLifecycleManager.m | 6 | ||||
-rw-r--r-- | SmartDeviceLink/SDLProxy.m | 2 | ||||
-rwxr-xr-x | SmartDeviceLink/SDLScreenshotViewController.m | 41 | ||||
-rw-r--r-- | SmartDeviceLinkSwift/Info.plist | 2 | ||||
-rw-r--r-- | docs/Classes.html | 1 | ||||
-rw-r--r-- | docs/Classes/SDLAlert.html | 1 | ||||
-rw-r--r-- | docs/undocumented.json | 20 |
17 files changed, 152 insertions, 75 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 23c24cd58..f141cf03d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,33 @@ +# 6.2.3 +### Versions +* Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). + +### Bug Fixes +* Fix all lockscreen related crashes when SDL is setup before the main window exists (https://www.github.com/smartdevicelink/sdl_ios/issues/1258). + +# 6.2.2 +### Versions +* Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). + +### Bug Fixes +* Add an explicit exception if SDL is setup before the app's window. The app's window **must** be setup before SDL is started (https://www.github.com/smartdevicelink/sdl_ios/issues/1255). + +# 6.2.1 +### Versions +* Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). + +##### Enhancements +* SmartDeviceLinkSwift updated to Swift 5.0 (https://www.github.com/smartdevicelink/sdl_ios/issues/1245). + +##### Bug Fixes +* Fix `SDLAlert` documentation (https://www.github.com/smartdevicelink/sdl_ios/issues/1233). +* Fixed the audio service being stopped when the navigation app is in `HMI_BACKGROUND` (https://www.github.com/smartdevicelink/sdl_ios/issues/1235). +* Fix setting up the lock screen window causing rotation issues (https://www.github.com/smartdevicelink/sdl_ios/issues/1250). + +##### Example App +* The example apps will now auto-reconnect if disconnected physically from the head unit (https://www.github.com/smartdevicelink/sdl_ios/issues/1237). +* Update the example swift app to Swift 5 (https://www.github.com/smartdevicelink/sdl_ios/issues/1172, https://www.github.com/smartdevicelink/sdl_ios/issues/1243, https://www.github.com/smartdevicelink/sdl_ios/issues/1245). + # 6.2.0 ### Versions * Supports [SDL RPC Spec 5.1.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/5.1.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0). diff --git a/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist index a89d8894e..d5b5c33a3 100644 --- a/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist +++ b/Example Apps/Example ObjC/SmartDeviceLink-Example-ObjC-Info.plist @@ -15,7 +15,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>6.2.0</string> + <string>6.2.3</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> diff --git a/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist index 3d6caffc6..31e903f97 100644 --- a/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist +++ b/Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Info.plist @@ -15,7 +15,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>6.2.0</string> + <string>6.2.3</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> diff --git a/SmartDeviceLink-iOS.podspec b/SmartDeviceLink-iOS.podspec index 9ce9d29ac..96c419654 100644 --- a/SmartDeviceLink-iOS.podspec +++ b/SmartDeviceLink-iOS.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink-iOS" -s.version = "6.2.0" +s.version = "6.2.3" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 7b954d90b..0b49b125a 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -8025,6 +8025,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example"; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -8039,6 +8040,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example"; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -8083,7 +8085,7 @@ RUN_CLANG_STATIC_ANALYZER = YES; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -8126,7 +8128,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; RUN_CLANG_STATIC_ANALYZER = YES; SKIP_INSTALL = YES; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -8215,7 +8217,7 @@ PRODUCT_NAME = "SDL Example Swift"; SWIFT_OBJC_BRIDGING_HEADER = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; @@ -8233,7 +8235,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.smartdevicelink.SDLTestApp; PRODUCT_NAME = "SDL Example Swift"; SWIFT_OBJC_BRIDGING_HEADER = "Example Apps/Example Swift/SmartDeviceLink-Example-Swift-Bridging-Header.h"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Release; }; @@ -8282,7 +8284,7 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -8329,7 +8331,7 @@ RUN_CLANG_STATIC_ANALYZER = YES; SKIP_INSTALL = YES; SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; diff --git a/SmartDeviceLink.podspec b/SmartDeviceLink.podspec index 6cfe4126f..ec64518c4 100644 --- a/SmartDeviceLink.podspec +++ b/SmartDeviceLink.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SmartDeviceLink" -s.version = "6.2.0" +s.version = "6.2.3" s.summary = "Connect your app with cars!" s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS" s.license = { :type => "New BSD", :file => "LICENSE" } @@ -10,6 +10,7 @@ s.platform = :ios, "8.0" s.dependency 'BiSON', '~> 1.1.1' s.source = { :git => "https://github.com/smartdevicelink/sdl_ios.git", :tag => s.version.to_s } s.requires_arc = true +s.swift_version = '4.2' s.default_subspec = 'Default' @@ -422,7 +423,6 @@ end s.subspec 'Swift' do |sswift| sswift.dependency 'SmartDeviceLink/Default' sswift.source_files = 'SmartDeviceLinkSwift/*.swift' -sswift.swift_version = '4.2' end end diff --git a/SmartDeviceLink/Info.plist b/SmartDeviceLink/Info.plist index 9f6540606..a140cf4b0 100644 --- a/SmartDeviceLink/Info.plist +++ b/SmartDeviceLink/Info.plist @@ -15,7 +15,7 @@ <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleShortVersionString</key> - <string>6.2.0</string> + <string>6.2.3</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> diff --git a/SmartDeviceLink/SDLAlert.h b/SmartDeviceLink/SDLAlert.h index ad97d7e43..b888deb6a 100644 --- a/SmartDeviceLink/SDLAlert.h +++ b/SmartDeviceLink/SDLAlert.h @@ -23,7 +23,6 @@ * <ul> * <li>alertText1</li> * <li>alertText2</li> - * <li>alertText3</li> * <li>ttsChunks</li> * </ul> * </li> diff --git a/SmartDeviceLink/SDLError.h b/SmartDeviceLink/SDLError.h index cdc2bab41..9c6209c5b 100644 --- a/SmartDeviceLink/SDLError.h +++ b/SmartDeviceLink/SDLError.h @@ -89,6 +89,7 @@ extern SDLErrorDomain *const SDLErrorDomainRPCStore; + (NSException *)sdl_missingFilesException; + (NSException *)sdl_invalidSoftButtonStateException; + (NSException *)sdl_carWindowOrientationException; ++ (NSException *)sdl_invalidLockscreenSetupException; @end diff --git a/SmartDeviceLink/SDLError.m b/SmartDeviceLink/SDLError.m index 187940201..7e5a0e95b 100644 --- a/SmartDeviceLink/SDLError.m +++ b/SmartDeviceLink/SDLError.m @@ -27,10 +27,10 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_rpcErrorWithDescription:(NSString *)description andReason:(NSString *)reason { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(description, nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(reason, nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(description, nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(reason, nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorRPCRequestFailed userInfo:userInfo]; @@ -38,10 +38,10 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_notConnectedError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"Could not find a connection", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The SDL library could not find a current connection to an SDL hardware device", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"Could not find a connection", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The SDL library could not find a current connection to an SDL hardware device", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorNotConnected @@ -50,10 +50,10 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_notReadyError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"Lifecycle manager not ready", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The SDL library is not finished setting up the connection, please wait until the lifecycleState is SDLLifecycleStateReady", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"Lifecycle manager not ready", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The SDL library is not finished setting up the connection, please wait until the lifecycleState is SDLLifecycleStateReady", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorNotConnected @@ -62,10 +62,10 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_unknownRemoteErrorWithDescription:(NSString *)description andReason:(NSString *)reason { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(description, nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(reason, nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(description, nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(reason, nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Have you tried turning it off and on again?", nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorUnknownRemoteError userInfo:userInfo]; @@ -79,9 +79,9 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_startedWithBadResult:(SDLResult)result info:(NSString *)info { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(result, nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(info, nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(result, nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(info, nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorRegistrationFailed userInfo:userInfo]; @@ -99,9 +99,9 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_lifecycle_failedWithBadResult:(SDLResult)result info:(NSString *)info { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(result, nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(info, nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(result, nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(info, nil) + }; return [NSError errorWithDomain:SDLErrorDomainLifecycleManager code:SDLManagerErrorRegistrationFailed userInfo:userInfo]; @@ -118,37 +118,37 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSError *)sdl_fileManager_cannotOverwriteError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"Cannot overwrite remote file", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The remote file system already has a file of this name, and the file manager is set to not automatically overwrite files", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Set SDLFileManager autoOverwrite to YES, or call forceUploadFile:completion:", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"Cannot overwrite remote file", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The remote file system already has a file of this name, and the file manager is set to not automatically overwrite files", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Set SDLFileManager autoOverwrite to YES, or call forceUploadFile:completion:", nil) + }; return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorCannotOverwrite userInfo:userInfo]; } + (NSError *)sdl_fileManager_noKnownFileError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"No such remote file is currently known", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The remote file is not currently known by the file manager. It could be that this file does not exist on the remote system or that the file manager has not completed its initialization and received a list of files from the remote system.", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure a file with this name is present on the remote system and that the file manager has finished its initialization.", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"No such remote file is currently known", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"The remote file is not currently known by the file manager. It could be that this file does not exist on the remote system or that the file manager has not completed its initialization and received a list of files from the remote system.", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure a file with this name is present on the remote system and that the file manager has finished its initialization.", nil) + }; return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorNoKnownFile userInfo:userInfo]; } + (NSError *)sdl_fileManager_unableToStartError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"The file manager was unable to start", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"This may be because files are not supported on this unit and / or LISTFILES returned an error", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure that the system is sending back a proper LIST FILES response", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"The file manager was unable to start", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"This may be because files are not supported on this unit and / or LISTFILES returned an error", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure that the system is sending back a proper LIST FILES response", nil) + }; return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToStart userInfo:userInfo]; } + (NSError *)sdl_fileManager_unableToUploadError { NSDictionary<NSString *, NSString *> *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedString(@"The file manager was unable to send this file", nil), - NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"This could be because the file manager has not started, or the head unit does not support files", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure that the system is sending back a proper LIST FILES response and check the file manager's state", nil) - }; + NSLocalizedDescriptionKey: NSLocalizedString(@"The file manager was unable to send this file", nil), + NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"This could be because the file manager has not started, or the head unit does not support files", nil), + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"Make sure that the system is sending back a proper LIST FILES response and check the file manager's state", nil) + }; return [NSError errorWithDomain:SDLErrorDomainFileManager code:SDLFileManagerErrorUnableToUpload userInfo:userInfo]; } @@ -232,7 +232,7 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; NSDictionary<NSString *, NSString *> *userInfo = @{ NSLocalizedDescriptionKey: NSLocalizedString(@"Choice Set Manager error", nil), NSLocalizedFailureReasonErrorKey: NSLocalizedString(@"Choice set manager failed to create menu items due to menuName being empty.", nil), - NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities.", nil) + NSLocalizedRecoverySuggestionErrorKey: NSLocalizedString(@"If you are setting the menuName, it is possible that the head unit is sending incorrect displayCapabilities.", nil) }; return [NSError errorWithDomain:SDLErrorDomainChoiceSetManager code:SDLChoiceSetManagerErrorFailedToCreateMenuItems userInfo:userInfo]; } @@ -293,16 +293,16 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; + (NSException *)sdl_missingHandlerException { return [NSException - exceptionWithName:@"MissingHandlerException" - reason:@"This request requires a handler to be specified using the <RPC>WithHandler class" - userInfo:nil]; + exceptionWithName:@"MissingHandlerException" + reason:@"This request requires a handler to be specified using the <RPC>WithHandler class" + userInfo:nil]; } + (NSException *)sdl_missingIdException { return [NSException - exceptionWithName:@"MissingIdException" - reason:@"This request requires an ID (command, softbutton, etc) to be specified" - userInfo:nil]; + exceptionWithName:@"MissingIdException" + reason:@"This request requires an ID (command, softbutton, etc) to be specified" + userInfo:nil]; } + (NSException *)sdl_missingFilesException { @@ -322,6 +322,12 @@ SDLErrorDomain *const SDLErrorDomainRPCStore = @"com.sdl.rpcStore.error"; userInfo:nil]; } ++ (NSException *)sdl_invalidLockscreenSetupException { + return [NSException exceptionWithName:@"com.sdl.lockscreen.setupException" + reason:@"SDL must be setup _after_ your app's window already exists" + userInfo:nil]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/SDLLifecycleManager.m b/SmartDeviceLink/SDLLifecycleManager.m index 8cf5daa91..0c3b257ab 100644 --- a/SmartDeviceLink/SDLLifecycleManager.m +++ b/SmartDeviceLink/SDLLifecycleManager.m @@ -239,6 +239,8 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready"; - (void)sdl_stopManager:(BOOL)shouldRestart { SDLLogV(@"Stopping manager, %@", (shouldRestart ? @"will restart" : @"will not restart")); + self.proxy = nil; + [self.fileManager stop]; [self.permissionManager stop]; [self.lockScreenManager stop]; @@ -259,7 +261,6 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready"; self.hmiLevel = nil; self.audioStreamingState = nil; self.systemContext = nil; - self.proxy = nil; // Due to a race condition internally with EAStream, we cannot immediately attempt to restart the proxy, as we will randomly crash. // Apple Bug ID #30059457 @@ -277,6 +278,9 @@ SDLLifecycleState *const SDLLifecycleStateReady = @"Ready"; } - (void)didEnterStateConnected { + // Ignore the connection while we are reconnecting. The proxy needs to be disposed and restarted in order to ensure correct state. https://github.com/smartdevicelink/sdl_ios/issues/1172 + if ([self.lifecycleState isEqualToString:SDLLifecycleStateReconnecting]) { return; } + // If we have security managers, add them to the proxy if (self.configuration.streamingMediaConfig.securityManagers != nil) { SDLLogD(@"Adding security managers"); diff --git a/SmartDeviceLink/SDLProxy.m b/SmartDeviceLink/SDLProxy.m index 27454817e..8a1e6b344 100644 --- a/SmartDeviceLink/SDLProxy.m +++ b/SmartDeviceLink/SDLProxy.m @@ -51,7 +51,7 @@ typedef NSString SDLVehicleMake; typedef void (^URLSessionTaskCompletionHandler)(NSData *data, NSURLResponse *response, NSError *error); typedef void (^URLSessionDownloadTaskCompletionHandler)(NSURL *location, NSURLResponse *response, NSError *error); -NSString *const SDLProxyVersion = @"6.2.0"; +NSString *const SDLProxyVersion = @"6.2.3"; const float StartSessionTime = 10.0; const float NotifyProxyClosedDelay = (float)0.1; const int PoliciesCorrelationId = 65535; diff --git a/SmartDeviceLink/SDLScreenshotViewController.m b/SmartDeviceLink/SDLScreenshotViewController.m index 2d9e73666..9ac5f4a8c 100755 --- a/SmartDeviceLink/SDLScreenshotViewController.m +++ b/SmartDeviceLink/SDLScreenshotViewController.m @@ -8,6 +8,8 @@ #import "SDLScreenshotViewController.h" +#import "SDLError.h" + @interface SDLScreenshotViewController () @property (nonatomic, strong) UIImageView *imageView; @@ -30,6 +32,42 @@ return self; } +// HAX: https://github.com/smartdevicelink/sdl_ios/issues/1250 +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + UIViewController *viewController = [self sdl_topMostControllerForWindow:[UIApplication sharedApplication].windows[0]]; + + if (viewController == self) { + return UIInterfaceOrientationMaskAll; + } else if (viewController != nil) { + return viewController.supportedInterfaceOrientations; + } + + return UIInterfaceOrientationMaskAll; +} + +// HAX: https://github.com/smartdevicelink/sdl_ios/issues/1250 +- (BOOL)shouldAutorotate { + UIViewController *viewController = [self sdl_topMostControllerForWindow:[UIApplication sharedApplication].windows[0]]; + + if (viewController == self) { + return YES; + } else if (viewController != nil) { + return viewController.shouldAutorotate; + } + + return YES; +} + +- (UIViewController *)sdl_topMostControllerForWindow:(UIWindow *)window { + UIViewController *topController = window.rootViewController; + + while (topController.presentedViewController != nil) { + topController = topController.presentedViewController; + } + + return topController; +} + - (void)layoutSubviews { self.imageView.frame = self.view.bounds; } @@ -37,12 +75,11 @@ - (void)loadScreenshotOfWindow:(UIWindow *)window { UIGraphicsBeginImageContextWithOptions(window.bounds.size, YES, 0.0f); [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:NO]; - + UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.imageView.image = image; } - @end diff --git a/SmartDeviceLinkSwift/Info.plist b/SmartDeviceLinkSwift/Info.plist index 180bcb2e2..ed1455724 100644 --- a/SmartDeviceLinkSwift/Info.plist +++ b/SmartDeviceLinkSwift/Info.plist @@ -15,7 +15,7 @@ <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleShortVersionString</key> - <string>6.2.0</string> + <string>6.2.3</string> <key>CFBundleVersion</key> <string>$(CURRENT_PROJECT_VERSION)</string> <key>NSPrincipalClass</key> diff --git a/docs/Classes.html b/docs/Classes.html index 5778b4789..642fe7a4a 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -434,7 +434,6 @@ <ul> <li>alertText1</li> <li>alertText2</li> - <li>alertText3</li> <li>ttsChunks</li> </ul> </li> diff --git a/docs/Classes/SDLAlert.html b/docs/Classes/SDLAlert.html index 29459c81c..ad9277047 100644 --- a/docs/Classes/SDLAlert.html +++ b/docs/Classes/SDLAlert.html @@ -40,7 +40,6 @@ <ul> <li>alertText1</li> <li>alertText2</li> - <li>alertText3</li> <li>ttsChunks</li> </ul> </li> diff --git a/docs/undocumented.json b/docs/undocumented.json index 65b79113e..a76a61f97 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -30,70 +30,70 @@ }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 44, + "line": 43, "symbol": "SDLAlert.-initWithAlertText1:alertText2:duration:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 46, + "line": 45, "symbol": "SDLAlert.-initWithAlertText1:alertText2:alertText3:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 48, + "line": 47, "symbol": "SDLAlert.-initWithAlertText1:alertText2:alertText3:duration:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 50, + "line": 49, "symbol": "SDLAlert.-initWithAlertText1:alertText2:alertText3:duration:softButtons:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 52, + "line": 51, "symbol": "SDLAlert.-initWithTTS:playTone:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 54, + "line": 53, "symbol": "SDLAlert.-initWithTTS:alertText1:alertText2:playTone:duration:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 56, + "line": 55, "symbol": "SDLAlert.-initWithTTS:alertText1:alertText2:alertText3:playTone:duration:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 58, + "line": 57, "symbol": "SDLAlert.-initWithTTSChunks:playTone:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 60, + "line": 59, "symbol": "SDLAlert.-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:softButtons:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" }, { "file": "/Users/joel/Projects/SDL/sdl_ios/SmartDeviceLink/SDLAlert.h", - "line": 62, + "line": 61, "symbol": "SDLAlert.-initWithTTSChunks:alertText1:alertText2:alertText3:playTone:duration:softButtons:", "symbol_kind": "sourcekitten.source.lang.objc.decl.method.instance", "warning": "undocumented" |