3.0.2 • Published 6 years ago

react-native-tv-box v3.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

react-native-tv-box

TvBox is a custom React-Native package to help people building remote controller mobile application. A unique APIs of every french TV box is the objective of this package. It helps to focus on UI development, which should be our main goal using React-Native...ain't it?

I've developed this package to introduce my new Youtube video series about React Native, so I'd be pleased to see you support, contribute and share my work :)

Getting started

$ npm install react-native-tv-box --save

Mostly automatic installation

$ react-native link react-native-tv-box

Manual installation

iOS

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-tv-box and add RNTvBox.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNTvBox.a to your project's Build PhasesLink Binary With Libraries
  4. Run your project (Cmd+R)<

Android

  1. Open up android/app/src/main/java/[...]/MainActivity.java
  • Add import com.reactlibrary.RNTvBoxPackage; to the imports at the top of the file
  • Add new RNTvBoxPackage() to the list returned by the getPackages() method
  1. Append the following lines to android/settings.gradle:
    include ':react-native-tv-box'
    project(':react-native-tv-box').projectDir = new File(rootProject.projectDir, 	'../node_modules/react-native-tv-box/android')
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-tv-box')

Windows

Read it! :D

  1. In Visual Studio add the RNTvBox.sln in node_modules/react-native-tv-box/windows/RNTvBox.sln folder to their solution, reference from their app.
  2. Open up your MainPage.cs app
  • Add using Com.Reactlibrary.RNTvBox; to the usings at the top of the file
  • Add new RNTvBoxPackage() to the List<IReactPackage> returned by the Packages method

Usage

Methods

setPlatform(platform, options)

Initialize platform (see API Support for options) and returns:

  • responseCode: "0" if no error
  • message: "ok" if no error
  • data: Data sent to initialize platform

set({key, mode})

Send command to your box and returns:

  • responseCode: "0" if no error
  • message: "ok" if no error
  • data: null

getStatus() - Livebox only

Ask for box status and returns:

  • 'active' when box is ON
  • 'standby' when box is OFF
  • 'playing' when box is playing media or liveTV

getInfos() - Livebox only

Ask for box informations and returns:

  • timeShiftingState: timeshift status
  • playedMediaType: current media type
  • playedMediaState: current media status
  • playedMediaId: current channel ID
  • playedMediaContextId: current media context id
  • playedMediaPosition: current media position
  • osdContext: Current screen
  • macAddress: Device MAC address
  • wolSupport: Wake-on-Lan support status
  • friendlyName: Box name
  • activeStandbyState: Standby status

API Support

25/07/17 Only Livebox and Freebox are currently supported

Remote keysAliasLiveboxFreebox
Powerpower
0-90-9
Up arrowup
Left arrowleft
Right arrowright
Down arrowdown
Increase volumevol_up
Decrease volumevol_dwn
Previous channelepg_up
Next channelepg_dwn
Mutemute
OKok
Backback
Menumenu
Play/Pauseplay
Recrec
Fast backwardfbackward
Fast forwardfforward
Previousprev
Nextnext
VODvod
Redred
Greengreen
Blueblue
Yellowyellow
Listlist
Tvtv
Swapswap
Infoinfo
EPGepg
Mailmail
Mediamedia
Helphelp
Optionsoptions
Pippip

Example

Try TvBoxExample Application in ./Example folder

import RNTvBox from 'react-native-tv-box'

class TVBox extends React.Component {

	constructor() {
		super()

		this.state = {
			status: '',
			name: '',
		}
	}

	componentDidMount() {
		RNTvBox.setPlatform('livebox', {ip: 'http://192.168.1.13:8080'}) // set platform
			.then(res => {
				if (res.responseCode === "0" && res.message === "ok") {
					this.getStatus()
					this.getName()
				}
			})
			.catch(err => console.log(err))
	}

	getStatus() {
		RNTvBox.getStatus()
		.then(status => {
			this.setState({status: status})
		})
		.catch(err => console.error(err))
	}

	getName() {
		RNTvBox.getInfos()
		.then(infos => {
			this.setState({name: infos.friendlyName})
		})
		.catch(err => console.error(err))
	}

	render() {
		return(
			<View>
				<Text>Box: {this.state.name}</Text>
				<Text>Status: {this.state.status}</Text>
			</View>
		)
	}
}

TODO

  • setPlatform() must return request state

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.0.0-rc4.5

7 years ago

2.0.0-rc4.4

7 years ago

2.0.0-rc4.3

7 years ago

2.0.0-rc4.2

7 years ago

2.0.0-rc4.1

7 years ago

2.0.0-rc4

7 years ago

2.0.0-rc3.8

7 years ago

2.0.0-rc3.7

7 years ago

2.0.0-rc3.6

7 years ago

2.0.0-rc3.5

7 years ago

2.0.0-rc3.4

7 years ago

2.0.0-rc3.3

7 years ago

2.0.0-rc3.2

7 years ago

2.0.0-rc3.1

7 years ago

2.0.0-rc3

7 years ago

2.0.0-rc2

7 years ago

2.0.0-rc1

7 years ago

2.0.0-alpha14

7 years ago

2.0.0-alpha13

7 years ago

2.0.0-alpha12

7 years ago

2.0.0-alpha11

7 years ago

2.0.0-alpha10

7 years ago

2.0.0-alpha9

7 years ago

2.0.0-alpha8

7 years ago

2.0.0-alpha7

7 years ago

2.0.0-alpha6

7 years ago

2.0.0-alpha5

7 years ago

2.0.0-alpha4

7 years ago

2.0.0-alpha3

7 years ago

2.0.0-alpha2

7 years ago

2.0.0-alpha1

7 years ago

2.0.3

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago