Swiftpack.co - Package - smartdevicelink/sdl_ios

Accio compatible Carthage compatible CocoaPods Version Swift Package Manager compatible License SmartDeviceLink Tests codecov Documentation Slack Status

What is SmartDeviceLink (SDL)

SmartDeviceLink (SDL) is a standard set of protocols and messages that connect applications on a smartphone to a vehicle head unit. This messaging enables a consumer to interact with their application using common in-vehicle interfaces such as a touch screen display, embedded voice recognition, steering wheel controls and various vehicle knobs and buttons. There are three main components that make up the SDL ecosystem.

  • The Core component is the software which Vehicle Manufacturers (OEMs) implement in their vehicle head units. Integrating this component into their head unit and HMI based on a set of guidelines and templates enables access to various smartphone applications.
  • The optional SDL Server can be used by Vehicle OEMs to update application policies and gather usage information for connected applications.
  • The iOS, Android / Java Suite, and JavaScript libraries are implemented by app developers into their applications to enable command and control via the connected head unit.
  • To suggest new features to SDL, including the iOS library, go to the SDL Evolution github project.
  • To understand if a contribution should be entered as an iOS Pull Request or Issue, or an SDL Evolution Proposal, please reference this document.

SDL iOS App Library

The mobile library component of SDL is meant to run on the end user’s smart-device from within SDL enabled apps. The library allows the apps to connect to SDL enabled head-units and hardware through Bluetooth, USB, and TCP. Once the library establishes a connection between the smart device and head-unit through the preferred method of transport, the two devices are able to communicate using the SDL defined protocol. The app integrating this library project is then able to expose its functionality to the head-unit through text, media, and other interactive elements.

You can find guides and documentation on how to use this library at the SmartDeviceLink website. You can find the upcoming releases roadmap at the SDL Evolution Github.

Installing

To install this library as a framework in your app, see the Installation Guide. There are instructions on how to install using the dependency managers Accio, Carthage, CocoaPods, and Swift Package Manager, as well as how to install the library framework manually.

Adding a Dynamic Framework

Tagged to our releases is a dynamic framework file that can be drag-and-dropped into the application. Dynamic frameworks are supported on iOS 8+. WARNING: You cannot submit your app to the app store with the framework as is. You MUST strip the simulator part of the framework first. Strip the x64 and i386 portions first like so:

lipo -remove i386 -remove x86_64 -o SmartDeviceLink.framework/SmartDeviceLink SmartDeviceLink.framework/SmartDeviceLink

You can check the current architectures like so:

lipo -info SmartDeviceLink.framework/SmartDeviceLink

Getting Help

If you have questions, first view our guides on the SmartDeviceLink website.

If you see a bug, please post an issue on the appropriate repository. Please see the contribution guidelines before proceeding. If you need general assistance, or have other questions, you can sign up for the SDL Slack and chat with other developers and the maintainers of the project.

Example Apps

This library repository contains two example apps: one written in Objective-C and one in Swift. If you have CocoaPods installed, you can easily run one of the example apps by executing pod try SmartDeviceLink in your terminal. Alternatively, you can clone or download the project, but before attempting to build and run the example apps you must follow the installation steps.

There are additional example apps available in the example organization, these require CocoaPods to install dependencies.

Contributing to the Project

We welcome contributors to the project, but it helps to know a few things about how the project is organized.

  1. All Pull Requests must fix an issue. Before creating a PR for a bug or feature, ensure that there is an open issue for it. If there is not, open one!
  2. We recommend telling the project maintainers that you intend to contribute a PR for an issue. This allows us to internally track what PRs will be contributed and to plan time to review your PR. Furthermore, we may ask you not to work on a PR for that issue for various reasons (see below).
  3. We welcome PRs for bug fixes! If there's a confirmed issue for a bug, we would welcome a bug fix. The PR will require a review from a project maintainer before it can be merged.
  4. PRs for features require additional planning. Features must be approved by the SDLC using the Evolution Process before an issue can be opened. Furthermore, a feature must be approved to be developed for a release by the SDLC before a PR can be opened. Finally, a PR cannot be merged if the underlying feature requires or should have alignment across multiple projects until PRs for all those projects are ready for review.

Preparing for Development

To prepare the library for development, you will need to take a few steps:

  1. Clone this repository.
  2. Install submodules with git submodule init and git submodule update.
  3. Install testing dependencies.
  4. Ensure that you can run the Example test apps.

