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. Hadoop-HDFS(HDFS-HA)

    HDFS(Hadoop Distributed File System) 分布式文件系统,HDFS是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问,非常适合大规模数据集 ...

  2. C# WPF可拖拽的TabControl

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. C# WPF可拖拽的TabControl 阅读导航 本文背景 代码实现 本文参考 源码 1. ...

  3. nodejs爬虫--抓取CSDN某用户全部文章

    最近正在学习node.js,就像搞一些东西来玩玩,于是这个简单的爬虫就诞生了. 准备工作 node.js爬虫肯定要先安装node.js环境 创建一个文件夹 在该文件夹打开命令行,执行npm init初 ...

  4. PHP操作mysql(mysqli + PDO)

    [Mysqli面向对象方式操作数据库] 添加.修改.删除数据 $mysqli ','test'); $mysqli->query('set names utf8'); //添加数据 $resul ...

  5. React HOC(高阶组件)

    一.定义 高阶函数:函数接受函数作为输入,或者输出一个函数. 高阶组件:接受React组件作为输入,或是输出一个组件.即hocFactory:: W: React.Component => E: ...

  6. Excel——排序筛选

    1,自定义排序:多个关键字,从右向左一一排序 * 按颜色排序 * 按自定义序列排序 *两列中,列一个中间数,升序 * 打印标题行 * 选中,定位条件(可见),选择 * 数值筛选(大于等于),文本筛选( ...

  7. thinkPHP5.1模型User设计

    创建一个User类,再引入think\Model,让User类继承Model 例: <?php namespace app\index\model; use think\Model; class ...

  8. Linux 文件(持续更新)

    一.文件类型 Linux操作系统把所有内容(文件.图片.视频.设备)都当作文件看待.处理,即一切皆文件. Linux系统把所有文件分为七种类型: 文件类型 文件类型标识 说明 使用ls -l命令查看文 ...

  9. P1308 统计单词数(cin,getline() ,transform() )

    题目描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给 ...

  10. Java教程-修炼

    在2020这个特殊的时期,在家就是为国家做贡献!一切都会好起来的,加油中国!! Java 第一章 Java概述 1.1 Java历史 1.2 Java语言最主要的特点 1.3 Java环境搭建 1.3 ...