WebAppSession

Overview

When a web app is launched on a first screen device, there are certain tasks that can be performed with that web app. WebAppSession serves as a second screen reference of the web app that was launched. It behaves similarly to LaunchSession, but is not nearly as static.

In Depth

On top of maintaining session information (contained in the launchSession property), WebAppSession provides access to a number of capabilities.

  • MediaPlayer

  • MediaControl

  • Bi-directional communication with web app

MediaPlayer and MediaControl are provided to allow for the most common first screen use cases a media player (audio, video, & images).

The Connect SDK JavaScript Bridge has been produced to provide normalized support for these capabilities across protocols (Chromecast, webOS, etc).

Properties

LaunchSession * launchSession

LaunchSession object containing key session information. Much of this information is required for web app messaging & closing the web app.

DeviceService * service

DeviceService that was responsible for launching this web app.

id<WebAppSessionDelegate> delegate

When messages are received from a web app, they are parsed into the appropriate object type (string vs JSON/NSDictionary) and routed to the WebAppSessionDelegate.

Methods

- (instancetype) initWithLaunchSession:(LaunchSession *)launchSession service:(DeviceService *)service

Instantiates a WebAppSession object with all the information necessary to interact with a web app.

Parameters:
  • launchSession –

    LaunchSession containing info about the web app session

  • service: service –

    DeviceService that was responsible for launching this web app

- (ServiceSubscription *) subscribeWebAppStatus:(WebAppStatusBlock)success failure:(FailureBlock)failure

Subscribes to changes in the web app's status.

Parameters:
  • success –

    (optional) WebAppStatusBlock to be called on app status change

  • failure: failure –

    (optional) FailureBlock to be called on failure

- (void) joinWithSuccess:(SuccessBlock)success failure:(FailureBlock)failure

Join an active web app without launching/relaunching. If the app is not running/joinable, the failure block will be called immediately.

Parameters:
  • success –

    (optional) SuccessBlock to be called on join success

  • failure: failure –

    (optional) FailureBlock to be called on failure

- (void) closeWithSuccess:(SuccessBlock)success failure:(FailureBlock)failure

Closes the web app on the first screen device.

Parameters:
  • success –

    (optional) SuccessBlock to be called on success

  • failure: failure –

    (optional) FailureBlock to be called on failure

- (void) connectWithSuccess:(SuccessBlock)success failure:(FailureBlock)failure

Establishes a communication channel with the web app.

Parameters:
  • success –

    (optional) SuccessBlock to be called on success

  • failure: failure –

    (optional) FailureBlock to be called on failure

- (void) disconnectFromWebApp

Closes any open communication channel with the web app.

- (void) pinWebApp:(NSString *)webAppId success:(SuccessBlock)success failure:(FailureBlock)failure

Pin the web app on the launcher.

Parameters:
  • webAppId –

    NSString webAppId to be pinned.

  • success: success –

    Optional SuccessBlock to be called on success

  • failure: failure –

    Optional FailureBlock to be called on failure

- (void) unPinWebApp:(NSString *)webAppId success:(SuccessBlock)success failure:(FailureBlock)failure

UnPin the web app on the launcher.

Parameters:
  • webAppId –

    NSString webAppId to be unpinned.

  • success: success –

    Optional SuccessBlock to be called on success

  • failure: failure –

    Optional FailureBlock to be called on failure

- (void) isWebAppPinned:(NSString *)webAppId success:(WebAppPinStatusBlock)success failure:(FailureBlock)failure

To check if the web app is pinned or not

Parameters:
  • webAppId
  • success: success –

    Optional WebAppPinStatusBlock to be called on success

  • failure: failure –

    Optional FailureBlock to be called on failure

- (void) sendText:(NSString *)message success:(SuccessBlock)success failure:(FailureBlock)failure

Sends a simple string to the web app. The Connect SDK JavaScript Bridge will receive this message and hand it off as a string object.

Parameters:
  • message
  • success: success –

    (optional) SuccessBlock to be called on success

  • failure: failure –

    (optional) FailureBlock to be called on failure

- (void) sendJSON:(NSDictionary *)message success:(SuccessBlock)success failure:(FailureBlock)failure

Sends a JSON object to the web app. The Connect SDK JavaScript Bridge will receive this message and hand it off as a JavaScript object.

Parameters:
  • message
  • success: success –

    (optional) SuccessBlock to be called on success

  • failure: failure –

    (optional) FailureBlock to be called on failure

Typedefs

WebAppStatusBlock

void(^)(WebAppStatus status)

Success block that is called upon successfully getting a web app's status.

  • status

    The current running & foreground status of the web app

WebAppPinStatusBlock

void(^)(BOOL status)

Success block that is called upon successfully getting a web app's status.

  • status

    The current running & foreground status of the web app