Home › Forums › Ask the Flomies › Reading NDEF using FloBLE Plus and Cordova
Tagged: cordova nfc, floble plus cordova, ionic, NDEF, ndef cordova ios
-
AuthorPosts
-
August 14, 2017 at 11:59 pm #60665
I’m trying to read a NFC chip using the NDEF format and the Cordova plugin.
The chip is a MTAG206 MIRFARE Ultralight, using the NFC Forum The 2 data format with one text/plain record. I can read it using other NFC readers on an Android device.
Here are the steps I used for testing:
1) Created example flomio plugin application
$ cordova create flomio-plugin-example-app && cd $_
$ sudo npm install -gf ios-deploy –unsafe-perm=true
$ cordova platform add io
$ cordova plugin add cordova-plugin-console
$ cordova plugin add https://github.com/flomio/flomio_cordova_plugin#2b76e4e
$ open ./platforms/ios/HelloCordova.xcodeproj
$ cordova prepareUpdated the js/index.js file:
Update www/js/indes.js: /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ var app = { // Application Constructor initialize: function() { document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); }, // deviceready Event Handler // // Bind any cordova events here. Common events are: // 'pause', 'resume', etc. onDeviceReady: function() { this.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); console.log('Received Event: ' + id); /* set up flomio */ flomioPlugin.selectDeviceType("floble-plus"); let configuration = {}; configuration = { scanPeriod: 2000, // scan period in ms scanSound: true, // toggle scan sound on/off readerState: 'read-data', //read-data or read-uuid powerOperation: 'auto-polling-control' //bluetooth-connection-control or auto-polling-control } flomioPlugin.init(); flomioPlugin.setConfiguration(configuration); flomioPlugin.addConnectedDevicesListener(this.flomioConnectedDevicesListener.bind(this)); console.log('receivedEvent: Setup flomio'); }, flomioConnectedDevicesListener: function(result){ flomioPlugin.addTagDiscoveredListener(this.flomioTagDiscovered.bind(this)); console.log('flomioConnectedDevicesListener: called addTagDiscoveredListener ' + result.length); }, flomioTagDiscovered: function(result){ console.log('flomioTagDiscovered: ' + result.deviceId + ' ' + result.tagUid); flomioPlugin.addNdefListener(this.flomioNdefListener.bind(this)); console.log('flomioTagDiscovered: called addNdefListener'); }, flomioNdefListener: function(data){ <strong>console.log('flomioNdefListener: Here I am.');</strong> }, }; app.initialize();
The flomioPlugin.addNdefListener callback is not being called.
Here is the out put to the log – notice the “flomioNdefListener: Here I am.” is missing.2017-08-14 22:16:21.178304-0500 HelloCordova[2735:774377] receivedEvent: Setup flomio
2017-08-14 22:16:25.272396-0500 HelloCordova[2735:774377] flomioConnectedDevicesListener: called addTagDiscoveredListener undefined
2017-08-14 22:16:58.151320-0500 HelloCordova[2735:774377] flomioTagDiscovered: RR330-004157 04 15 B7 82 89 49 80
2017-08-14 22:16:58.151806-0500 HelloCordova[2735:774377] flomioTagDiscovered: called addNdefListenerThanks in advance for your help.
August 15, 2017 at 10:37 am #60668I have some additional information. I installed the Flomio’s NFC Actions application and used the FloBLE Plus to scan the chip. Here is the Ndef payload that was found:
02656e746869732069732074657874206f6e2061206e6663206e6465662063686970
I guess I’m don’t have the right sequence of call or may missing something.
Thanks again for your help.
August 15, 2017 at 10:39 am #60669Oh yea, this payload reflects what was written to the chip:
enthis is text on a nfc ndef chip
August 15, 2017 at 3:57 pm #60670Try using
flomioPlugin.addNdefListener(this.flomioNdefListener.bind(this));
while adding the other listeners at init.so it would be
`
var app = {
// Application Constructor
initialize: function() {
document.addEventListener(‘deviceready’, this.onDeviceReady.bind(this), false);
},// deviceready Event Handler
//
// Bind any cordova events here. Common events are:
// ‘pause’, ‘resume’, etc.
onDeviceReady: function() {
this.receivedEvent(‘deviceready’);
},// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector(‘.listening’);
var receivedElement = parentElement.querySelector(‘.received’);listeningElement.setAttribute(‘style’, ‘display:none;’);
receivedElement.setAttribute(‘style’, ‘display:block;’);console.log(‘Received Event: ‘ + id);
/* set up flomio */
flomioPlugin.selectDeviceType(“floble-plus”);
let configuration = {};
configuration = {
scanPeriod: 2000, // scan period in ms
scanSound: true, // toggle scan sound on/off
readerState: ‘read-data’, //read-data or read-uuid
powerOperation: ‘auto-polling-control’ //bluetooth-connection-control or auto-polling-control
}
flomioPlugin.init();
flomioPlugin.setConfiguration(configuration);
flomioPlugin.addConnectedDevicesListener(this.flomioConnectedDevicesListener.bind(this));
console.log(‘receivedEvent: Setup flomio’);
flomioPlugin.addNdefListener(this.flomioNdefListener.bind(this));},
flomioConnectedDevicesListener: function(result){
flomioPlugin.addTagDiscoveredListener(this.flomioTagDiscovered.bind(this));
console.log(‘flomioConnectedDevicesListener: called addTagDiscoveredListener ‘ + result.length);
},
flomioTagDiscovered: function(result){
console.log(‘flomioTagDiscovered: ‘ + result.deviceId + ‘ ‘ + result.tagUid);
},
flomioNdefListener: function(data){
console.log(‘flomioNdefListener: Here I am.’);
},
};app.initialize();
`
Kind Regards,
ScottAugust 15, 2017 at 4:26 pm #60671Thanks for the recommendation. I tried the suggestion to move the addNdefListener call right after the init with no success. I also tried moving it into the addConnectedDevicesListener call back with no success:
Any other ideas?
August 15, 2017 at 6:45 pm #60672Can you print out the Xcode logs and paste them here. I will try rebuild your project next time I get a chance.
August 15, 2017 at 10:34 pm #60673Here is the full log:
2017-08-15 21:29:06.064101-0500 HelloCordova[3627:985098] Apache Cordova native platform version 4.4.0 is starting.
2017-08-15 21:29:06.064986-0500 HelloCordova[3627:985098] Multi-tasking -> Device: YES, App: YES
2017-08-15 21:29:06.087828-0500 HelloCordova[3627:985098]Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read “iOS Data Storage Guidelines” at:
https://developer.apple.com/icloud/documentation/data-storage/
To disable web storage backup to iCloud, set the BackupWebStorage preference to “local” in the Cordova config.xml file
2017-08-15 21:29:06.158718-0500 HelloCordova[3627:985098] Using UIWebView
2017-08-15 21:29:06.161439-0500 HelloCordova[3627:985098] [CDVTimer][handleopenurl] 0.070989ms
2017-08-15 21:29:06.163165-0500 HelloCordova[3627:985098] [CDVTimer][intentandnavigationfilter] 1.617014ms
2017-08-15 21:29:06.163442-0500 HelloCordova[3627:985098] [CDVTimer][gesturehandler] 0.072956ms
2017-08-15 21:29:06.165791-0500 HelloCordova[3627:985098] [CDVTimer][TotalPluginStartup] 4.469037ms
2017-08-15 21:29:06.206672-0500 HelloCordova[3627:985144] libMobileGestalt MobileGestaltSupport.m:153: pid 3627 (HelloCordova) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled
2017-08-15 21:29:06.206782-0500 HelloCordova[3627:985144] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
2017-08-15 21:29:06.443533-0500 HelloCordova[3627:985098] Resetting plugins due to page load.
2017-08-15 21:29:06.523338-0500 HelloCordova[3627:985098] Finished load of: file:///var/containers/Bundle/Application/D902832C-6BAF-438E-A897-722790B397D4/HelloCordova.app/www/index.html
2017-08-15 21:29:06.555006-0500 HelloCordova[3627:985098] Init FloBLE Plus
2017-08-15 21:29:06.557299-0500 HelloCordova[3627:985098] Received Event: deviceready
2017-08-15 21:29:06.557394-0500 HelloCordova[3627:985098] receivedEvent: Setup flomio
2017-08-15 21:29:06.557439-0500 HelloCordova[3627:985098] receivedEvent: called addNdefListener
2017-08-15 21:29:06.559180-0500 HelloCordova[3627:985098] ::centralManagerDidUpdateState supports 5
2017-08-15 21:29:06.590666-0500 HelloCordova[3627:985098] ::discovered peripheral (null) 313079A9-8D71-45E8-B29F-34F8B581A050
2017-08-15 21:29:06.671417-0500 HelloCordova[3627:985098] ::discovered peripheral ACR1255U-J1-004157 178BCE93-D49B-4D94-BAB9-223D6C6C3FD0
2017-08-15 21:29:06.840958-0500 HelloCordova[3627:985098] ::discovered peripheral Wonder Woman 571C63A2-E687-40C5-A7A0-741FD5987B03
2017-08-15 21:29:06.841625-0500 HelloCordova[3627:985098] Peripheral Connected
2017-08-15 21:29:07.056366-0500 HelloCordova[3627:985098] ::discovered peripheral Wonder Woman 571C63A2-E687-40C5-A7A0-741FD5987B03
2017-08-15 21:29:07.185533-0500 HelloCordova[3627:985098] Reader Detected
2017-08-15 21:29:07.840338-0500 HelloCordova[3627:985098] Peripheral Successfully Attached
2017-08-15 21:29:07.901759-0500 HelloCordova[3627:985098] didChangeBatteryLevel 90
2017-08-15 21:29:07.960745-0500 HelloCordova[3627:985098] EscapeResponse <e1000045 0080f62d 1a54897b 3e6465b4 6e07f63d 57>
2017-08-15 21:29:08.020813-0500 HelloCordova[3627:985098] EscapeResponse <e1000046 008439f5 c727a089 8e2e1253 e39a3940 8f>
2017-08-15 21:29:08.021071-0500 HelloCordova[3627:985098] Peripheral Successfully Authenticated
2017-08-15 21:29:08.085743-0500 HelloCordova[3627:985098] Firmware: FWV 1.16.03
2017-08-15 21:29:08.142731-0500 HelloCordova[3627:985098] Hardware: HWV 1.03
2017-08-15 21:29:08.203922-0500 HelloCordova[3627:985098] Serial Number: RR330-004157
2017-08-15 21:29:08.952911-0500 HelloCordova[3627:985143] Have Response, registered
2017-08-15 21:29:08.953984-0500 HelloCordova[3627:985143] Verfied Basic license
2017-08-15 21:29:08.965465-0500 HelloCordova[3627:985098] flomioConnectedDevicesListener: called addTagDiscoveredListener undefined
2017-08-15 21:29:09.228627-0500 HelloCordova[3627:985146] Escape APDU:E0 00 00 48 04
2017-08-15 21:29:09.280809-0500 HelloCordova[3627:985098] EscapeResponse <e1000000 0104>
2017-08-15 21:29:09.548137-0500 HelloCordova[3627:985146] Escape APDU:E0 00 00 20 01 01
2017-08-15 21:29:09.610754-0500 HelloCordova[3627:985098] EscapeResponse <e1000000 0101>
2017-08-15 21:29:09.878443-0500 HelloCordova[3627:985142] Escape APDU:E0 00 00 40 01
2017-08-15 21:29:09.941422-0500 HelloCordova[3627:985098] EscapeResponse <e1000040 01>
2017-08-15 21:29:10.061523-0500 HelloCordova[3627:985098] Change Status:Absent
2017-08-15 21:29:10.212663-0500 HelloCordova[3627:985145] Escape APDU:E0 00 00 49 03
2017-08-15 21:29:10.300217-0500 HelloCordova[3627:985098] EscapeResponse <e1000000 0103>
2017-08-15 21:29:20.290056-0500 HelloCordova[3627:985098] Change Status:Present
2017-08-15 21:29:20.352112-0500 HelloCordova[3627:985098] ATR Response: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 03 00 00 00 00 68
2017-08-15 21:29:20.363311-0500 HelloCordova[3627:985145] Command APDU:FF CA 00 00 00
2017-08-15 21:29:20.411322-0500 HelloCordova[3627:985098] Response apdu:04 15 B7 82 89 49 80 90 00
2017-08-15 21:29:20.412033-0500 HelloCordova[3627:985098] Found tag UUID: 04 15 B7 82 89 49 80 from device:RR330-004157
2017-08-15 21:29:20.426346-0500 HelloCordova[3627:985098] flomioTagDiscovered: RR330-004157 04 15 B7 82 89 49 80
2017-08-15 21:29:24.910994-0500 HelloCordova[3627:985098] Change Status:AbsentAugust 16, 2017 at 9:43 am #60676Just want to let you know that we are initially planning on purchasing at least 500 FloBLE plus cards as soon as reading the NDEF data from a NFC chip using the iPhone is working. Thanks for all your help.
August 16, 2017 at 2:12 pm #60677It looks like your tag data isn’t being read. I will be able to build a sample app for you on Friday and guide you to use our latest SDK v2.3.
If you would like to try before that, you can see the branch on github and try. You need to call this.flomio.readNdef when a tag is presented.
I will be able to give you more details later in the week.Scott
August 18, 2017 at 6:33 am #60688Hey,
I have been able to build a cordova app with SDK v2.3. You will need to remove the old plugin and add the new one.
cordova plugin remove flomio_cordova_plugin
cordova plugin add https://github.com/flomio/flomio_cordova_plugin#2346dee
You will need to add a libz (this is will be automatically bundled in future)
Add libz to the project.
– go to Target section
– open “Build Phases” tab
– open “Link Binaries With Libraries”
– click on “+” button
– search “libz.tbd”
– click on add buttonThen I had to make one or two small changes to your index.js
var app = { // Application Constructor initialize: function() { document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); }, // deviceready Event Handler // // Bind any cordova events here. Common events are: // 'pause', 'resume', etc. onDeviceReady: function() { this.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); console.log('Received Event: ' + id); /* set up flomio */ flomioPlugin.selectDeviceType("floble-plus"); let configuration = {}; configuration = { scanPeriod: 1000, // scan period in ms scanSound: false, // toggle scan sound on/off readerState: 'read-data', //read-data or read-uuid powerOperation: 'auto-polling-control' //bluetooth-connection-control or auto-polling-control } flomioPlugin.setConfiguration(configuration); flomioPlugin.init(); flomioPlugin.addConnectedDevicesListener(this.flomioConnectedDevicesListener.bind(this)); console.log('receivedEvent: Setup flomio'); flomioPlugin.addTagDiscoveredListener(this.flomioTagDiscovered.bind(this)) }, flomioConnectedDevicesListener: function(result) { flomioPlugin.addTagDiscoveredListener(this.flomioTagDiscovered.bind(this)); console.log('flomioConnectedDevicesListener: called addTagDiscoveredListener ' + result.length); }, flomioTagDiscovered: function(result) { console.log('flomioTagDiscovered: ' + result.deviceId + ' ' + result.tagUid); flomioPlugin.readNdef(this.flomioNdefListener.bind(this), result.deviceId) console.log('flomioTagDiscovered: called addNdefListener'); }, flomioNdefListener: function(data) { console.log('flomioNdefListener: Here I am.'); }, }; app.initialize();
Please let me know if you have any issues.
Scott- This reply was modified 7 years, 3 months ago by Scott.
August 18, 2017 at 9:14 am #60690I just tried to install the cordova app with SDK v2.3 and got the following error:
$ cordova plugin add https://github.com/flomio/flomio_cordova_plugin#2346dee
Error: Failed to fetch plugin https://github.com/flomio/flomio_cordova_plugin#2346dee via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed moduleAugust 18, 2017 at 9:27 am #60691Looks like I got it to work using this command:
cordova plugin add https://github.com/flomio/flomio_cordova_plugin#2346dee –nofetch
August 18, 2017 at 9:28 am #60692What version of node are you using? Try using node v6.11.0
August 18, 2017 at 9:55 am #60695I was able to add the plugin using the –fetch option.
Now I’m get an error importing CoreNFC/CoreNFC.h. Do I need to use a different bundle identifier then io.cordova.hellocordova?
August 18, 2017 at 10:03 am #60696We are using the newest Xcode 9.0 beta here which includes lib files for upcoming CoreNFC with iOS 11. You could avoid those errors by updating Xcode here:https://developer.apple.com/download/
Another option is to remove references to CoreNFC in FlomioPlugin.m and FlomioPlugin.h. Xcode 9.0 is due for release within the next month which would require an update then.
Obviously this is not ideal, but the release of CoreNFC aligns with a lot of work we are doing so adding it to the latest FlomioPlugin makes sense.
August 18, 2017 at 10:50 am #60697Getting closer. The app is building, but I’m getting an error in the log:
2017-08-18 09:48:07.086917-0500 HelloCordova[4436:1386115] Apache Cordova native platform version 4.4.0 is starting.
2017-08-18 09:48:07.087487-0500 HelloCordova[4436:1386115] Multi-tasking -> Device: YES, App: YES
2017-08-18 09:48:07.093829-0500 HelloCordova[4436:1386115]Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read “iOS Data Storage Guidelines” at:
https://developer.apple.com/icloud/documentation/data-storage/
To disable web storage backup to iCloud, set the BackupWebStorage preference to “local” in the Cordova config.xml file
2017-08-18 09:48:07.128373-0500 HelloCordova[4436:1386115] Using UIWebView
2017-08-18 09:48:07.129356-0500 HelloCordova[4436:1386115] [CDVTimer][handleopenurl] 0.056028ms
2017-08-18 09:48:07.130517-0500 HelloCordova[4436:1386115] [CDVTimer][intentandnavigationfilter] 1.121998ms
2017-08-18 09:48:07.130584-0500 HelloCordova[4436:1386115] [CDVTimer][gesturehandler] 0.039041ms
2017-08-18 09:48:07.130608-0500 HelloCordova[4436:1386115] [CDVTimer][TotalPluginStartup] 1.345992ms
2017-08-18 09:48:07.164358-0500 HelloCordova[4436:1386171] libMobileGestalt MobileGestaltSupport.m:153: pid 4436 (HelloCordova) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled
2017-08-18 09:48:07.164408-0500 HelloCordova[4436:1386171] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
2017-08-18 09:48:07.334403-0500 HelloCordova[4436:1386115] Resetting plugins due to page load.
2017-08-18 09:48:07.402070-0500 HelloCordova[4436:1386115] Finished load of: file:///var/containers/Bundle/Application/613B554B-6462-4B1D-996E-4A985E89ACD3/HelloCordova.app/www/index.htmlAugust 18, 2017 at 11:45 am #60698This seems like more of a general cordova error. Try build it to a device.
cordova build ios --device
August 18, 2017 at 2:26 pm #60699Reading NDEF data – Yea!
All of the data is being returned as raw HEX data. The documentation for the flomio_cordova_plugin shows that you can access the individual NDEF records. Do you have an sample code with the new SDK that works like this (from https://github.com/flomio/flomio_cordova_plugin):
didFindTagData(dict){
var returnedData = dict.payload;
if (‘Uuid’ in returnedData){
console.log(‘Uuid :’ + returnedData[‘Uuid’])
}
if (‘Raw Data’ in returnedData){
console.log(‘Raw Data’ + returnedData[‘Raw Data’])
}
if (returnedData[‘Ndef’]){
var ndefMessage = returnedData[‘Ndef’];
for (var i = 0; ndefMessage.length > i; i++) {
var ndefRecord = ndefMessage[i];
for (var key in ndefRecord){
console.log(key + “: ” + ndefRecord[key])
}
}
}
}August 18, 2017 at 3:10 pm #60700Nice, ok. I will just add the code I have to the plugin and return the ndef object from the same callback.
You will have to wait until Monday or so, but I’ll get that working for you.August 18, 2017 at 3:13 pm #60701Great. Mainly need the data in a format that can be processed.
Thanks for all your help. Have a good weekend.
August 21, 2017 at 10:54 am #60718Hi,
Please update your plugin to see it return a NdefMessage object instead of raw data.
cordova plugin add https://github.com/flomio/flomio_cordova_plugin#d58d283
didFindTagData (dict) { //ios 11 console.log("didFindTagData: " + JSON.stringify(dict)) // const payload: string = JSON.stringify(dict.ndefMessage) const ndefMessage = dict.ndefMessage; }
Let me know if you have any issues.
ScottAugust 21, 2017 at 10:59 pm #60736Scott,
Thanks for getting the Ndef read working. Now I’m trying to write to the NFC chip. I noticed you has a writeNdef function available in the Cordova API. The chip I’m testing with has two records (TNF 1, TYPE “T”). After reading the data, I appended more text to the end of each recored and then try to write over the NFC chip. Here is the section of code:flomioTagDiscovered: function(result) {
console.log(‘flomioTagDiscovered: ‘ + result.deviceId + ‘ ‘ + result.tagUid);
flomioPlugin.readNdef(this.flomioNdefListener.bind(this), result.deviceId);
this.device_id = result.deviceId;
console.log(‘flomioTagDiscovered: called addNdefListener ‘ + this.device_id);
},
flomioNdefListener: function(data) {
console.log(‘flomioNdefListener: Here I am.’);
// console.log(‘flomioNdefListener: ‘ + JSON.stringify(dict));
for (i = 0; i < data.ndefMessage.length; i++) {
payload = data.ndefMessage[i].payload;
console.log(‘flomioNdefListener ‘ + data.ndefMessage[i].value);
data.ndefMessage[i].value = data.ndefMessage[i].value + ‘ writing something’;
}
var ndefMessage = data.ndefMessage;
flomioPlugin.writeNdef(this.flomioNdefWrite.bind(this), this.device_id, ndefMessage);
flomioPlugin.readNdef(this.flomioNdefListener.bind(this), this.device_id);// console.log(‘flomioNdefListener: NDEF ‘ + ndefMessage[0]);
},
flomioNdefWrite: function(result){
console.log(‘flomioNdefWrite: Here I am’);
}August 22, 2017 at 4:08 am #60740Hi Ryan,
Glad you got ndef reading working. That is not the correct way to edit ndef messages. To do so you must use the
ndef
package to encode a fresh ndef message with your updated payload.const message = [ ndef.uriRecord(url) ] const encoded = ndef.encodeMessage(message) this.flomio.writeNdef(this.didWriteNdef, this.deviceId, message)
Scott
September 11, 2017 at 3:59 pm #60925The version of the SDK Pro I have does not have these updates and will not work with the beta version of Xcode. Can you send me an updated version of the Pro SDK?
Thanks,
Ryan
September 12, 2017 at 5:20 am #60928You need to install this cordova package:
https://github.com/don/ndef-jsI will send you the latest now anyway.
Scott
-
AuthorPosts
You must be logged in to reply to this topic.