This document provides reference information for developers who are currently using legacy devices, our legacy API, or older versions of Firebolt®.
Feature reference
The following section provides information about feature flows across our different stacks.
User entitlements
Entitlements are handled in a similar way across all of our technology stacks. The primary difference is that our legacy stack uses the accountLink method set, while our Firebolt stack uses the Discovery module. In practice, both functions act similarly in your app.
When a user signs in to an account, you use a sign-in method to inform aggregated experiences that a user is authenticated. When a user signs out, you use the corresponding sign-out method to make sure the information is no longer used.
Additionally, you can also add an array of available entitlements with a sign-in method to inform the platform of specific programs the user has access to. If you choose not to bundle entitlements with the sign-in method, you may also use an entitlement method in the same way.
Please note that a sign-out method does not remove user entitlements. You must use the entitlement method to remove entitlements from a logged-out user.
Legacy | Scaled | EntertainmentOS | |
Version | $badger | Firebolt 0.8.1 | Firebolt 1.7.0 |
Sign-In |
Optional: |
Optional: |
Optional: |
Sign-Out |
|
Optional: |
Optional: |
Entitlement |
|
|
|
Clearing entitlements
On scaled devices, entitlements are only cleared if you call
Discovery.entitlements()with an empty array!
Deep links
Deep links are handled differently on our legacy stack compared to our EntOS stack.
With Firebolt, deep links are expressed as navigation intents, which can be received from almost any action a user takes: a voice command, an EntOS tile, or even a search result.
Unlike the system used by our legacy stack, navigation intents are far more dynamic. Your app no longer needs to parse a URL, because navigation intents tell your app both what caused the intent and where to go using just a JSON object. This allows for more specific destinations (not just content, but searches and promotional pages) and works whether your app was already open or not. If it was already open, your app will not even need to reload.
All you need to do to use navigation intents is to set up listeners in your app. Once your app has fully loaded, navigation intents can be recieved by your app and used to move directly to content. More information can be found in our Content Discovery guide.
On our legacy devices and $badger apps, deep links are appmanager links expressed as a URL (uniform resource locator) as demonstrated in the example below.
appmanager:launchApplication#appId=<providedAppId>&additionalLaunchParams=%7B%22isAsset%22%3A%22true%22%2C%22launchedFrom%22%3A%22entityPage%22%2C%22param.launchpoint%22%3A%22playback%22%2C%22param.assetId%22%3A%221059877%22%7D
This deep link is sent with metadata in the media:content attribute, and opens up a specific piece of content. Replace <providedAppId> with your appId. Comcast will assign your organization an appId when your app is registered on the developer portal.
Authentication tokens
On EntertainmentOS, authentication tokens are managed through individual Authentication methods. Our scaled devices cannot use these calls, so you must call the Authentication.token() method instead to manage tokens. The table below maps the current call to the original token type.
Scaled | EntertainmentOS | |
Version | Firebolt 0.8.1 | Firebolt 1.7.0 |
Platform Token |
|
|
Device (XACT) Token |
|
|
Distributor (CIMA) Token |
|
|
Legacy replacement calls
The following section provides replacement calls to developers transitioning X1 apps from our legacy API ($badger) to Firebolt. Unless otherwise specified, all Firebolt calls are referring to the Core SDK. Additionally, all legacy calls are prefaced with $badger..
Please note that this page does not identify Firebolt's required APIs. The required calls may be found on the Baseline Firebolt APIs page.
Authentication
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
getAppAuth().get() | N/A | This call does not exist in Firebolt. | |
getAppAuth().upsert() |
| This call does not exist in Firebolt. | |
getAppAuth().delete() | N/A | This call does not exist in Firebolt. | |
platformAuth().getToken() | N/A | Authentication.root() | N/A |
platformAuth().refreshToken() | N/A | N/A | |
platformAuth().getXact() | N/A | Authentication.device() | N/A |
getBearerToken() | N/A | Authentication.session() | N/A |
App state management
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
shutdown() | N/A | Lifecycle.close() |
|
dismissLoadingScreen() |
| Lifecycle.ready() | N/A |
active() | N/A | This call does not exist in Firebolt. | |
config() | N/A | This call does not exist in Firebolt. | |
deeplink() |
| Discovery.launch() |
|
deeplinkToCompanyPage() |
| Discovery.launch() |
|
dial().getDeviceId() | N/A | SecondScreen.device() |
|
dial().getDeviceName() | N/A | SecondScreen.friendlyName() | N/A |
dial().getPayload() | N/A | Parameters.initialization().SecondScreen.launchRequest | N/A |
dial().onLaunch() | N/A | SecondScreen.listen() |
|
Discovery & metrics
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
accountLink().appLaunch() |
| Discovery.contentAccess() |
|
accountLink().compareAppSettings() |
| This call does not exist in Firebolt. | |
accountLink().createLaunchPadTile() |
| Discovery.watchNext() |
|
accountLink().deleteLaunchPadTile() |
| This call does not exist in Firebolt. | |
accountLink().mediaEvent() |
| Discovery.watched() |
|
accountLink().signIn() |
| Discovery.signIn() |
|
accountLink().signOut() | N/A | Discovery.signOut() | N/A |
accountLink().updateEntitlements() |
| Discovery.contentAccess() [Changing Entitlements] |
|
Discovery.clearContentAccess() [Remove all Entitlements] | N/A | ||
errorMetricsHandler() |
| Metrics.error() |
|
launchCompletedMetricsHandler() | Replaced by dismissLoadingScreen | ||
pageViewMetricsHandler() |
| Metrics.page() |
|
appActionMetricsHandler() [Playback Started] |
| Metrics.startContent() |
|
appActionMetricsHandler() [Playback Stopped] |
| Metrics.stopContent() |
|
userActionMetricsHandler() |
| Metrics.action() [User Click] |
|
Metrics.action() [Other User Input] |
| ||
Metrics.action() [Other User Event] |
| ||
metricsHandler() |
| Metrics.action() |
|
userErrorMetricsHandler() |
| Metrics.error() |
|
analytics.error() |
| Metrics.error() |
|
analytics.event() |
| Metrics.action() |
|
analytics.pageView() |
| Metrics.page() |
|
analytics.userAction() | See | ||
analytics.userError() | See | ||
Events, settings, & notifications
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
userPreferences().subscribeToSettings() [Closed Captions] |
| Accessibility.listen() [Closed Captions] |
|
userPreferences().subscribeToSettings() [Voice Guidance] |
| Accessibility.listen() [Voice Guidance] |
|
userPreferences().subscribeToSettings() [Personalized Recommendations] |
| Discovery.listen() [Personalized Recommendations] |
|
userPreferences().subscribeToSettings() [Watch History] |
| Discovery.listen() [Watch History] |
|
userPreferences().subscribeToSettings() [Watch History Sharing] |
| Discovery.listen() [Watch History Sharing] |
|
userPreferences().subscribeToSettings() [Friendly Device Name] |
| Device.listen() [Friendly Device Name] |
|
userPreferences().subscribeToSettings() [Power Saving Status) |
| This call does not exist in Firebolt. | |
[Broadcast a deeplink] | N/A | Discovery.listen() |
|
userPreferences().closedCaptioning() | N/A | Accessibility.closedCaptionsSettings() | N/A |
userPreferences().voiceGuidance() | N/A | Accessibility.voiceGuidanceSettings() | N/A |
networkConnectivity() | N/A | Device.network().type | N/A |
userPreferences().setting() [Closed Captions] |
| Accessibility.closedCaptionsSettings() | N/A |
userPreferences().setting() [Voice Guidance] |
| Accessibility.voiceGuidanceSettings() | N/A |
userPreferences().setting() [Personalized Recommendations] |
| Discovery.policy().enableRecommendations | N/A |
userPreferences().setting() [Watch History] |
| Discovery.policy().rememberWatchedPrograms | N/A |
userPreferences().setting() [Watch History Sharing] |
| Discovery.policy().shareWatchHistory | N/A |
userPreferences().setting() [Friendly Device Name] |
| Device.name() | N/A |
Info
Legacy API | Firebolt API |
|---|---|
info().zipcode | Localization.postalCode() |
info().timezone | This call does not exist in Firebolt. |
info().timeZone | This call does not exist in Firebolt. |
info().receiverId | This call does not exist in Firebolt. |
info().deviceHash | Device.uid() |
info().householdId | This call does not exist in Firebolt. |
info().privacySettings.lmt | Advertising.policy().limitAdTracking |
info().privacySettings.us_privacy | |
deviceCapabilities().deviceType | Device.type() |
deviceCapabilities().nativeDimensions | Device.screenResolution() |
deviceCapabilities().webBrowser.browserType | Device.platform() |
deviceCapabilities().settopHdrSupport | Device.hdr() |
deviceCapabilities().tvHdrSupport | |
deviceCapabilities().settopHDCPVersion | Device.hdcp() |
deviceCapabilities().tvHDCPVersion | |
deviceCapabilities().videoDimensions | Device.videoResolution() |
Limit Ad Tracking policy
The
us_privacysetting is only returned inParameters.initialization(). A better method of keeping track of theus_privacysetting is through listening to thelimitAdTrackingpolicy. Learn more on our Limit Ad Tracking page.
User prompts
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
userPreferences().promptSignInEmail() |
| Keyboard.email() |
|
userPreferences().promptSignUpEmail() |
| Keyboard.email() |
|
verifyPin() |
| This call does not exist in Firebolt. | |
verifyPurchasePin() |
| This call does not exist in Firebolt. | |
showContentPinOverlay() | N/A | Profile.approveContentRating() | N/A |
showPurchasePinOverlay() | N/A | Profile.approvePurchase() | N/A |
Ad platform
Legacy API | Firebolt API |
|---|---|
adPlatform().initObject() | Advertising.config() |
adPlatform().advertisingId() | Advertising.advertisingId() |
adPlatform().limitAdTracking() | Advertising.policy().limitAdTracking |
adPlatform().deviceAdAttributes() | Advertising.deviceAttributes() |
adPlatform().appStoreId() | Advertising.appBundleId() |
Other
Legacy API | Legacy Parameter(s) | Firebolt API | Firebolt Parameter(s) |
|---|---|---|---|
callback() |
| Handled by Firebolt Transport Layer | |
showToast() |
| This call does not exist in Firebolt. | |