If you’ve previously developed applications using the DeviceInfo API for Philips TVs, migrating to the Titan SDK is the next step toward future-proofing your app for upcoming platforms. This guide provides a clear path to update your code and ensure compatibility across the expanded Titan OS ecosystem.

Why migrate to Titan SDK?

The legacy DeviceInfo API was limited:
  • Brand-specific (Philips only)
  • Restricted set of functionalities
The new Titan SDK offers significant advantages:
  • Unified Development: Write your code once and run it consistently across all supported Titan OS-powered TVs.
  • New functionalities: Gain access to features like Accessibility (Text-to-Speech, Text Magnification) and App Control.
  • Future-Proofing: The Titan SDK will continue to evolve with new capabilities and updates, while the DeviceInfo API will not be maintained from now and removed by the end of the year.

Step-by-Step Migration Guide

1

Remove Old DeviceInfo references

Remove any script references to the old DeviceInfo API from your index.html or build process to avoid accidental reliance on the deprecated object.
2

Add the Titan SDK reference

    <script src="https://sdk.titanos.tv/sdk/sdk.js"></script>
It should create the TitanSDK as global variable.
    const titanSDK = TitanSDK;
    console.log(titanSDK);
3

Update Device and Capability Information

Replace all instances where you accessed properties directly from the global DeviceInfo object. Instead, use the TitanSDK.deviceInfo.getDeviceInfo() method.Old Way:
    // Old DeviceInfo API
const modelYear = DeviceInfo.Product.year;
const hasHDR = DeviceInfo.Capability.supportHDR;

if (modelYear === "2023" && hasHDR) {
// ...
}
New Way:
    // New Titan SDK
const deviceInfo = await TitanSDK.deviceInfo.getDeviceInfo();

const modelYear = deviceInfo.Product.year;
const hasHDR = deviceInfo.Capability.supportHDR_DV;

if (modelYear === "2023" && hasHDR) {
// ...
}
4

Test Your Migrated Application

Thoroughly test your application on various TVs powered or maintained by Titan OS to ensure all functionalities work as expected post-migration. Pay close attention to:
  • All device information calls returning correct data.
  • Features that relied on old DeviceInfo properties.
  • New SDK features you’ve integrated.
5

Start integrating and exploring new features, such as Accessibility, App Control

With the Titan SDK integrated, begin exploring and implementing its new functionalities:
  • Accessibility: Utilize TitanSDK.accessibility.isTTSSupported(), TitanSDK.accessibility.startSpeaking(), TitanSDK.accessibility.onTTSSettingsChange() and other methods as detailed in the Accessibility Guide for TitanSDK Apps.
  • App Control: Leverage TitanSDK.apps.launch() for streamlined app-to-app interactions.
  • Remote Control: Refer to the Remote Control & Key Handling section for unified key mapping.

Migration Map: DeviceInfo API → Titan SDK

