Registers the application’s interface with SDL. The RegisterAppInterface
RPC declares the properties of the app, including the messaging interface version, the app name, etc. The mobile application must establish its interface registration with SDL before any other interaction with SDL can take place. The registration lasts until it is terminated either by the application calling the SDLUnregisterAppInterface
method, or by SDL sending an SDLOnAppInterfaceUnregistered
notification, or by loss of the underlying transport connection, or closing of the underlying message transmission protocol RPC session.
Until the application receives its first SDLOnHMIStatus
notification, its SDLHMILevel
is assumed to be NONE
, the SDLAudioStreamingState
is assumed to be NOT_AUDIBLE
, and the SDLSystemContext
is assumed to be MAIN
.
All SDL resources which the application creates or uses (e.g. choice sets, command menu, etc.) are associated with the application’s interface registration. Therefore, when the interface registration ends, the SDL resources associated with the application are disposed of. As a result, even though the application itself may continue to run on its host platform (e.g. mobile device) after the interface registration terminates, the application will not be able to use the SDL HMI without first establishing a new interface registration and re-creating its required SDL resources. That is, SDL resources created by (or on behalf of) an application do not persist beyond the life-span of the interface registration. Resources and settings whose lifespan is tied to the duration of an application’s interface registration include: choice sets, command menus, and the media clock timer display value
If the application intends to stream audio it is important to indicate so via the isMediaApp
parameter. When set to true, audio will reliably stream without any configuration required by the user. When not set, audio may stream, depending on what the user might have manually configured as a media source on SDL.
@since SDL 1.0
See
SDLUnregisterAppInterface, SDLOnAppInterfaceUnregisteredConvenience init for registering the application with a lifecycle configuration.
- (nonnull instancetype)initWithLifecycleConfiguration:
(nonnull SDLLifecycleConfiguration *)lifecycleConfiguration;
init(lifecycleConfiguration: SDLLifecycleConfiguration)
Configuration options for SDLManager
Convenience init for registering the application with an app name, app id, and desired language.
- (nonnull instancetype)initWithAppName:(nonnull NSString *)appName
appId:(nonnull NSString *)appId
languageDesired:(nonnull SDLLanguage)languageDesired;
init(appName: String, appId: String, languageDesired: SDLLanguage)
The mobile application’s name
An appId used to validate app with policy table entries
The language the application intends to use for user interaction
A SDLRegisterAppInterface object
Convenience init for registering the application with all possible options.
- (nonnull instancetype)
initWithAppName:(nonnull NSString *)appName
appId:(nonnull NSString *)appId
fullAppId:(nullable NSString *)fullAppId
languageDesired:(nonnull SDLLanguage)languageDesired
isMediaApp:(BOOL)isMediaApp
appTypes:(nonnull NSArray<SDLAppHMIType> *)appTypes
shortAppName:(nullable NSString *)shortAppName
ttsName:(nullable NSArray<SDLTTSChunk *> *)ttsName
vrSynonyms:(nullable NSArray<NSString *> *)vrSynonyms
hmiDisplayLanguageDesired:(nonnull SDLLanguage)hmiDisplayLanguageDesired
resumeHash:(nullable NSString *)resumeHash
dayColorScheme:(nullable SDLTemplateColorScheme *)dayColorScheme
nightColorScheme:
(nullable SDLTemplateColorScheme *)nightColorScheme;
init(appName: String, appId: String, fullAppId: String?, languageDesired: SDLLanguage, isMediaApp: Bool, appTypes: [SDLAppHMIType], shortAppName: String?, ttsName: [SDLTTSChunk]?, vrSynonyms: [String]?, hmiDisplayLanguageDesired: SDLLanguage, resumeHash: String?, dayColorScheme: SDLTemplateColorScheme?, nightColorScheme: SDLTemplateColorScheme?)
The mobile application’s name
An appId used to validate app with policy table entries
A full UUID appID used to validate app with policy table entries.
The language the application intends to use for user interaction
Indicates if the application is a media or a non-media application
A list of all applicable app types stating which classifications to be given to the app
An abbreviated version of the mobile application’s name
TTS string for VR recognition of the mobile application name
Additional voice recognition commands
Current app’s expected VR+TTS language
ID used to uniquely identify current state of all app data that can persist through connection cycles
The color scheme to be used on a head unit using a “light” or “day” color scheme.
The color scheme to be used on a head unit using a “dark” or “night” color scheme
A SDLRegisterAppInterface object
Specifies the version number of the SmartDeviceLink protocol that is supported by the mobile application.
SDLMsgVersion, Required
@since SDL 1.0
@property (nonatomic, strong) SDLMsgVersion *_Nonnull sdlMsgVersion;
var sdlMsgVersion: SDLMsgVersion { get set }
The mobile application’s name. This name is displayed in the SDL Mobile Applications menu. It also serves as the unique identifier of the application for SmartDeviceLink. Applications with the same name will be rejected.
String, Required, Max length 100 chars
@since SDL 1.0
@property (nonatomic, strong) NSString *_Nonnull appName;
var appName: String { get set }
Text-to-speech string for voice recognition of the mobile application name. Meant to overcome any failing on speech engine in properly pronouncing / understanding app name.
Array of SDLTTSChunk, Optional, Array size 1 - 100
@since SDL 2.0
@property (nonatomic, strong, nullable) NSArray<SDLTTSChunk *> *ttsName;
var ttsName: [SDLTTSChunk]? { get set }
Provides an abbreviated version of the app name (if needed), that will be displayed on head units that support very few characters. If not provided, the appName is used instead (and will be truncated if too long). It’s recommended that this string be no longer than 5 characters.
Legacy head units may limit the number of characters in an app name.
String, Optional, Max length 100 chars
@since SDL 1.0
@property (nonatomic, strong, nullable) NSString *ngnMediaScreenAppName;
var ngnMediaScreenAppName: String? { get set }
Defines additional voice recognition commands
@discussion May not interfere with any app name of previously registered applications and any predefined blacklist of words (global commands).
Array of Strings, Optional, Array length 1 - 100, Max String length 40
@since SDL 1.0
@property (nonatomic, strong, nullable) NSArray<NSString *> *vrSynonyms;
var vrSynonyms: [String]? { get set }
Indicates if the application is a media or a non-media application. Media applications will appear in the head unit’s media source list and can use the MEDIA
template.
Boolean, Required
@since SDL 1.0
@property (nonatomic, strong) NSNumber<SDLBool> *_Nonnull isMediaApplication;
var isMediaApplication: NSNumber & SDLBool { get set }
App’s starting VR+TTS language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
SDLLanguage, Required
@since SDL 1.0
@property (nonatomic, strong) SDLLanguage _Nonnull languageDesired;
var languageDesired: SDLLanguage { get set }
Current app’s expected display language. If there is a mismatch with the head unit, the app will be able to change its language with ChangeRegistration prior to app being brought into focus.
SDLLanguage, Required
@since SDL 2.0
@property (nonatomic, strong) SDLLanguage _Nonnull hmiDisplayLanguageDesired;
var hmiDisplayLanguageDesired: SDLLanguage { get set }
List of all applicable app HMI types stating which HMI classifications to be given to the app.
Array of SDLAppHMIType, Optional, Array size 1 - 100
@since SDL 2.0
@property (nonatomic, strong, nullable) NSArray<SDLAppHMIType> *appHMIType;
var appHMIType: [SDLAppHMIType]? { get set }
ID used to uniquely identify a previous state of all app data that can persist through connection cycles (e.g. ignition cycles). This registered data (commands, submenus, choice sets, etc.) can be reestablished without needing to explicitly re-send each piece. If omitted, then the previous state of an app’s commands, etc. will not be restored.
When sending hashID, all RegisterAppInterface parameters should still be provided (e.g. ttsName, etc.).
String, Optional, max length 100 chars
@since SDL 3.0
@property (nonatomic, strong, nullable) NSString *hashID;
var hashID: String? { get set }
Information about the connecting device.
SDLDeviceInfo, Optional
@since SDL 3.0
@property (nonatomic, strong, nullable) SDLDeviceInfo *deviceInfo;
var deviceInfo: SDLDeviceInfo? { get set }
ID used to validate app with policy table entries.
String, Required, max length 100
See
fullAppID
@since SDL 2.0
@property (nonatomic, strong) NSString *_Nonnull appID;
var appID: String { get set }
A full UUID appID used to validate app with policy table entries.
@discussion The fullAppId
is used to authenticate apps that connect with head units that implement SDL Core v.5.0 and newer. If connecting with older head units, the fullAppId
can be truncated to create the required appId
needed to register the app. The appId
is the first 10 non-dash (“-”) characters of the fullAppID
(e.g. if you have a fullAppId
of 123e4567-e89b-12d3-a456-426655440000, the appId
will be 123e4567e8).
String, Optional
@since SDL 5.0
@property (nonatomic, strong, nullable) NSString *fullAppID;
var fullAppID: String? { get set }
Contains detailed information about the registered application.
SDLAppInfo, Optional
@since SDL 4.2
@property (nonatomic, strong, nullable) SDLAppInfo *appInfo;
var appInfo: SDLAppInfo? { get set }
The color scheme to be used on a head unit using a “light” or “day” color scheme. The OEM may only support this theme if their head unit only has a light color scheme.
SDLTemplateColorScheme, Optional
@since SDL 5.0
@property (nonatomic, strong, nullable) SDLTemplateColorScheme *dayColorScheme;
var dayColorScheme: SDLTemplateColorScheme? { get set }
The color scheme to be used on a head unit using a “dark” or “night” color scheme. The OEM may only support this theme if their head unit only has a dark color scheme.
SDLTemplateColorScheme, Optional
@since SDL 5.0
@property (nonatomic, strong, nullable) SDLTemplateColorScheme *nightColorScheme;
var nightColorScheme: SDLTemplateColorScheme? { get set }