Skip to content

ConnectSDK/Connect-SDK-iOS-FireTV

Repository files navigation

Amazon Fire TV module for Connect SDK (iOS)

The Amazon Fire TV module extends Connect SDK to add Amazon Fire TV and Fire TV Stick devices using the Fling SDK. This repository is included as a submodule in the main project, and requires manual setup before the main project will compile.

This module acts a layer on top of Amazon’s Fling SDK, and requires the Fling SDK framework to function. It provides the following functionality:

  • Media playback

  • Media control

Using Connect SDK for discovery/control of Fire TV devices will result in your app complying with the Amazon Fling SDK terms of service.

General Information

For more information about Connect SDK, visit the main repository.

Setup

Connect SDK Integration

  1. Download the Amazon Fling SDK from the Amazon website.

  2. Unzip ios-sdk/frameworks/AmazonFling.framework and ios-sdk/frameworks/third_party_framework/Bolts.framework into the modules/firetv/Frameworks/ directory.

  3. In your project: link AmazonFling.framework, Bolts.framework, libc++.dylib, and AdSupport.framework with your application target:

    • either drag them from the ConnectSDK project into your project’s Frameworks group and then add them to your target;

    • or go to your project settings, select the application target, "Build Phases" tab, in "Link Binary With Libraries" section click "+", then "Add Other…", and select AmazonFling.framework and Bolts.framework files; then click "+" and add system libc++.dylib and AdSupport.framework files.

Connect SDK Lite Integration

  1. Add this repository as a submodule into the Connect SDK Lite project, e.g.:

    git submodule add https://github.com/ConnectSDK/Connect-SDK-iOS-FireTV.git firetv
  2. Add this directory to the Connect SDK Lite Xcode project (ConnectSDK target).

  3. Amend the target memberships:

    1. Change the target membership of *.m files in FireTVTests/ directory from ConnectSDK to ConnectSDKTests.

    2. Change the target membership of *.m files in FireTVIntegrationTests/ directory from ConnectSDK to ConnectSDKIntegrationTests.

    3. Remove the XCTestCase+TaskTests.h file from the ConnectSDK target.

    4. In the ConnectSDK target’s Headers build phases, move all FireTV* headers from Project to Public section.

  4. Download the Amazon Fling SDK from the Amazon website.

  5. Unzip ios-sdk/frameworks/AmazonFling.framework and ios-sdk/frameworks/third_party_framework/Bolts.framework into the modules/firetv/Frameworks/ directory.

  6. Add the AmazonFling.framework and Bolts.framework to the Xcode project (ConnectSDK, ConnectSDKTests, and ConnectSDKIntegrationTests targets).

  7. Link libc++.dylib and AdSupport.framework with ConnectSDKTests, ConnectSDKIntegrationTests, and your application targets.

  8. Add a reference to the FireTVService and FireTVDiscoveryProvider classes in the ConnectSDKDefaultPlatforms.h file.

Limitations/Caveats

  • Play state subscription: currently, FireTVService’s `-[MediaControl subscribePlayStateWithSuccess:failure:] only supports one subscription, that is this method allows adding multiple handlers, but the returned object is the same, so calling -unsubscribe will unsubscribe all the handlers.

  • Stopping discovery: due to the specifics of the Amazon Fling SDK, stopping the discovery provider (via -[DiscoveryManager stopDiscovery]) will remove all found Fire TV devices! The Fling SDK’s discovery part is required for FireTVService to work properly.

  • FireTV devices and DIAL: Amazon Fling SDK doesn’t provide the IP address of a device, but a unique identifier instead. However, the DIAL device description doesn’t include that identifier, so Connect SDK is unable to merge those two services in the same ConnectableDevice at this point. When using both FireTVService and DIALService, you will get two different ConnectableDevice objects with one of the services, representing the same physical FireTV device.

  • FireTV service supports WebVTT format only. Subtitles on Fire TV are hidden by default. To display them, the user should manually pick one in the media player (click the "Options" button on the remote). The Fling SDK doesn’t provide any way to make them appear remotely.

License

Copyright (c) 2015 LG Electronics.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.