Creating or Updating an RPC

When creating or updating an RPC, you will need to install and use the RPC generator. The generator must be used to ensure that the content is correct. To use the generator, the RPC must be updated on the RPC spec repository.

Running Tests

To run tests, you will need to bootstrap the Carthage testing libraries. To do so, first install Carthage.

Then, from the root project directory, run:

carthage bootstrap --platform ios

At this point, you can run tests from Xcode, or, if you wish to run the tests exactly as they will be run on the CI server, see the YAML document describing those tests. You can also check the previously run CI tests to see how they're currently being run.

Lock Screen Screenshot Tests

We run some additional tests using iOSSnapshotTestCase. These tests generate the lock screen view controller and compare it to generated screenshots. By default, the generated screenshots use the iPhone 11 simulator and if you run the unit tests on that simulator, the tests should pass by default.

Re-Generating Lock Screen Screenshots

If you need to change which simulator is used to generate the screenshots, or if you need to re-generate the screenshots for another reason, you can. Go to SDLLockScreenViewControllerSnapshotTests.m and take the following steps:

  1. Uncomment the following line:
// self.recordMode = YES;
  1. Run unit tests on the simulator that you want to use to generate the screenshots. Tests should fail because record mode is on.
  2. Re-comment out the line.
  3. Run unit tests again; they should pass this time.

Github

link
Stars: 142

Dependencies

Used By

Total: 0

Releases

v7.0.0 - A Whole New Slightly Changed World -

This release adds new vehicle data, a screen manager API for changing template layout, and many bug fixes. In addition, as a major version update, this release removes many previously deprecated APIs.

Remember that some features only work on head units that support that feature.

Supported Specs

Change Highlights

Breaking Changes

  • Previously deprecated methods have been removed.

Enhancements

Bug Fixes

Important Known Issues

  • #1795 and #1783 - Potential bugs with connecting to legacy head units (may persist back to 6.7.0 as well).
  • #1797 - Known issue in Carthage that requires a workaround script to receive distribution via Carthage in Xcode 12.
  • #1799 - Potential race condition on iOS 13.7 and iOS 14.0 only leading to high CPU usage or a background crash (may persist through every version of the library).

See all the commits and the changelog.

This release is made up of 533 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @FrankElias77, @jordynmackool, @yLeonid, and @vladmu.

v7.0.0 - Release Candidate 2 -

This release adds new vehicle data, a screen manager API for changing template layout, and many bug fixes. In addition, as a major version update, this release removes many previously deprecated APIs.

Remember that some features only work on head units that support that feature.

Supported Specs

Change Highlights

Enhancements

Bug Fixes

Important Known Issues

  • #1795 and #1783 - Potential bugs with connecting to legacy head units (may persist back to 6.7.0 as well).
  • #1797 - Known issue in Carthage that requires a workaround script to receive distribution via Carthage in Xcode 12.
  • #1799 - Potential race condition on iOS 13.7 and iOS 14.0 only leading to high CPU usage or a background crash (may persist through every version of the library).

See all the commits and the changelog.

This release is made up of 454 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @FrankElias77, @jordynmackool, @yLeonid, and @vladmu.

v6.7.0 - Permission Manager and Subscribe Button Manager Updates -

