Mobile navigation allows map partners to easily display their maps as well as present visual and audio turn-by-turn prompts on the head unit.
Navigation apps have different behavior on the head unit than normal applications. The main differences are:
The basic connection setup is similar for all apps. Please follow the Integration Basics guide for more information.
In order to create a navigation app an
SDLAppHMITypeNavigation must be set in the
The second difference is that a
SDLStreamingMediaConfiguration must be created and passed to the
SDLConfiguration. A property called
securityManagers must be set if connecting to a version of Core that requires secure video and audio streaming. This property requires an array of classes of security managers, which will conform to the
SDLSecurityType protocol. These security libraries are provided by the OEMs themselves, and will only work for that OEM. There is no general catch-all security library.
SDLLifecycleConfiguration* lifecycleConfig = [SDLLifecycleConfiguration defaultConfigurationWithAppName:@"<#App Name#>" fullAppId:@"<#App Id#>"]; lifecycleConfig.appType = SDLAppHMITypeNavigation; SDLEncryptionConfiguration *encryptionConfig = [[SDLEncryptionConfiguration alloc] initWithSecurityManagers:@[OEMSecurityManager.self] delegate:self]; SDLStreamingMediaConfiguration *streamingConfig = [SDLStreamingMediaConfiguration secureConfiguration]; SDLConfiguration *config = [[SDLConfiguration alloc] initWithLifecycle:lifecycleConfig lockScreen:[SDLLockScreenConfiguration enabledConfiguration] logging:[SDLLogConfiguration defaultConfiguration] streamingMedia:streamingConfig fileManager:[SDLFileManagerConfiguration defaultConfiguration] encryption:encryptionConfig];
let lifecycleConfig = SDLLifecycleConfiguration(appName: "<#App Name#>", fullAppId: "<#App Id#>") lifecycleConfig.appType = .navigation let encryptionConfig = SDLEncryptionConfiguration(securityManagers: [OEMSecurityManager.self], delegate: self) let streamingConfig = SDLStreamingMediaConfiguration.secure() let config = SDLConfiguration(lifecycle: lifecycleConfig, lockScreen: .enabled(), logging: .default(), streamingMedia: streamingConfig, fileManager: .default(), encryption: encryptionConfig)
When compiling your app for production, make sure to include all possible OEM security managers that you wish to support.
To present a keyboard (such as for searching for navigation destinations), you should use the
SDLScreenManager's keyboard presentation feature. For more information, see the Popup Menus and Keyboards guide.
Head units running SDL Core v.6.0+ may support navigation-specific subscription buttons for the navigation template. These subscription buttons allow your user to manipulate the map using hard buttons located on car's center console or steering wheel. It is important to support these subscription buttons in order to provide your user with the expected in-car navigation user experience. This is especially true on head units that don't support touch input as there will be no other way for your user to manipulate the map. See Subscribing to System Buttons for a list of these navigation buttons.View on GitHub.com