Launch App on TV¶
Many TVs and streaming players include support for launching installed apps. The following is a simplified example of how to launch YouTube on a device.
Launch an app¶
[_device.launcher launchApp:@"YouTube" success:^(LaunchSession *launchSession) {
NSLog(@"app launch success");
} failure:^(NSError *error) {
NSLog(@"app launch error: %@", error.localizedDescription);
}];
Device-specific app identifiers¶
On each device (webOS TV, Roku, etc) apps are identified by different values. Here is an example of the different identifiers in use for the YouTube app.
- webOS: youtube.leanback.v4 (value may change with future updates)
- Netcast: 0000000000017498 (value may be different on each TV)
- DIAL: YouTube (listed in DIAL registry)
- Roku: 837 (Roku-specific channel number)
Launching an app with device-specific identifiers¶
The following snippet shows how to detect the platform of your device and launch with the appropriate app identifier.
NSString *appId;
if ([_device serviceWithName:@"webOS TV"])
appId = @"youtube.leanback.v4";
else if ([_device serviceWithName:@"Netcast TV"])
appId = @"0000000000017498";
else if ([_device serviceWithName:@"Roku"])
appId = @"837";
else if ([_device serviceWithName:@"DIAL"])
appId = @"YouTube";
if (!appId)
return;
AppInfo *appInfo = [AppInfo appInfoForId:appId];
appInfo.name = @"YouTube";
[_device.launcher launchAppWithInfo:appInfo success:^(LaunchSession *launchSession) {
NSLog(@"app launch success");
} failure:^(NSError *error) {
NSLog(@"app launch error: $@", error.localizedDescription);
}];
AppInfo helper object¶
You will notice that the previous example refers to an AppInfo object. This object is used internally by Connect SDK to manage an app’s protocol-specific properties. If a device supports app list, the app list will return a set of AppInfo objects for each app installed on the TV.
Launching an app with parameters¶
In most cases, a device’s launcher object will allow you to pass launch parameters to your app. Connect SDK has normalized the parameter input type to a keyed set of values. These values are then parsed into the appropriate format for the protocol (XML, JSON, URL params, etc).
NSDictionary *params = @{
@"someProperty" : @"someValue"
};
[_device.launcher launchAppWithInfo:appInfo params:params success:^(LaunchSession *launchSession) {
NSLog(@"app launch success");
} failure:^(NSError *error) {
NSLog(@"app launch error: $@", error.localizedDescription);
}];
Note
Due to the variety of protocols in use, it is strongly recommended that you only use strings for the keys AND values of your parameters.