react-native-tv-box
v3.0.2
Published
Unified API to communicate with TV box.
Downloads
67
Maintainers
Readme
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
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-tv-box
and addRNTvBox.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNTvBox.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
Android
- 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 thegetPackages()
method
- 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')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-tv-box')
Windows
- In Visual Studio add the
RNTvBox.sln
innode_modules/react-native-tv-box/windows/RNTvBox.sln
folder to their solution, reference from their app. - Open up your
MainPage.cs
app
- Add
using Com.Reactlibrary.RNTvBox;
to the usings at the top of the file - Add
new RNTvBoxPackage()
to theList<IReactPackage>
returned by thePackages
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 keys | Alias | Livebox | Freebox | |------------------|-------------|-------------|--------------| | Power | power | ✔ | ✔ | | 0-9 | 0-9 | ✔ | ✔ | | Up arrow | up | ✔ | ✔ | | Left arrow | left | ✔ | ✔ | | Right arrow | right | ✔ | ✔ | | Down arrow | down | ✔ | ✔ | | Increase volume | vol_up | ✔ | ✔ | | Decrease volume | vol_dwn | ✔ | ✔ | | Previous channel | epg_up | ✔ | ✔ | | Next channel | epg_dwn | ✔ | ✔ | | Mute | mute | ✔ | ✔ | | OK | ok | ✔ | ✔ | | Back | back | ✔ | ✔ | | Menu | menu | ✔ | ✔ | | Play/Pause | play | ✔ | ✔ | | Rec | rec | ✔ | ✔ | | Fast backward | fbackward | ✔ | ✔ | | Fast forward | fforward | ✔ | ✔ | | Previous | prev | ✗ | ✔ | | Next | next | ✗ | ✔ | | VOD | vod | ✔ | ✗ | | Red | red | ✗ | ✔ | | Green | green | ✗ | ✔ | | Blue | blue | ✗ | ✔ | | Yellow | yellow | ✗ | ✔ | | List | list | ✗ | ✔ | | Tv | tv | ✗ | ✔ | | Swap | swap | ✗ | ✔ | | Info | info | ✗ | ✔ | | EPG | epg | ✗ | ✔ | | Mail | mail | ✗ | ✔ | | Media | media | ✗ | ✔ | | Help | help | ✗ | ✔ | | Options | options | ✗ | ✔ | | Pip | pip | ✗ | ✔ |
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~~