Ionic 使用 NFC

哎哟喂,因为项目需要使用 Ionic 调用手机 NFC 功能,踩了好多坑,真的是,不过终于不负众望拿到了id。现在就记录一下我的步骤和踩过的坑!

步骤

我装的Ionic可能是最新的,然后用到的调用NFC的插件是phonegap-nfc

首先就是正常的创建项目,对了,我用的Angular 。

给一下ionic官网是怎么说的,但是我觉得这个官网作用不大,但是还是贴一下吧

https://ionicframework.com/docs/v3/native/nfc/

然后项目创建完成起来了之后去安装插件。

用下面两条命令安装插件:

ionic cordova plugin add phonegap-nfc

npm install @ionic-native/nfc

安装完成需要在项目里面注入依赖,首先是 app.module.ts 文件里面,引入插件

import {NFC, Ndef} from '@ionic-native/nfc/ngx';

然后在 @NgModule 里面的 providers 里面加入 NFC 和 Ndef,就像这个样子:

providers: [
···
NFC,
Ndef,
···
],

然后在需要调用的页面里面引入插件,注入一下依赖:

import {NFC, Ndef} from '@ionic-native/nfc/ngx';

在构造函数里面加点东西:

constructor(private nfc: NFC, private ndef: Ndef) {}

最后监听 NFC 就可以了,可以写一个方法,都行,开心就好。

	    this.nfc.addTagDiscoveredListener(() => {
console.log('successfully attached ndef listener');
alert('启动监听nfc');
}, (err) => {
alert('监听nfc失败' + err);
console.log('error attaching ndef listener', err);
}).subscribe((event) => {
this.tag = event.tag;
this.id = this.nfc.bytesToHexString(event.tag.id);
});

这样子的话,打一个包,直接生成apk文件,找一个有 NFC 的手机就可以测试一下了,NFC的权限不用管,默认都给了,不用额外加权限。

还有 addTagDiscoveredListener 方法是 为匹配任何标签类型的标签注册一个事件侦听器。

如果需要其他的监听类型可以修改,下面是官方的文档,有很多类型根据自己的需要改吧!

https://github.com/chariotsolutions/phonegap-nfc#nfcaddndeflistener

应该没问题!

踩过的坑

首先我没在 app.module.ts 文件里面注入依赖

其次我最开是根据 ionic NFC 官网写的 ,但是官网写的监听事件是 addNdefListener :为任何NDEF标签注册一个事件监听器。,巧就巧在我直接找了张卡去读,结果显示监听是没问题的,但是卡贴上手机就是不走回调,就看github,然后改了个监听的方式,换成了 addTagDiscoveredListener:为匹配任何标签类型的标签注册一个事件侦听器 来监听,就OK了,所以说根据实际的需求,去github也就是上边那个链接选择自己合适的监听事件来监听NFC的消息。就是这样。

结束!

Ionic 使用 NFC的更多相关文章

  1. ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑

    闲话不说,先上图: 这是IOS上的显示效果,代码如下: HTML部分: <body ng-app="starter" ng-controller="actionsh ...

  2. ionic第一坑——ion-slide-box坑(ion-slide分两页的坑)

    ionic.views.Slider = ionic.views.View.inherit({ initialize: function (options) { . . . function setu ...

  3. ionic之$ionicGesture手势(大坑)

    鄙人来本公司前未用过ionic框架,但由于ionic是基于angularjs封装的,正好我用过angularjs,很荣幸的面试就过了,然后通过该网站http://www.ionic.wang(后面简称 ...

  4. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

  5. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  6. Ionic 简单操作

    在使用 Ionic 之前要安装 Nodejs,Cordova . Java 下载Java 网站.Java 默认安装在 C:\Program Files\Java 文件目录. Android 下载And ...

  7. 【初探IONIC】不会Native可不可以开发APP?

    前言 Hybrid技术流行已经有一段日子了,楼主的关注点也一直围绕着移动端围绕着Hybrid相关展开,Hybrid已经是大大提升开发效率的开发方式了,但是仍然需要至少一个IOS与Andriod,那么可 ...

  8. 一个简单移动页面ionic打包成app

    先贴JS代码好了,缓动和调整透明度的功能,最后用ionic打包成应用就可以 window.onload=function(){ search(); move(); calc();}function s ...

  9. 基于ionic+angulajs的混合开发实现地铁APP

    基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...

随机推荐

  1. 使用vscode对threejs的本地调试

    始终坚信阅读和调试结合的方式,才是学习开源的高效方法 一.老版本调试 遥想当年的threejs(使用版本为r75)还没有CommonJS,对于我这个小白可以拿起大刀大杀四方......(咳.咳. 就是 ...

  2. nodejs对字符串进行base64转换和解析

    nodejs不支持使用atob和btoa 进行字符串base64转换,转换方法如下: // 转为base64 var strToBase64 = new Buffer('aaabbbccc').toS ...

  3. 谈谈:这次疫情对一个普通iOS开发者的影响!

    “2019年已经很难了,2020年开局0-5那就更难了啊!”大家应该都很清楚,这次疫情对于国家的整体经济体系影响非常大,但是要说有多大,我也不了解,毕竟我只是个程序员!但是对iOS开发者影响有多大,我 ...

  4. spark集群

    https://blog.csdn.net/boling_cavalry/article/details/86747258 https://www.cnblogs.com/xuliangxing/p/ ...

  5. PPT、Word、Excel模板免费下载

    本篇文章可能只有寥寥数字,但他的作用可能很大,可能帮助到很多朋友.本人喜欢搜集一些资源,也爱免费分享,因为好东西我藏不住,总感觉分享出来更快乐. 网址:https://www.bangongziyua ...

  6. opencv —— normalize 矩阵归一化

    归一化:就是将数据通过某种算法,限制需要的一定范围内. 归一化的目的:简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,如大小关系:或是为了作图,原来很难在一张 ...

  7. P1089题解 津津的储蓄计划

    来水一篇题解 #include <iostream> using namespace std; int main() { int month[12]; int mother=0,have= ...

  8. 面试官:说说TCP和UDP的区别和应用场景

    原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! 上一篇聊完 一文彻底搞懂 TCP三次握手.四次挥手过程及原理 这次聊聊TCP和UDP的区别和场景 TCP/IP 中有两个具有代表 ...

  9. PHP 实现遍历出目录及其子文件

    手册(有PHP4的实现方式哦):https://www.php.net/manual/zh/function.scandir.php 直接附代码吧PHP5和PHP7 直接有scandir()函数,遍历 ...

  10. VSCode添加git bash作为默认终端

    VSC添加git bash作为默认终端的settings.json添加 { "terminal.integrated.shell.windows": "D:\\Progr ...