$ npm install react-native-noke --save
or
$ yarn add react-native-noke
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-noke
and addRNNoke.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNNoke.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)< - Add empty file Test.swift in main project
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.lynkxyz.noke.RNNokePackage;
to the imports at the top of the file - Add
new RNNokePackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-noke' project(':react-native-noke').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-noke/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-noke')
- After adding the dependency to your Android Manifest
<service android:name="com.noke.nokemobilelibrary.NokeDeviceManagerService" android:enabled="true"/>
import RNNoke from 'react-native-noke';
export default class App extends Component {
componentDidMount() {
this.requestLocationPermission() // only Android
RNNoke.initiateNokeService()
.then(noke => {
console.log('noke', noke)
RNNoke
.on('onServiceConnected', data => console.log('onServiceConnected', data)) // only Android
.on('onServiceDisconnected', data => console.log('onServiceConnected', data)) // only Android
.on('onNokeDiscovered', data => console.log('onNokeDiscovered', data))
.on('onNokeConnecting', data => console.log('onNokeConnecting', data))
.on('onNokeConnected', data => console.log('onNokeConnected', data))
.on('onNokeSyncing', data => console.log('onNokeSyncing', data))
.on('onNokeUnlocked', data => console.log('onNokeUnlocked', data))
.on('onNokeDisconnected', data => console.log('onNokeDisconnected', data))
.on('onBluetoothStatusChanged', data => console.log('onBluetoothStatusChanged', data))
.on('onError', data => console.log('onError', data))
})
}
requestLocationPermission = () => {
if(Platform.OS === 'ios') return
return PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Cool Location Permission',
'message': 'Cool Location App needs access to your location '
}
)
.then(console.log)
.catch(console.error)
}
setNokeOfflineData = () => {
RNNoke.setNokeOfflineData()
.then(console.log)
.catch(console.error)
}
onUnlock = () => {
RNNoke.offlineUnlock()
.then(console.log)
.catch(console.error)
}
onAddNoke = () => {
RNNoke.addNokeDevice({
name: 'NokeName',
mac: "NOKE_MAC_ADDRESS",
key: "OFFLINE_UNLOCK_KEY",
cmd: "OFFLINE_UNLOCK_COMMAND"
})
.then(console.log)
.catch(console.error)
}
onSendCommands = () => {
RNNoke.sendCommands("COMMAND_STRING")
.then(console.log)
.catch(console.error)
}
onRemoveAllNokes = () => {
RNNoke.removeAllNokes()
.then(console.log)
.catch(console.error)
}
getDeviceInfo = () => {
RNNoke.getDeviceInfo()
.then(console.log)
.catch(console.error)
}
onStartScan = () => {
RNNoke.startScan()
.then(console.log)
.catch(console.error)
}
onStopScan = () => {
RNNoke.stopScan()
.then(console.log)
.catch(console.error)
}
render() {
return (
<View style={styles.container}>
<Button
onPress={this.onSendCommands}
title="Unlock noke by commands"
/>
<Button
onPress={this.onUnlock}
title="Unlock noke offline"
/>
<Button
onPress={this.onAddNoke}
title="Add noke"
/>
<Button
onPress={this.onRemoveAllNokes}
title="Remove noke"
/>
</View>
)
}
}
react-native-noke is available under the Apache 2.0 license. See the LICENSE file for more info.
Copyright © 2018 Ant-Tech Ltd. All rights reserved.