# NfcReactNative
nfc-react-native is a react-native module for android to write/read Mifare Classic (NFC) tags.
## Getting started
`$ npm install nfc-react-native --save`
### Mostly automatic installation
`$ react-native link nfc-react-native`
### Manual installation
#### Android
1. Open up `android/app/src/main/java/[...]/MainApplication.java`
- Add `import es.tiarg.nfcreactnative.NfcReactNativePackage;` to the imports at the top of the file
- Add `new NfcReactNativePackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':nfc-react-native'
project(':nfc-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/nfc-react-native/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':nfc-react-native')
```
## Usage
```javascript
import {readTag, writeTag} from 'nfc-react-native'
...
//get card id
getCardId()
.then((card) => {
console.log(card)
}).catch((err) => {
console.log(err)
})
//read multiple sectors + blocks and get card id
readTag([{ sector: 5, bloques: [1,2], clave: 'FFFFFFFFFFFF', tipoClave: 'A' },
{ sector: 6, bloques: [0,1,2], clave: 'FFFFFFFFFFFF', tipoClave: 'A' },
{ sector: 4, bloques: [0], clave: 'FFFFFFFFFFFF', tipoClave: 'A' }])
.then((card) => {
console.log(card)
// returns Object {lectura: Array[3], card: "A3F813DB"}
}).catch((err) => {
console.log(err.message)
})
//writes multiple sectors and blocks but you must provide card id
writeTag([{ sector: 5, bloques: [
{ indice: 1, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] },
{ indice: 2, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] } ],
clave: 'FFFFFFFFFFFF', tipoClave: 'A' },
{ sector: 6, bloques: [
{ indice: 0, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] },
{ indice: 1, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] },
{ indice: 2, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] } ],
clave: 'FFFFFFFFFFFF', tipoClave: 'A' },
{ sector: 4, bloques: [
{ indice: 0, data: [15,15,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,15,15] } ],
clave: 'FFFFFFFFFFFF', tipoClave: 'A' },
], "A3F813DB")
.then((card) => {
console.log(card)
}).catch((err) => {
console.log(err.message)
})
...
```
## Configuration
In your manifest add:
```xml
....
```
Your main activity should look like
```xml
...
```
Add a xml file in res folder with the following:
```xml
android.nfc.tech.MifareClassic
```
## Contribution
Contributions are welcome :raised_hands:
## License
This repository is distributed under [MIT license](https://github.com/Lube/nfc-react-native/blob/master/LICENSE)