Here is a mapping of common DeviceInfo API properties and their Titan SDK equivalents:
Old DeviceInfo PropertyNew Titan SDK Equivalent (Function & Key)Notes & Example
DeviceInfo.Channel.vendorawait TitanSDK.deviceInfo.getDeviceInfo().Channel.vendorRetrieves the vendor name of the device.
DeviceInfo.Channel.brandawait TitanSDK.deviceInfo.getDeviceInfo().Channel.brandRetrieves the brand name of the device.
DeviceInfo.Product.platformawait TitanSDK.deviceInfo.getDeviceInfo().Product.platformAccesses the device’s platform name.
DeviceInfo.Product.yearawait TitanSDK.deviceInfo.getDeviceInfo().Product.yearRetrieves the model year of the device. Example: const info = await TitanSDK.deviceInfo.getDeviceInfo(); console.log(info.Product.year);
DeviceInfo.Product.deviceIDawait TitanSDK.deviceInfo.getDeviceInfo().Product.deviceIDRetrieves the unique device identifier.
DeviceInfo.Product.firmwareVersionawait TitanSDK.deviceInfo.getDeviceInfo().Product.firmwareVersionAccesses the firmware version of the device.
DeviceInfo.Product.WhaleAdIDawait TitanSDK.deviceInfo.getDeviceInfo().Product.WhaleAdIDRetrieves the advertising ID.
DeviceInfo.Product.firmwareComponentIDawait TitanSDK.deviceInfo.getDeviceInfo().Product.firmwareComponentIDAccesses the firmware component identifier.
DeviceInfo.Capability.osawait TitanSDK.deviceInfo.getDeviceInfo().Capability.osRetrieves the operating system name.
DeviceInfo.Capability.browserEngineawait TitanSDK.deviceInfo.getDeviceInfo().Capability.browserEngineAccesses the browser engine used by the device.
DeviceInfo.Capability.hasStorageawait TitanSDK.deviceInfo.getDeviceInfo().Capability.hasStorageChecks if the device has persistent storage.
DeviceInfo.Capability.support3dawait TitanSDK.deviceInfo.getDeviceInfo().Capability.support3dChecks for 3D content support.
DeviceInfo.Capability.supportUHDawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportUHDChecks for Ultra High Definition (UHD) display support.
DeviceInfo.Capability.supportHDRawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportHDRChecks for High Dynamic Range (HDR) display support. (Note: New TitanSDK also provides supportHDR_HDR10 and supportHDR_DV for more specific checks.)
DeviceInfo.Capability.supportWebSocketawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportWebSocketChecks for WebSocket protocol support.
DeviceInfo.Capability.supportPlayreadyawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportPlayreadyChecks for Microsoft PlayReady DRM support.
DeviceInfo.Capability.supportWidevineModularawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportWidevineModularChecks for Google Widevine Modular DRM support.
DeviceInfo.Capability.supportWidevineClassicawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportWidevineClassicChecks for Google Widevine Classic DRM support.
DeviceInfo.Capability.supportClearKey-This property does not appear in the new TitanSDK’s capability response. Please verify if still needed or if there’s an alternative.
DeviceInfo.Capability.supportPrimetime-This property does not appear in the new TitanSDK’s capability response. Please verify if still needed or if there’s an alternative.
DeviceInfo.Capability.supportFairplay-This property does not appear in the new TitanSDK’s capability response. Please verify if still needed or if there’s an alternative.
DeviceInfo.Capability.supportAdobeHDSawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportAdobeHDSChecks for Adobe HTTP Dynamic Streaming support.
DeviceInfo.Capability.supportAppleHLSawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportAppleHLSChecks for Apple HTTP Live Streaming support.
DeviceInfo.Capability.supportMSSmoothStreamingawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportMSSmoothStreamingChecks for Microsoft Smooth Streaming support.
DeviceInfo.Capability.supportMSSInitiatorawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportMSSInitiatorChecks for Microsoft Smooth Streaming Initiator support.
DeviceInfo.Capability.supportMPEG_DASHawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportMPEG_DASHChecks for MPEG-DASH streaming support.
DeviceInfo.Capability.drmMethodawait TitanSDK.deviceInfo.getDeviceInfo().Capability.drmMethodRetrieves the primary DRM method used by the device.
DeviceInfo.Capability.supportOIPFawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportOIPFChecks for Open IPTV Forum (OIPF) support.
DeviceInfo.Capability.supportEMEawait TitanSDK.deviceInfo.getDeviceInfo().Capability.supportEMEChecks for Encrypted Media Extensions (EME) support.

Common Migration Scenarios & Troubleshooting

Asynchronous Nature: Remember that almost all interactions with the Titan SDK are asynchronous. Always use async/await or .then().catch() for proper handling of returned Promises. User Agent Differences: While the SDK provides a unified interface, minor differences in the User Agent string might still exist between device brands. If your application relies on User Agent parsing, ensure it’s robust enough to handle variations as detailed on the https://docs.titanos.tv/user-agents.

Next steps