Skip to content

Commit

Permalink
feat(nfc): add nfc support (#493)
Browse files Browse the repository at this point in the history
* feat(nfc): add nfc plugin

addresses #412

* feat(nfc): add nfc support
  • Loading branch information
ihadeed authored Aug 27, 2016
1 parent 9bcc4ed commit 76aa8a6
Show file tree
Hide file tree
Showing 2 changed files with 164 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import { NativeStorage } from './plugins/nativestorage';
import { Market } from './plugins/market';
import { MediaPlugin } from './plugins/media';
import { Network } from './plugins/network';
import { NFC } from './plugins/nfc';
import { OneSignal } from './plugins/onesignal';
import { PhotoViewer } from './plugins/photo-viewer';
import { ScreenOrientation } from './plugins/screen-orientation';
Expand Down Expand Up @@ -123,6 +124,7 @@ export * from './plugins/imageresizer';
export * from './plugins/inappbrowser';
export * from './plugins/launchnavigator';
export * from './plugins/localnotifications';
export * from './plugins/nfc';
export * from './plugins/media';
export * from './plugins/media-capture';
export * from './plugins/native-page-transitions';
Expand Down Expand Up @@ -265,6 +267,7 @@ window['IonicNative'] = {
NativePageTransitions: NativePageTransitions,
NativeStorage: NativeStorage,
Network: Network,
NFC: NFC,
Printer: Printer,
Push: Push,
OneSignal: OneSignal,
Expand Down
161 changes: 161 additions & 0 deletions src/plugins/nfc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
import {Plugin, Cordova} from './plugin';
import {Observable} from 'rxjs/Observable';
/**
* @name NFC
* @description
* The NFC plugin allows you to read and write NFC tags. You can also beam to, and receive from, other NFC enabled devices.
*
* Use to
* - read data from NFC tags
* - write data to NFC tags
* - send data to other NFC enabled devices
* - receive data from NFC devices
*
* This plugin uses NDEF (NFC Data Exchange Format) for maximum compatibilty between NFC devices, tag types, and operating systems.
*
* @usage
* ```
* import {NFC, Ndef} from 'ionic-native';
*
* let message = Ndef.textRecord('Hello world');
* NFC.share([message]).then(onSuccess).catch(onError);
*
* ```
*/
@Plugin({
plugin: 'phonegap-nfc',
pluginRef: 'nfc',
repo: 'https://github.com/chariotsolutions/phonegap-nfc'
})
export class NFC {
/**
* Registers an event listener for any NDEF tag.
* @param onSuccess
* @param onFailure
* @return {Promise<any>}
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 3,
clearFunction: 'removeNdefListener',
clearWithArgs: true
})
static addNdefListener(onSuccess?: Function, onFailure?: Function): Observable<any> {return; }

/**
* Registers an event listener for tags matching any tag type.
* @param mimeType
* @param onSuccess
* @param onFailure
* @return {Promise<any>}
*/
@Cordova({
observable: true,
successIndex: 1,
errorIndex: 4,
clearFunction: 'removeTagDiscoveredListener',
clearWithArgs: true
})
static addTagDiscoveredListener(mimeType: string, onSuccess?: Function, onFailure?: Function): Observable<any> {return; }

/**
* Registers an event listener for NDEF tags matching a specified MIME type.
* @param onSuccess
* @param onFailure
* @return {Promise<any>}
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 3,
clearFunction: 'removeMimeTypeListener',
clearWithArgs: true
})
static addMimeTypeListener(onSuccess?: Function, onFailure?: Function): Observable<any> {return; }

/**
* Registers an event listener for formatable NDEF tags.
* @param onSuccess
* @param onFailure
* @return {Promise<any>}
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 3
})
static addNdefFormatableListener(onSuccess?: Function, onFailure?: Function): Observable<any> {return; }

/**
* Qrites an NdefMessage to a NFC tag.
* @param message {any[]}
* @return {Promise<any>}
*/
@Cordova()
static write(message: any[]): Promise<any> {return; }
/**
* Makes a NFC tag read only. **Warning** this is permanent.
* @return {Promise<any>}
*/
@Cordova()
static makeReadyOnly(): Promise<any> {return; }

/**
* Shares an NDEF Message via peer-to-peer.
* @param message An array of NDEF Records.
* @return {Promise<any>}
*/
@Cordova()
static share(message: any[]): Promise<any> {return; }

/**
* Stop sharing NDEF data via peer-to-peer.
* @return {Promise<any>}
*/
@Cordova()
static unshare(): Promise<any> {return; }

/**
* Erase a NDEF tag
*/
@Cordova()
static erase(): Promise<any> {return; }

/**
* Send a file to another device via NFC handover.
* @param uris A URI as a String, or an array of URIs.
* @return {Promise<any>}
*/
@Cordova()
static handover(uris: string[]): Promise<any> {return; }

/**
* Stop sharing NDEF data via NFC handover.
* @return {Promise<any>}
*/
@Cordova()
static stopHandover(): Promise<any> {return; }

/**
* Show the NFC settings on the device.
* @return {Promise<any>}
*/
@Cordova()
static showSettings(): Promise<any> {return; }

/**
* Check if NFC is available and enabled on this device.
* @return {Promise<any>}
*/
@Cordova()
static enabled(): Promise<any> {return; }

}

export declare class Ndef {
uriRecord(uri: string): any;
textRecord(text: string): any;
mimeMediaRecord(mimeType: string, payload: string): any;
androidApplicationRecord(packageName: string): any;
}

0 comments on commit 76aa8a6

Please sign in to comment.