This release brings enhancements and bug fixes including Permission Manager updates and adding subscribe button features to the Screen Manager.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

  • Added subscribe button features to the screen manager (#1563).
  • Added a new SDLManager delegate method for updating the HMI and VR language separately (#1593).
  • Aligned SDLPermissionManager methods with Java Suite and JavaScript Suite libraries, adding methods for parameter permissions and more (#1661, #1667, #1682).

Bug Fixes

  • Fix the video background when the app goes into the background not always showing when it should (#1620).
  • Better handling of head units sending a nil displayCapabilities in the SystemCapabilityManager (#1623).
  • Fixed a deadlock that could happen on the lock screen due to some calls being asynchronous but handled synchronously (#1629).
  • Fixed turning wifi off and back on causing secondary transport to fail (#1631, #1639).
  • Fixed using the permission manager in Swift would sometimes crash (#1636).
  • Fixed sending an empty VR array in an SDLMenuCell would fail (#1648).
  • Fix the encryption manager not being shut down correctly after a disconnect / reconnect (#1675).
  • Fix video session properties not being re-set upon reconnection (#1683).
  • Fix soft button image uploads failing if the first state has no images but other states do (#1698).
  • Fix a deadlock that would occur when restarting the SDLManager in the managerDidDisconnect callback (#1710).

See all the commits and the changelog.

This release is made up of 471 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @lapinskijw, @zhouxin627, @yangjun, @hannianqiao, and @tyoshii.

v6.6.0 - SystemCapabilityManager Updates and Many Fixes -

This release brings enhancements and bug fixes including SystemCapabilityManager updates and Secondary Transport fixes.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

  • The secondary transport now starts only when the app has been brought to HMI Full (#1145).
  • SDLSystemCapabilityManager enhancements and alignment with Java Suite ((#1535).
  • The SDLManagerDelegate now has a videoStreamingState callback (#1546).
  • The secondary transport will no longer be immediately shut down when the app goes to the background (#1560).
  • Deprecated SyncPData and EncodedSyncPData RPCs (#1599).

Bug Fixes

  • Many lock screen fixes (#1504, #1523, #1545, #1565).
  • Threading fixes around the response handler map (#1515).
  • Many secondary transport fixes (#1551, #1561).
  • Revert deprecations in RPCs relating to NSDictionary (#1557).
  • Fix SDLStreamingMediaManager returning an incorrect value for isStreamingSupported (#1569).
  • Fix using incorrect MTU sizes for non-RPC services (#1577).
  • Fix IAP crash when the output stream closes (#1583).
  • Fix potential threading crash in SDLChoiceSetManager (#1584).
  • Fix a potential race condition crash in the text and graphic manager (#1595).

See all the commits and the changelog.

This release is made up of 464 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @theresalech, @justingluck93, @kshala-ford, @lapinskijw, @ashwink11, @yangjun, @zhouxin627, @yLeonid, @o-mishch, and @vladmu.

v6.5.0 - Lots of Bug Fixes -

This release brings bug fixes including issues related to the lock screen, Objective-C++ projects, and more.

Specs Supported

Change Highlights

Bug Fixes

See all the commits and the changelog.

This release is made up of 108 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, and @justingluck93.

v6.5.0 Release Candidate 1 -

See the develop branch changelog for full release notes.

To use this release candidate with Cocoapods, specify the tag like so:

pod 'SmartDeviceLink', :git => 'https://github.com/smartdevicelink/sdl_ios.git', :tag => '6.5.0-rc.1'

Known Issues

  • Unit tests fail with newest version of OCMock (#1517).

v6.4.1 - iOS 13 Lock Screen Bug Fixes -

This release fixes the SDL Lock Screen for apps using the iOS 13 multi-window / UIWindowScene API.

Specs Supported

Change Highlights

Bug Fixes

See all the commits and the changelog.

This release is made up of 41 commits. Thanks to contributors @joeljfischer, and @justingluck93.

v6.4.0 - Widgets, Multiple Remote Control Modules, and More -

This release brings enhancements and bug fixes including widgets, a new multithreading architecture, and multiple remote control modules per type.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

  • The autocomplete options for users in searchable choice sets and popup keyboards can now support more than one item (#790).
  • Added the ability for the module to turn on or off a gesture to dismiss the lock screen – this can also be disabled on the developer side (#932).
  • The RPC session can now be encrypted when the head unit has the capability and desires it. This allows all RPCs, or a subset, to be encrypted over the wire similar to the current capability with video data (#1163).
  • Support multiple windows per display via widgets (#1270).
  • Support multiple modules per remote control module type (#1272).
  • A tile layout is now supported for the main menu and sub-menus (#1276).
  • The SDLSystemCapabilityManager now has support for the new multi-window display capabilities with automatic backward-compatibility support (#1386).

Bug Fixes

  • Fixed the permission manager processing permission updates incorrectly (#965).
  • Multithreading throughout the iOS library has been re-implemented for simplicity and speed (#1028).
  • Fixed iOS 13 making the lock screen dismissible (#1422).
  • Fixed second phone connecting to head unit over iAP disconnecting the first phone (#1431).
  • More information is logged when asserts occur due to type mismatches (#1439).

See all the commits and the changelog.

This release is made up of 909 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @yLeonid, @justingluck93, @SatbirTanda, @t-yoshii, @kshala-ford, @lnafarrateluxoft, @mjuarez-ford, @piyushkhosla, @mrapitis, Yasuhiro Yoneyama, @BrettyWhite, and Amish Sharma.

v6.3.1 - IAP Transport Fixes -

This release brings a few IAP transport fixes.

Specs Supported

Change Highlights

Bug Fixes

  • Fix unregistering for EATransport notifications can interfere with other apps' EATransport notifications (#1329).
  • Fix issues related to the background task running when the device is in the process of making an IAP connection but is in the background (#1326, #1327).

See all the changes and the changelog.

This release is made up of 9 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, and @t-yoshii.

v6.3.0 - Subscriptions and Dynamic Menu Updates -

This release brings enhancements and bug fixes including dynamic menu updates, SDLSystemCapability subscriptions, and a rewritten IAP transport.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

  • Support dynamic adding / deleting of menu items when they need to be replaced instead of a full delete / add (#1144).
  • Update to Swift 5.0 (#1245).
  • Add RPC subscription methods to SDLManager for ease of use (#1257).
  • Support subscribing to SystemCapabilities with the SystemCapabilityManager (#1271).

Bug Fixes

  • Deprecate RPC superclass initializers as they are not for public use (#1204).
  • Fixed the audio stream manager shutting down when the device app was in the background. It now stays active when the app is in the background (#1224).
  • Fixed numerous IAP transport issues with a near full rewrite of the related classes (#1239, #1263, #1316, #1321).
  • Fixed SDLManager.stop crashes in certain circumstances (#1268).

See all the changes and the changelog.

This release is made up of 215 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @t-yoshii, and @justingluck93.

v6.2.3 - Lock Screen Related Crashes Fixed -

This release fixes lock screen related crashes if SDL is set up before the app's main window exists. This removes the exception created in v6.2.2.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Bug Fixes

  • Fix lock screen related crashes and remove an exception. (#1258).

See all the changes and the changelog.

This release is made up of 5 commits. Thanks to @joeljfischer.

v6.2.2 - Clarify SDL Startup Timing -

This release adds a clarification on a possible crash. SDL must be started after the app's window is setup or else an exception will be thrown.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

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 (#1255).

See all the changes and the changelog.

This release is made up of 4 commits. Thanks to @joeljfischer.

v6.2.1 - Lock Screen and Audio Stream Hotfixes -

NOTE: There is an issue in this release that will cause a crash if your app starts SDL before setting up it's UIWindow. This is a very rare case. If this is the case for you, please alter your app to start SDL only after your UIWindow is setup. This will be made more explicit in a future release.


This release adds a few bug fixes. The primary bug fixes are rotation fixes when using the lock screen and backgrounding fixes when using the navigation audio stream.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

Bug Fixes

  • Fixed the audio service being stopped when the navigation app is in HMI_BACKGROUND (#1235).
  • Fix setting up the lock screen window causing rotation issues (#1250).

Example App

  • The example apps will now auto-reconnect if disconnected physically from the head unit (#1172, #1237, #1243).
  • Update the example swift app to Swift 5 (#1245).

See all the changes and the changelog.

This release is made up of 27 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, and @justingluck93.

v6.2.0 - App Services and Many Fixes -

This release adds many important bug fixes. It is strongly recommended to update to this release. It also adds support for App Services via RPCs, the ability to block head units by RPC or Protocol version, a backgrounding string for video streaming navigation apps, and more small features.

Remember that some features only work on head units that support that feature.

Specs Supported

Change Highlights

Enhancements

  • Added a screen informing the user what they must do if a video streaming app is not in the foreground on their mobile device (#1058).
  • Added SDLLifecycleConfiguration properties for enforcing minimum protocolVersion and rpcVersion connections to head units, effectively blocking older head units as desired (#1142).
  • Added RPC support for app services, including all three current app service types: media, weather, and navigation (#1147, #1148, #1162).
  • Added automatic updates and caching to the System Capability Manager for v5.1+ head units (#1212).

Bug Fixes

  • Fixed IAP-Bluetooth to IAP-USB transport switching (#1079).
  • Fixed an issue where the manager would attempt to reconnect even if the head unit unregistered the app for a reason where the app should not reconnect (#1084, #1097).
  • Improved RTC video streaming resumption (#1137).
  • Added more informative exception on creation of an invalid SDLSoftButtonState (#1126).
  • Fixed numerous crashes in RELEASE builds when connected to head units that are providing invalid data (DEBUG builds will continue to crash unless the log configuration is altered to disable those assertions in DEBUG as well) (#1153, #1159, #1161, #1198, #1218, #1230).
  • Fixed Swift 4.2 support in SDLPermissionManager by removing some SDLBool specifier protocols from NSNumber callbacks in NSDictionary (#1190).
  • Fix calling single tap callback checks for the hit view in the SDLTouchManager from a background thread. The callback itself will continue to occur on a background thread until the next major version change (#1207).

See all the changes and the changelog.

This release is made up of 390 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @BrettyWhite, @mvyrko, and @justingluck93.

v6.1.2 - Bug Fixes -

Bug Fixes

v6.1.1 -

Bug Fixes

  • Fix possible crash when checking text fields in the screen manager (#1122).
  • Fix possible crash when checking language field of RegisterAppInterfaceResponse in SDLLifecycleManager (#1127).

See all the changes, and the changelog.

v6.1.0 - Choice Set Manager -

This release updates to support RPC spec 5.0.0. It also adds a Choice Set Manager that exposed through the SDLScreenManager introduced in v.5.2.0.

Remember that some features only work on head units that support that feature.

Specs Supported

Changelog

Enhancements

  • PlayPause button name has been added for subscription #246.
  • Added the ability to play an audio file (such as a jingle) through TTSChunk, which may be used in an Alert or Speak RPC, for example [SDL-0014] #524.
  • Added CRC checksums to data transfers (such as images or files) and automatic retrying of failed transfers, customizable via a new SDLFileManagerConfiguration [SDL-0037] #599 #1013 [SDL-0191] #1043.
  • Added the ability for app icons to appear on the head unit without data being transferred after the first connection [SDL-0041] #600.
  • Added the ability to send an image as "template", this is a single color image that can be re-colored by the head unit automatically to fit with the background. e.g. on a white background the image will appear black, and on a black background, white [SDL-0062] #626.
  • Added a displayName parameter to displayCapabilities and deprecate displayType [SDL-0063] #627.
  • Added new vehicle data: Fuel Range [SDL-0072] #641, Engine Oil Life [SDL-0082] #706, Electronic Park Brake Status [SDL-0102] #761, Tire Pressure [SDL-0097] #748, and Turn Signal [SDL-0107] #791.
  • Add the ability for submenu menu cells to have icons [SDL-0085] #719.
  • Add new vehicle capabilities that can be remotely controlled by an application: Seat Controls [SDL-0105] #792, lights, display settings, and additional audio capabilities [SDL-0099] #755, [SDL-0165] #954, [SDL-0182] #1022.
  • Add the ability to check the status of remote control modules [SDL-0106] #800, [SDL-0172] #990.
  • Add the ability to modify the play / pause button to show either play, pause, stop, or play / pause [SDL-0109] #892.
  • Support both USB / BT and WiFi transports simultaneously when streaming video on supported head units [SDL-0141] #900.
  • Allow apps to alter template primary, secondary, and tertiary colors while connected to a supported head unit through the RegisterAppInterface and SetDisplayLayout APIs [SDL-0147] #909.
  • Allow checking for the availability of a secondary graphic [SDL-0151] #917.
  • Support short and full appIds [SDL-0153] #942.
  • Allow Perform Interaction Choice Set Choices to not include voice commands [SDL-0064] #943.
  • Add a choice set manager to assist in presenting choice set menus and keyboard interactions [SDL-0157] #970.
  • Add an enum for static icons [SDL-0159] #944.
  • Update TCP transport for production #946.
  • Separate SDL example app code better #1056.

Bug Fixes

  • TCP transport failure is now reported via a notification #911.
  • The Obj-C and Swift example apps can now run without crashing without cleaning #981.
  • Swift Cocoapods subspec will now properly download lock screen assets #1026.
  • The SDLLockScreenConfiguration showInOptionalState being true was not properly preventing dismissal of the lock screen #1070.
  • Fix possible crashes in SDLAsynchronousRPCOperation on cancellation of operations #1076.
  • Fix can't get CarWindow rootViewController #1100.
  • Fix setting CarWindow rootViewController not on main thread #1101.
  • Add audio transcode files to default log module map #1103.

See all the changes and the changelog.

This release is made up of 459 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @piyushkhosla, @mrapitis, @shoamano83, @Lievesley, @t-yoshii, @kshala-ford .

v6.1.0 Release Candidate 2 -

See the changelog for full release notes.

v6.1.0 Release Candidate 1 -

See the changelog for full release notes.

v6.0.2 - Bug Fixes -

  • Video streaming apps put into a phone background state can now properly stop the video streaming when it leaves a streamable HMI state. (#1047)

v6.0.1 - Bug Fixes -

Bug Fixes

  • Fixes crash that can occur when the head unit sends "-1" for unregisteredAppInterface (#998)
  • Fixes soft buttons sent via RPC disappearing when the display layout changes (#1000)

See all the changes, and the changelog.

v.6.0.0 – Bye Bye SDLProxy -

This feature removes SDLProxy, SDLProtocol, SDLTransport, and related classes from being public. It also adds a Menu Manager that exposed through the SDLScreenManager introduced in v.5.2.0.

Notable Changes

Breaking Changes

  • Remove SDLProxy, SDLProtocol, SDLTransport and related classes and protocols. [SDL-0016] #454 [SDL-0017] #525 [SDL-0019] #603

Enhancements

  • Add API documentation #97
  • Added a Swift example app and expanded the Obj-C example app. #620
  • Add System Capability Manager, allowing easier observance of capability changes. [SDL-0088] #916
  • Add Menu Manager, making setting a menu (AddCommand / AddSubmenu) much simpler. [SDL-0155] #927

Bug Fixes

  • Fix CarWindow api should allow app to manually set screen resolution by exposing protocol that should have been exposed. #908
  • Fix notification of hmiLevel change when it has not changed. #918
  • Fix SDLCarWindow does not send video after reconnection when lock screen is disabled. #937
  • Fix Screen Manager images not sent on reconnection. #953
  • Fix custom log modules in Swift. #962
  • Speeds up video streaming resets when app goes from background -> foreground on the phone. #979

See all the changes and the changelog.

This release is made up of 257 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @kshala-ford, and @t-yoshii.

v6.0.0 Release Candidate 2 -

See the changelog for full release notes.

v6.0.0 Release Candidate 1 -

See the changelog for full release notes.

v.5.2.0 - Screen Manager -

This release adds a new SDLScreenManager which enables easier use of (so far) text, graphics, and soft buttons. Access it through the screenManager property on SDLManager.

Enhancements

  • Add a screen manager which currently handles text, graphics, and soft buttons [SDL-0134] #862
    • Add soft button object and states, which allow for declaratively designing soft buttons with multiple states
  • You can now create an SDLArtwork without a name and a name will be generated based on a hash of the data. You can also now upload an artwork through SDLFileManager and have uploaded artwork names passed back to you [SDL-0124] #865
  • You can now batch send RPCs either as a batch, or sequentially, waiting for the previous RPC request to respond before sending the next one. This may be useful for batch sending addCommands or for sending a performInteraction immediately after the createInteraction finishes [SDL-0087] #723
  • There is now a change registration manager for managing language [SDL-0054] #617

Bug Fixes

  • (Navigation / Projection Apps) Fix single taps often being recognized as a pan; there is now a customizable threshold at which pans will be registered; it defaults to 8px #884
  • Fixed crash when using log files #872
  • Fix SDLUploadFileOperation not finishing on error #860
  • Work around a module ListFiles bug on previous SDL Core versions #827

See all the changes and the changelog.

This release is made up of 188 commits. Thanks to contributors @joeljfischer, @NicoleYarroch, @kshala-ford, @t-yoshii, @Lievesley, @shoamano83.

v5.1.1 - CocoaPods fix & release -

Bug Fixes

  • Fixed an import to allow for CocoaPods release

See all the changes, and the changelog.

v5.1.0 - Automatic Video Streaming -

This release makes significant feature additions around video and audio streaming for NAVIGATION and PROJECTION applications. There are additional fixes and additions for all applications.

Enhancements

  • Log unsuccessful RPC responses automatically.
  • IAP Transport reconnection optimizations.
  • Adds SDLAudioStreamManager that does on-the-fly transcoding of audio files to an SDL compatible PCM format and can send that audio to be played. This is for NAVIGATION applications only.
  • CarWindow automated ViewController based streaming.

Bug Fixes

  • Fix SDLSlider initializer infinite recursion.
  • Fix crash if disconnected while setting up the app icon.

See all the changes, and the changelog.

This release is made up of 124 commits. Thanks to contributors @joeljfischer and @NicoleYarroch.

v4.7.5 - Minor iAP and Streaming Fixes -

This release makes minor updates and fixes. See all the changes, and the changelog.

This release is made up of 9 commits. Thanks to contributors @joeljfischer and @NicoleYarroch.

Bug Fixes

  • Fixed looping infinite iAP transport causing crashes.
  • Fixed SDLStreamingMediaManager using reversed width / height in its screenSize.

v5.0.0 – Modernized API -

This release makes breaking changes and enhancements to your SDL workflow. See all the changes, and the changelog. See the news post for some code examples of what's new!

The guides have been totally updated and new functionality has been covered in new guides. Check out the guide to update from pre-v4.3 to v4.3+ and from v4.3+ to v5.0.

This release is made up of 736 commits. Thanks to contributors @brettywhite, @ChrisB-Elektrobit, @cromotron, @harisheb, @joeljfischer, @mrapitis, @NicoleYarroch, @piyushkhosla, @Rconroy, @shoamano83, Takamitsu Yoshii, and William Wallace.

Breaking Changes

  • SDLProxy.streamingMediaManager is now removed. If you wish to use a streaming media manager, you must use SDLManager.streamingMediaManager. The streaming media manager has been entirely redesigned and now takes into account both phone and head unit app lifecycles SDL-0033. There is now a streaming media configuration added to SDLConfiguration.
  • SDLJingle constants have been removed #7.
  • Public files SDLJsonEncoder.h, SDLJsonDecoder.h, SDLDecoder.h, and SDLEncoder.h have been removed #8.
  • SDLSiphonServer has been removed; if something similar is needed, it may be custom built and inserted into the SDLLogManager #85.
  • RPC array and dictionary properties are now immutable #152.
  • SDLOnWaypointChange, a misspelling of SDLOnWayPointChange has been removed #489.
  • SDLRPCStruct and all RPC subclasses now take an immutable dictionary to decode #122 SDL-0005, SDL-0005.
  • SDL enums are now all stringly typed in Objective-C, and swift enums in Swift #20 SDL-0006.
  • iOS 6 and iOS 7 are no longer supported SDL-0008 SDL-0024.
  • Use nullability annotations throughout the project #73 SDL-0018.
  • Remove SDLRPCRequestFactory, initializers now exist on most RPC classes SDL-0020.
  • SDLTTSChunkFactory was removed, use the initializers on SDLTTSChunk instead SDL-0021.
  • Handler events now provide better parameters instead of generic ones SDL-0027.

Enhancements

  • Most properties are now nonatomic, which should speed up the library significantly #49.
  • SDLLockScreenViewController now uses template images, reducing the size of the library #450.
  • RPC classes now conform to NSCopying SDL-0011.
  • Added convenience methods for pulling out SDL notifications from NSNotification callbacks #553.
  • SDLTouchManager now supports gesture cancellation #673.
  • SDLStreamingMediaManager now supports automatic GetSystemCapability calls #686.
  • SDLRegisterAppInterfaceResponse fixed pcmCapabilities not being exposed #714.
  • Generics have been added for collections throughout the library SDL-0007.
  • SDLFileManager will not stream from a file on disk if possible SDL-0025.
  • SDLFileManager added methods for sending multiple files in one call SDL-0029.
  • Added additional SDLManager delegate methods for all onHMIStatus state changes SDL-0032.
  • Added a handler to SDLPerformAudioPassThru SDL-0035.
  • SDLStreamingMediaManager now supports H.264 + RTP SDL-0048.
  • Added SDL Remote Control baseline SDL-0071.
  • Focusable items can now be sent (to Core 4.4+) and a manager exists that will automatically handle finding and sending those rects if a UIWindow is set in the SDLStreamingMediaConfiguration. They will also be passed back to the developer through the SDLTouchManagerDelegate SDL-0075 SDL-0081 SDL-0090.

Bug Fixes

  • Services are now properly ended with hash ids #661.
  • Constants are now unified into one style #711.
  • Fix streaming media manager always assumed 30fps streaming; it can now be custom set by developers in the video encoding dictionary #717.
  • Fix a possible crash if the List Files request from the FileManager fails due to disconnection or unregistration #789.

Other

  • SDL constants are now constants instead of #define #3.
  • Some protocol property and enum names were incorrect but now fixed #275.
  • Internal getters and setters on RPC classes no longer repeat code everywhere #493.
  • SDLOnLockScreenStatus does not use constants for property keys #497.
  • Removed deprecated methods #679.

v5.0.0 Release Candidate 3 -

Bug Fixes

  • Fix a possible crash if the List Files request from the FileManager fails due to disconnection or unregistration.