Skip to content

Commit

Permalink
Merge pull request #1641 from smartdevicelink/develop
Browse files Browse the repository at this point in the history
v6.6.0 Release
  • Loading branch information
joeljfischer committed Apr 29, 2020
2 parents e948511 + d5dba50 commit f4923ef
Show file tree
Hide file tree
Showing 427 changed files with 10,811 additions and 4,062 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Expand Up @@ -44,3 +44,10 @@ infer-out
Carthage/Build

docs/docsets/
.idea
*venv*
*__pycache__
*.pytest_cache
**htmlcov
**.coverage
_debug*
4 changes: 4 additions & 0 deletions .gitmodules
@@ -1,3 +1,7 @@
[submodule "bson_c_lib"]
path = bson_c_lib
url = https://github.com/smartdevicelink/bson_c_lib.git
[submodule "generator/rpc_spec"]
path = generator/rpc_spec
url = https://github.com/smartdevicelink/rpc_spec.git
branch = master
39 changes: 39 additions & 0 deletions CHANGELOG.md
@@ -1,4 +1,43 @@
# Changelog
## 6.6.0
### Versions
* Supports [SDL RPC Spec 6.0.0](https://github.com/smartdevicelink/rpc_spec/releases/tag/6.0.0) and [SDL Protocol Spec 5.2.0](https://github.com/smartdevicelink/protocol_spec/releases/tag/5.2.0).

### Enhancements
* The secondary transport now starts only when the app has been brought to HMI Full (https://www.github.com/smartdevicelink/sdl_ios/issues/1145).
* Added RPC generator script – though it is not currently used (https://www.github.com/smartdevicelink/sdl_ios/issues/1298).
* Added helpful convenience initializers to `SDLRadioControlData` (https://www.github.com/smartdevicelink/sdl_ios/issues/1206).
* `SDLSystemCapabilityManager` enhancements and alignment with Java Suite ((https://www.github.com/smartdevicelink/sdl_ios/issues/1535).
* The `SDLManagerDelegate` now has a `videoStreamingState` callback (https://www.github.com/smartdevicelink/sdl_ios/issues/1546).
* The secondary transport will no longer be immediately shut down when the app goes to the background (https://www.github.com/smartdevicelink/sdl_ios/issues/1560).
* Deprecated `SyncPData` and `EncodedSyncPData` RPCs (https://www.github.com/smartdevicelink/sdl_ios/issues/1599).
* Deprecated `OnLockScreenStatus` and `LockScreenStatus` fake RPCs (https://www.github.com/smartdevicelink/sdl_ios/issues/1601).

### Bug Fixes
* Fix video streaming timeout when app goes from background to foreground (https://www.github.com/smartdevicelink/sdl_ios/issues/1471).
* Many lock screen fixes (https://www.github.com/smartdevicelink/sdl_ios/issues/1504, https://www.github.com/smartdevicelink/sdl_ios/issues/1523, https://www.github.com/smartdevicelink/sdl_ios/issues/1545, https://www.github.com/smartdevicelink/sdl_ios/issues/1565).
* Threading fixes around the response handler map (https://www.github.com/smartdevicelink/sdl_ios/issues/1515).
* Fixed some warnings emitted from the lock screen storyboard (https://www.github.com/smartdevicelink/sdl_ios/issues/1521).
* Fix potential race condition in shutting down and starting up `SDLProxy` (https://www.github.com/smartdevicelink/sdl_ios/issues/1532).
* Fix `SDLTouch` to better handle `NSNull` (https://www.github.com/smartdevicelink/sdl_ios/issues/1534).
* Fix empty `SetDisplayLayout.displayCapabilities` breaks the screen manager (https://www.github.com/smartdevicelink/sdl_ios/issues/1536).
* Many secondary transport fixes (https://www.github.com/smartdevicelink/sdl_ios/issues/1551, https://www.github.com/smartdevicelink/sdl_ios/issues/1561).
* Revert deprecations in RPCs relating to `NSDictionary` (https://www.github.com/smartdevicelink/sdl_ios/issues/1557).
* Change how the audio pass thru handler is called to allow sending a new one in the response handler (https://www.github.com/smartdevicelink/sdl_ios/issues/1559).
* Threading fixes around the lifecycle manager `correlationId` (https://www.github.com/smartdevicelink/sdl_ios/issues/1564).
* Fix `SDLStreamingMediaManager` returning an incorrect value for `isStreamingSupported` (https://www.github.com/smartdevicelink/sdl_ios/issues/1569).
* Fix using incorrect MTU sizes for non-RPC services (https://www.github.com/smartdevicelink/sdl_ios/issues/1577).
* Fix IAP crash when the output stream closes (https://www.github.com/smartdevicelink/sdl_ios/issues/1583).
* Fix potential threading crash in `SDLChoiceSetManager` (https://www.github.com/smartdevicelink/sdl_ios/issues/1584).
* Adding some documentation (https://www.github.com/smartdevicelink/sdl_ios/issues/1587).
* Fix a potential race condition crash in the text and graphic manager (https://www.github.com/smartdevicelink/sdl_ios/issues/1595).
* Fix `SDLImageField` initializer (https://www.github.com/smartdevicelink/sdl_ios/issues/1625).

### Example Apps
* They now show a warning message if the slider or scrollable message time out (https://www.github.com/smartdevicelink/sdl_ios/issues/1526).
* Remove example app logic for checking first HMI FULL (https://www.github.com/smartdevicelink/sdl_ios/issues/1554).
* Example app no longer uses deprecated `SDLConfiguration` (https://www.github.com/smartdevicelink/sdl_ios/issues/1607).

## 6.5.0 (Since RC 1)
### Bug Fixes
* Update testing dependencies and fix a few tests that fail after updating OCMock to 3.5.0 due to mocks not being used properly in a test (https://www.github.com/smartdevicelink/sdl_ios/issues/1517).
Expand Down
2 changes: 1 addition & 1 deletion Cartfile.resolved
@@ -1,4 +1,4 @@
github "Quick/Nimble" "v8.0.5"
github "Quick/Quick" "v2.2.0"
github "erikdoe/ocmock" "v3.5"
github "erikdoe/ocmock" "v3.6"
github "uber/ios-snapshot-test-case" "6.2.0"
18 changes: 15 additions & 3 deletions Example Apps/Example ObjC/MenuManager.m
Expand Up @@ -137,7 +137,13 @@ + (SDLMenuCell *)sdlex_sliderMenuCellWithManager:(SDLManager *)manager {
SDLSlider *sliderRPC = [[SDLSlider alloc] initWithNumTicks:3 position:1 sliderHeader:@"Select a letter" sliderFooters:@[@"A", @"B", @"C"] timeout:10000];
[manager sendRequest:sliderRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if(![response.resultCode isEqualToEnum:SDLResultSuccess]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider could not be displayed" textField2:nil iconName:nil]];
if ([response.resultCode isEqualToEnum:SDLResultTimedOut]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider timed out" textField2:nil iconName:nil]];
} else if ([response.resultCode isEqualToEnum:SDLResultAborted]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider cancelled" textField2:nil iconName:nil]];
} else {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Slider could not be displayed" textField2:nil iconName:nil]];
}
}
}];
}];
Expand All @@ -148,8 +154,14 @@ + (SDLMenuCell *)sdlex_scrollableMessageMenuCellWithManager:(SDLManager *)manage
SDLScrollableMessage *messageRPC = [[SDLScrollableMessage alloc] initWithMessage:@"This is a scrollable message\nIt can contain many lines"];
[manager sendRequest:messageRPC withResponseHandler:^(__kindof SDLRPCRequest * _Nullable request, __kindof SDLRPCResponse * _Nullable response, NSError * _Nullable error) {
if(![response.resultCode isEqualToEnum:SDLResultSuccess]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message could not be displayed" textField2:nil iconName:nil]];
}
if ([response.resultCode isEqualToEnum:SDLResultTimedOut]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message timed out" textField2:nil iconName:nil]];
} else if ([response.resultCode isEqualToEnum:SDLResultAborted]) {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message cancelled" textField2:nil iconName:nil]];
} else {
[manager sendRequest:[AlertManager alertWithMessageAndCloseButton:@"Scrollable Message could not be displayed" textField2:nil iconName:nil]];
}
}
}];
}];
}
Expand Down
4 changes: 4 additions & 0 deletions Example Apps/Example ObjC/PerformInteractionManager.m
Expand Up @@ -66,16 +66,19 @@ - (SDLInteractionMode)modeForTriggerSource:(SDLTriggerSource)source {
#pragma mark - SDLChoiceSetDelegate

- (void)choiceSet:(SDLChoiceSet *)choiceSet didSelectChoice:(SDLChoiceCell *)choice withSource:(SDLTriggerSource)source atRowIndex:(NSUInteger)rowIndex {
SDLLogD(@"User selected row: %lu, choice: %@", (unsigned long)rowIndex, choice);
[self.manager sendRequest:[[SDLSpeak alloc] initWithTTS:TTSGoodJob]];
}

- (void)choiceSet:(SDLChoiceSet *)choiceSet didReceiveError:(NSError *)error {
SDLLogE(@"Error presenting choice set: %@", error);
[self.manager sendRequest:[[SDLSpeak alloc] initWithTTS:TTSYouMissed]];
}

#pragma mark - SDLKeyboardDelegate

- (void)userDidSubmitInput:(NSString *)inputText withEvent:(SDLKeyboardEvent)source {
SDLLogD(@"User did submit keyboard input: %@, with event: %@", inputText, source);
if ([source isEqualToEnum:SDLKeyboardEventSubmitted]) {
[self.manager sendRequest:[[SDLSpeak alloc] initWithTTS:TTSGoodJob]];
} else if ([source isEqualToEnum:SDLKeyboardEventVoice]) {
Expand All @@ -84,6 +87,7 @@ - (void)userDidSubmitInput:(NSString *)inputText withEvent:(SDLKeyboardEvent)sou
}

- (void)keyboardDidAbortWithReason:(SDLKeyboardEvent)event {
SDLLogW(@"Keyboard aborted with reason: %@", event);
[self.manager sendRequest:[[SDLSpeak alloc] initWithTTS:TTSYouMissed]];
}

Expand Down
4 changes: 3 additions & 1 deletion Example Apps/Example ObjC/ProxyManager.m
Expand Up @@ -114,7 +114,9 @@ - (void)sdlex_setupConfigurationWithLifecycleConfiguration:(SDLLifecycleConfigur
[self sdlex_startManager];
return;
}
SDLConfiguration *config = [SDLConfiguration configurationWithLifecycle:lifecycleConfiguration lockScreen:[SDLLockScreenConfiguration enabledConfigurationWithAppIcon:[UIImage imageNamed:ExampleAppLogoName] backgroundColor:nil] logging:[self.class sdlex_logConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration]];

SDLLockScreenConfiguration *lockScreenConfiguration = [SDLLockScreenConfiguration enabledConfigurationWithAppIcon:[UIImage imageNamed:ExampleAppLogoName] backgroundColor:nil];
SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfiguration lockScreen:lockScreenConfiguration logging:[self.class sdlex_logConfiguration] fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:[SDLEncryptionConfiguration defaultConfiguration]];
self.sdlManager = [[SDLManager alloc] initWithConfiguration:config delegate:self];
[self sdlex_startManager];
}
Expand Down
22 changes: 18 additions & 4 deletions Example Apps/Example Swift/MenuManager.swift
Expand Up @@ -181,8 +181,15 @@ private extension MenuManager {
return SDLMenuCell(title: ACSliderMenuName, icon: nil, voiceCommands: [ACSliderMenuName], handler: { _ in
let slider = SDLSlider(numTicks: 3, position: 1, sliderHeader: "Select a letter", sliderFooters: ["A", "B", "C"], timeout: 3000)
manager.send(request: slider, responseHandler: { (request, response, error) in
guard let response = response, response.resultCode == .success else {
manager.send(AlertManager.alertWithMessageAndCloseButton("Slider could not be displayed"))
guard let response = response else { return }
guard response.resultCode == .success else {
if response.resultCode == .timedOut {
manager.send(AlertManager.alertWithMessageAndCloseButton("Slider timed out"))
} else if response.resultCode == .aborted {
manager.send(AlertManager.alertWithMessageAndCloseButton("Slider cancelled"))
} else {
manager.send(AlertManager.alertWithMessageAndCloseButton("Slider could not be displayed"))
}
return
}
})
Expand All @@ -193,8 +200,15 @@ private extension MenuManager {
return SDLMenuCell(title: ACScrollableMessageMenuName, icon: nil, voiceCommands: [ACScrollableMessageMenuName], handler: { _ in
let scrollableMessage = SDLScrollableMessage(message: "This is a scrollable message\nIt can contain many lines")
manager.send(request: scrollableMessage, responseHandler: { (request, response, error) in
guard let response = response, response.resultCode == .success else {
manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable could not be displayed"))
guard let response = response else { return }
guard response.resultCode == .success else {
if response.resultCode == .timedOut {
manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message timed out"))
} else if response.resultCode == .aborted {
manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message cancelled"))
} else {
manager.send(AlertManager.alertWithMessageAndCloseButton("Scrollable Message could not be displayed"))
}
return
}
})
Expand Down
4 changes: 4 additions & 0 deletions Example Apps/Example Swift/PerformInteractionManager.swift
Expand Up @@ -56,16 +56,19 @@ private extension PerformInteractionManager {

extension PerformInteractionManager: SDLChoiceSetDelegate {
func choiceSet(_ choiceSet: SDLChoiceSet, didSelectChoice choice: SDLChoiceCell, withSource source: SDLTriggerSource, atRowIndex rowIndex: UInt) {
SDLLog.d("User selected row: \(rowIndex), choice: \(choice)")
manager.send(SDLSpeak(tts: TTSGoodJob))
}

func choiceSet(_ choiceSet: SDLChoiceSet, didReceiveError error: Error) {
SDLLog.e("Error presenting choice set: \(error)")
manager.send(SDLSpeak(tts: TTSYouMissed))
}
}

extension PerformInteractionManager: SDLKeyboardDelegate {
func keyboardDidAbort(withReason event: SDLKeyboardEvent) {
SDLLog.w("Keyboard aborted with reason: \(event)")
switch event {
case SDLKeyboardEvent.cancelled:
manager.send(SDLSpeak(tts: TTSYouMissed))
Expand All @@ -76,6 +79,7 @@ extension PerformInteractionManager: SDLKeyboardDelegate {
}

func userDidSubmitInput(_ inputText: String, withEvent source: SDLKeyboardEvent) {
SDLLog.d("User did submit keyboard input: \(inputText), with event: \(source)")
switch source {
case SDLKeyboardEvent.voice: break
// Start Voice search
Expand Down
7 changes: 1 addition & 6 deletions Example Apps/Example Swift/ProxyManager.swift
Expand Up @@ -109,7 +109,7 @@ private extension ProxyManager {
lifecycleConfiguration.nightColorScheme = SDLTemplateColorScheme(primaryRGBColor: green, secondaryRGBColor: grey, backgroundRGBColor: darkGrey)

let lockScreenConfiguration = appIcon != nil ? SDLLockScreenConfiguration.enabledConfiguration(withAppIcon: appIcon!, backgroundColor: nil) : SDLLockScreenConfiguration.enabled()
return SDLConfiguration(lifecycle: lifecycleConfiguration, lockScreen: lockScreenConfiguration, logging: logConfiguration(), fileManager:.default())
return SDLConfiguration(lifecycle: lifecycleConfiguration, lockScreen: lockScreenConfiguration, logging: logConfiguration(), fileManager: .default(), encryption: .default())
}

/// Sets the type of SDL debug logs that are visible and where to port the logs. There are 4 levels of log filtering, verbose, debug, warning and error. Verbose prints all SDL logs; error prints only the error logs. Adding SDLLogTargetFile to the targest will log to a text file on the iOS device. This file can be accessed via: iTunes > Your Device Name > File Sharing > Your App Name. Make sure `UIFileSharingEnabled` has been added to the application's info.plist and is set to `true`.
Expand Down Expand Up @@ -173,11 +173,6 @@ extension ProxyManager: SDLManagerDelegate {
vehicleDataManager.subscribeToVehicleOdometer()
}

if newLevel == .full && firstHMILevelState != .full {
// This is our first time in a `FULL` state.
firstHMILevelState = newLevel
}

switch newLevel {
case .full: // The SDL app is in the foreground
// Always try to show the initial state to guard against some possible weird states. Duplicates will be ignored by Core.
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
@@ -1,4 +1,4 @@
Copyright (c) 2017 - 2018 SmartDeviceLink Consortium, Inc.
Copyright (c) 2017 - 2020 SmartDeviceLink Consortium, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -37,7 +37,7 @@ See the [changelog](https://github.com/smartdevicelink/sdl_ios/blob/master/CHANG

You can install this library using [Accio/SwiftPM](https://github.com/JamitLabs/Accio) documentation page. Please follow the steps to install and initialization Accio into a current or new application.

In your Package.swift file , you want to add `.package(url: "https://github.com/smartdevicelink/sdl_ios.git", .from: "6.5.0"),` to the dependencies array. Then add `SmartDeviceLink` to the targets dependencies array.
In your Package.swift file , you want to add `.package(url: "https://github.com/smartdevicelink/sdl_ios.git", .from: "6.6.0"),` to the dependencies array. Then add `SmartDeviceLink` to the targets dependencies array.

Please see [Mainifest format](https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md) to specify dependencies to a specific branch / version of SDL.

Expand All @@ -49,10 +49,10 @@ If you are building a Swift app, then add this instead `SmartDeviceLinkSwift` to

You can install this library using [Cocoapods](https://cocoapods.org/pods/SmartDeviceLink-iOS). You can get started with Cocoapods by [following their install guide](https://guides.cocoapods.org/using/getting-started.html#getting-started), and learn how to use Cocoapods to install dependencies [by following this guide](https://guides.cocoapods.org/using/using-cocoapods.html).

In your podfile, you want to add `pod 'SmartDeviceLink', '~> 6.5'`. Then run `pod install` inside your terminal. With Cocoapods, we support iOS 8.0+.
In your podfile, you want to add `pod 'SmartDeviceLink', '~> 6.6'`. Then run `pod install` inside your terminal. With Cocoapods, we support iOS 8.0+.

###### Swift
If you are building a Swift app, then add this instead `pod 'SmartDeviceLink/Swift', '~> 6.5'`. Then run `pod install` in your terminal.
If you are building a Swift app, then add this instead `pod 'SmartDeviceLink/Swift', '~> 6.6'`. Then run `pod install` in your terminal.

##### Carthage

Expand Down
2 changes: 1 addition & 1 deletion SmartDeviceLink-iOS.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|

s.name = "SmartDeviceLink-iOS"
s.version = "6.5.0"
s.version = "6.6.0"
s.summary = "Connect your app with cars!"
s.homepage = "https://github.com/smartdevicelink/SmartDeviceLink-iOS"
s.license = { :type => "New BSD", :file => "LICENSE" }
Expand Down

0 comments on commit f4923ef

Please sign in to comment.