SecondScreen

    SecondScreen


    Article summary


    title: SecondScreen

    version: 1.0.0
    layout: default
    sdk: core

    # SecondScreen Module

    Version SecondScreen 1.0.0

    Table of Contents

    Usage

    To use the SecondScreen module, you can import it into your project from the Firebolt SDK:

    import { SecondScreen } from '@firebolt-js/sdk'
    

    Overview

    Methods for communicating with second screen devices

    Methods

    device

    Get the broadcasted id for the device

    function device(type?: string): Promise<string>
    

    Parameters:

    ParamTypeRequiredDescription
    typestringfalseThe type of second screen protocol, e.g. "dial"

    Promise resolution:

    string
    

    Capabilities:

    RoleCapability
    usesxrn:firebolt:capability:protocol:dial

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    SecondScreen.device(null)
        .then(deviceId => {
            console.log(deviceId)
        })
    

    Value of deviceId:

    "device-id"
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.device",
    	"params": {}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": "device-id"
    }
    

    friendlyName

    Get the broadcasted friendly name for the device

    To get the value of friendlyName call the method like this:

    function friendlyName(): Promise<string>
    

    Promise resolution:

    string
    

    Capabilities:

    RoleCapability
    usesxrn:firebolt:capability:protocol:dial

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    SecondScreen.friendlyName()
        .then(friendlyName => {
            console.log(friendlyName)
        })
    

    Value of friendlyName:

    "Living Room"
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.friendlyName",
    	"params": {}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": "Living Room"
    }
    

    To subscribe to notifications when the value changes, call the method like this:

    function friendlyName(callback: (value) => string): Promise<number>
    

    Promise resolution:

    number
    

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    friendlyName(value => {
      console.log(value)
    }).then(listenerId => {
      console.log(listenerId)
    })
    

    Value of friendlyName:

    "Living Room"
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.onFriendlyNameChanged",
    	"params": {
    		"listen": true
    	}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": "Living Room"
    }
    

    listen

    To listen to a specific event pass the event name as the first parameter:

    listen(event: string, callback: (data: any) => void): Promise<number>
    

    Parameters:

    ParamTypeRequiredSummary
    eventstringYesThe event to listen for, see Events.
    callbackfunctionYesA function that will be invoked when the event occurs.

    Promise resolution:

    TypeDescription
    numberListener ID to clear the callback method and stop receiving the event, e.g. SecondScreen.clear(id)

    Callback parameters:

    ParamTypeRequiredSummary
    dataanyYesThe event data, which depends on which event is firing, see Events.

    To listen to all events from this module pass only a callback, without specifying an event name:

    listen(callback: (event: string, data: any) => void): Promise<number>
    

    Parameters:

    ParamTypeRequiredSummary
    callbackfunctionYesA function that will be invoked when the event occurs. The event data depends on which event is firing, see Events.

    Callback parameters:

    ParamTypeRequiredSummary
    eventstringYesThe event that has occured listen for, see Events.
    dataanyYesThe event data, which depends on which event is firing, see Events.

    Promise resolution:

    TypeDescription
    numberListener ID to clear the callback method and stop receiving the event, e.g. SecondScreen.clear(id)

    See Listening for events for more information and examples.

    once

    To listen to a single instance of a specific event pass the event name as the first parameter:

    once(event: string, callback: (data: any) => void): Promise<number>
    

    The once method will only pass the next instance of this event, and then dicard the listener you provided.

    Parameters:

    ParamTypeRequiredSummary
    eventstringYesThe event to listen for, see Events.
    callbackfunctionYesA function that will be invoked when the event occurs.

    Promise resolution:

    TypeDescription
    numberListener ID to clear the callback method and stop receiving the event, e.g. SecondScreen.clear(id)

    Callback parameters:

    ParamTypeRequiredSummary
    dataanyYesThe event data, which depends on which event is firing, see Events.

    To listen to the next instance only of any events from this module pass only a callback, without specifying an event name:

    once(callback: (event: string, data: any) => void): Promise<number>
    

    Parameters:

    ParamTypeRequiredSummary
    callbackfunctionYesA function that will be invoked when the event occurs. The event data depends on which event is firing, see Events.

    Callback parameters:

    ParamTypeRequiredSummary
    eventstringYesThe event that has occured listen for, see Events.
    dataanyYesThe event data, which depends on which event is firing, see Events.

    Promise resolution:

    TypeDescription
    numberListener ID to clear the callback method and stop receiving the event, e.g. SecondScreen.clear(id)

    See Listening for events for more information and examples.

    protocols

    Get the supported second screen discovery protocols

    function protocols(): Promise<BooleanMap>
    

    Promise resolution:

    BooleanMap

    Capabilities:

    RoleCapability
    usesxrn:firebolt:capability:device:info

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    SecondScreen.protocols()
        .then(protocols => {
            console.log(protocols)
        })
    

    Value of protocols:

    {
    	"dial1.7": true
    }
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.protocols",
    	"params": {}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": {
    		"dial1.7": true
    	}
    }
    

    Events

    closeRequest

    function listen('closeRequest', (SecondScreenEvent) => void): Promise<number>
    

    See also: listen(), once(), clear().

    Event value:

    SecondScreenEvent

    Capabilities:

    RoleCapability
    usesxrn:firebolt:capability:protocol:dial

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    SecondScreen.listen('closeRequest', closeRequestEvent => {
      console.log(closeRequestEvent)
    })
    

    Value of closeRequestEvent:

    {
    	"type": "dial",
    	"version": "1.7"
    }
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.onCloseRequest",
    	"params": {
    		"listen": true
    	}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": {
    		"type": "dial",
    		"version": "1.7"
    	}
    }
    

    friendlyNameChanged

    See: friendlyName

    launchRequest

    function listen('launchRequest', (SecondScreenEvent) => void): Promise<number>
    

    See also: listen(), once(), clear().

    Event value:

    SecondScreenEvent

    Capabilities:

    RoleCapability
    usesxrn:firebolt:capability:protocol:dial

    Examples

    Default Example

    JavaScript:

    import { SecondScreen } from '@firebolt-js/sdk'
    
    SecondScreen.listen('launchRequest', launchRequestEvent => {
      console.log(launchRequestEvent)
    })
    

    Value of launchRequestEvent:

    {
    	"type": "dial",
    	"version": "1.7",
    	"data": "{\"code\":\"AQDPQZiQcb3KQ7gY7yy5tHTMbbkGHR9Zjp-KL53H3eKBZIeAt7O9UKYPu6B21l2UZVmIqkFXDXBmXvK4g2e3EgZtjMNmKPsTltgnRl95DImtOXjSpWtTjSaOkW4w1kZKUTwLKdwVWTzBVH8ERHorvLU6vCGOVHxXt65LNwdl5HKRweShVC1V9QsyvRnQS61ov0UclmrH_xZML2Bt-Q-rZFjey5MjwupIb4x4f53XUJMhjHpDHoIUKrjpdPDQvK2a\",\"friendlyName\":\"Operator_TX061AEI\",\"UDN\":\"608fef11-2800-482a-962b-23a6690c93c1\"}"
    }
    
    JSON-RPC:Request:
    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"method": "SecondScreen.onLaunchRequest",
    	"params": {
    		"listen": true
    	}
    }
    

    Response:

    {
    	"jsonrpc": "2.0",
    	"id": 1,
    	"result": {
    		"type": "dial",
    		"version": "1.7",
    		"data": "{\"code\":\"AQDPQZiQcb3KQ7gY7yy5tHTMbbkGHR9Zjp-KL53H3eKBZIeAt7O9UKYPu6B21l2UZVmIqkFXDXBmXvK4g2e3EgZtjMNmKPsTltgnRl95DImtOXjSpWtTjSaOkW4w1kZKUTwLKdwVWTzBVH8ERHorvLU6vCGOVHxXt65LNwdl5HKRweShVC1V9QsyvRnQS61ov0UclmrH_xZML2Bt-Q-rZFjey5MjwupIb4x4f53XUJMhjHpDHoIUKrjpdPDQvK2a\",\"friendlyName\":\"Operator_TX061AEI\",\"UDN\":\"608fef11-2800-482a-962b-23a6690c93c1\"}"
    	}
    }
    


    Was this article helpful?

    What's Next