NFC应用开发技术体系详解

2020-12-14 15:50:59 明华物联网

随着移动支付业务的发展,NFC技术受到越来越广泛的关注,NFC应用的开发需求也越来越迫切。本文对于目前Andorid平台的NFC应用开发的基础知识、工作模式、标签分类、开发流程等进行了深入介绍,并对开发过程中容易出现的问题进行了重点分析,为NFC应用开发者带来帮助。

1 引言

近场通信(Near Field Communication,NFC),又称近距离无线通信,是一种短距离的高频无线通信技术,它允许电子设备之间进行非接触式点对点数据传输,在十厘米内进行数据交换。这个技术由非接触式射频识别(RFID)演变而来,由飞利浦和索尼共同研制开发,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。NFC 提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。

NFC技术充分具备了未来近距离无线互连设备所应有的低功率、低价格、兼容性的特点,使得NFC成为近距 离无线互连领域一种极富竞争力的技术;同时,由于近场通讯具有天然的安全性,因此,NFC技术被认为在移动支付领域具有很大的应用前景,并可广泛的应用于智能媒体、身份识别、信息交换等众多领域,因此更加受到产业链上各级厂商的密切关注。

目前,N F C 技术已经在欧美和日韩得到较为广泛的推广,最为著名的项目包括谷歌钱包(Google Wallet)、ISIS手机钱包(由美国三大电信运营商AT&T、T-Mobile、Verizon发起)等,用户的使用习惯已经逐步形成。对于很多最新的Android旗舰手机,NFC功能已经成为了标配,越来越多的终端厂商也开始着手为自己的设备添加NFC功能。因此随着NFC应用的拓展、NFC终端的普及,各类NFC应用开发的需求将越来越迫切,为此本文将基于Android平台,对NFC应用开发的技术体系加以介绍,希望对NFC开发者带来帮助。

2 NFC基础

为了能够更好地理解NFC应用开发技术体系,开发者首先必须深入了解NFC技术基础。在NFC世界里,只有两个概念:NFC设备和NFC标签。

(1)NFC设备是指内置NFC芯片,支持各种NFC功能的电子设备,如NFC手机;

(2)NFC标签是指能够与NFC设备进行通信,并且可存储少量数据的RFID标签。

NFC设备可以做为读卡器读取NFC标签的数据,也可以模拟一张RFID卡片被其它NFC设备或读卡器读取,还可以与其它NFC设备建立连接进行点对点通信。因此根

据不同的应用方式,目前NFC设备支持以下几种工作模式:读卡器模式、点对点模式及卡模拟模式。

2.1 读卡器模式

读卡器模式是指将NFC设备作为非接触式读卡器, 从其他NFC标签上读取信息。根据读取对象的不同,读卡器模式可细分为两个子类:

(1)读/写标签模式

这里的标签特指包含根据NFC论坛定义的NDEF(NFC Data Exchange Format,NFC数据交换格式)数据的标签。NFC设备能够自动读取这类标签信息,然后分发给相应的应用程序进行处理,实现标签定位、智能海报、导游信息等各类不同的业务功能。

(2)传统读卡器模式

这种模式下,NFC设备象传统非接触式读卡器一样,通过发送寻卡指令与RFID卡片建立连接,然后根据交易需要发送各种非接触式操作指令,从而完成身份认证、电子支付等各种RFID功能。

2.2 点对点模式

点对点模式是指两个NFC设备之间快速建立连接, 并进行信息交互。NFC的短距离交互大大简化整个认证识别过程,使电子设备间互相访问更直接、更安全和更清楚。通过NFC,电脑、数码相机、手机、PDA等多个设备之间可以很方便快捷地进行无线连接,进而实现数据交换和服务。

点对点应用是NFC技术的一个特色,因其能够实现快速的信息交换,可应用于微博互粉、名片交换、游戏互动等方面,因此受到越来越多应用方的青睐。

2.3 卡模拟模式

卡模拟模式是指用NFC设备模拟一个RFID卡片,被其他的NFC设备或非接触式读卡器进行数据读取。这种情 况下,NFC设备可以替代现有大量的IC卡使用场合,包括 商场消费、公交卡、门禁管制等。

NFC设备实现卡模拟模式目前有两种方案,一种是全终端方案,也就是安全模块(SE,Secure Element)芯片集成在NFC设备中;另一种是SWP方案,也就是安全模块集成在SIM卡中,然后通过SWP协议与NFC控制芯片进行交互。

卡模拟模式下,由于安全模块的洗卡、发卡等接口目前尚未有相关的国际规范,Android平台暂未提供相关的开发支持,因此本文将不涉及。

3 Android平台NFC应用开发技术体系

Android平台从2.3版本开始提供NFC支持,到目前的最新版本已经能够实现非常完善的NFC应用功能,包括标签读/写、读卡器应用和点对点应用等。

Android平台的NFC应用开发,其核心就是NFC标签的处理机制,也就是在NFC设备上定义各种NFC标签如何注册、如何分发、如何处理,确保当NFC设备检测到NFC标签时,能够启动正确的应用程序对NFC标签数据进行处理。因此下面我们将首先详细介绍一下NFC标签的分类,然后在此基础上再重点说明NFC应用的开发技术体系。

3.1 NFC标签分类

根据Andorid平台对于NFC标签的划分,NFC标签可 分为3类:NDEF标签、Tech标签和其他标签。只有深入理解各种NFC标签的含义,才能使用正确的方式对不同的NFC标签进行处理。

3.1.1 NDEF标签

NDEF标签是指包含了NFC论坛定义的NDEF数据结构的标签。NDEF标签所包含的内容可能是文本、图片、网址等常用的MIME或URI数据类型,也可以是应用程序自定义的数据类型。

3.1.2 Tech标签

Tech标签是指支持不同NFC技术标准的 标签,目前NFC设备支持以下9类不同的技术标准:

①NfcA 兼容ISO 14443-3A协议;

②NfcB 兼容ISO 14443-3B协议;

③NfcF 兼容JIS 6319-4协议;

④NfcV 兼容ISO 15693协议;

⑤IsoDep 兼容ISO 14443-4协议;

⑥Ndef 兼容NFC论坛定义的NDEF数据标签;

⑦NdefFormatable 这类标签提供了一个格式化操作,有可能将标签数据转换为NDEF格式;

⑧MifareClassic 兼容经典Mifare协议;

⑨MifareUltralight 兼容MifareUltralight协议。

说明:

(1)每个NFC标签可支持上述一类或多类技术,例如IsoDep类型的标签,必然支持NfcA或者NfcB中任一 种,因为14443-4协议是基于14443-3A或者14443-3B中的一种;

(2)根据Android的规定,所有支持NFC的Android设备都必须支持上述第1-7种技术,第8、9两类技术则可选择是否支持;

(3)NDEF标签其实也包含于Tech标签,是Tech标签的一种特例。但由于其处理优先级较高,因此单独分类。当一个NDEF标签没有应用程序处理的情况下,操作系统会将其视做一个Tech标签,尝试寻找其他应用程序进行处理。

3.1.3 其他标签

对于终端所不支持的其他技术标准的标签,统一归为其他类型。

当一个Tech标签没有应用程序处理的情况下,操作系统会将其视做一个其他标签,尝试寻找应用程序进行处理。

3.2 NFC应用开发技术体系

了解了NFC标签的分类,下面我们将结合NFC设备的 工作原理,介绍NFC应用开发的技术体系。如图1所示。

NFC应用开发技术体系详解

图1 NFC技术体系架构

3.2.1 标签注册

正如Android系统的四大组件必须事先注册才能使用一样,Android系统中对于NFC标签的处理机制也采用了同样的方式。在Android设备中,一个应用程序如果希望对NFC标签进行处理,那么必须要预先在操作系统中注册所需处理的标签类型,这样当操作系统检测到NFC标签时,才会根据应用程序注册的处理标签类型进行标签数据的分发。

应用程序的标签注册可分为后台注册和前台注册两种方式(也可看作是静态注册和动态注册):

(1)后台注册是指通过应用程序的配置文件对所需处理的标签类型进行注册;

(2)前台注册是指设备的当前应用程序(即当前设备界面上打开的应用程序)在程序代码中进行标签的动态注册。

两种方式相比较,后台注册实现更简单,不要求注册的应用程序为当前程序;而前台注册方式实现更灵活,同时优先级较后台注册方式更高,但必须是设备的当前应用程序。开发者可以根据注册的标签类型是否需要动态更改、是否允许后台触发、处理优先级高低等选择合适的方式进行标签注册。

3.2.2 标签分发

一个支持NFC的Andorid设备,只要打开了NFC的设置开关,并且屏幕并未被锁的情况下,就会象非接触式POS机一样不断向外发送寻卡指令。如前面所说,NFC设备能够支持多种不同的NFC技术标准,因此NFC设备会采轮询的方式,分别检查是否有上述9种技术标准(具体多少种以NFC设备实际支持为准)的NFC标签存在。

当有NFC标签被检测到后,操作系统按以图2中所描述的方式进行标签数据的分发:

NFC应用开发技术体系详解

图2 NFC标签处理流程

(1)首先检查设备当前应用程序是否通过前台方式注册了对此标签的处理(无论是NDEF标签、Tech标签还是其他标签类型),如有,则将标签转交给当前应用程序处理;

(2)如当前应用程序不能处理标签,首先检查标签是否为NDEF标签;

(3)如为NDEF标签,则分析标签中的具体数据类型,然后查找所有注册了NDEF标签的应用程序,是否有处理能该类型标签的程序,如有则将该标签转发给此程序处理;

(4)如没有应用程序可以处理该NDEF标签,或者这个标签不是NDEF标签,那么就进入到Tech标签处理流 程;

(5)操作系统会检测这个标签兼容的所有技术标准,然后检测所有注册了Tech标签的应用程序,看看是否 有应用程序注册的技术标准是当前标签支持技术标准的子 集,如有则将该标签转发给此程序进行处理。例如:

如果N F C 标签支持的技术标准包括:N f c A 和IsoDep,那么注册了NfcA或IsoDep或{NfcA、IsoDep}的应用程序可以对这个标签进行处理,而注册了{NfcA、IsoDep、MifareClassic}的应用程序则不能处理。

(6)如没有应用程序可以处理该Tech标签时,进入其他标签处理流程;

(7)系统检测是否有应用程序注册了对其他标签的处理,如有则将该标签转发给此应用程序处理。

(8)如果没有任何程序能够处理这个标签,操作系统将其丢弃。

说明:

①标签由终端操作系统统一接收,然后再进行分发处理;

②当多个程序优先级相同时,操作系统会显示处理程序列表让用户选择;

3.2.3 标签处理

应用程序无论通过前台或后台方式进行了处理标签 类型注册,那么当操作系统收到合适的标签,要分发给该 应用程序时,都会通过应用程序提供的回调函数传入标签 数据。应用程序对标签的处理主要分为两种:

(1) 标签数据处理。对于Ndef标签,操作系统读取的标签数据中包含了应用程序所需的信息。应用程序需要根据Ndef标签中声明的内容格式,读取其中的数据信息(如文本、图片、网页链接等等)进行后续处理;

(2) 读卡器应用。对于Tech标签,可将标签视作一个RFID卡片,根据标签支持的技术标准,在设备与标签之间创建一个连接,然后进行各种非接触式操作指令交互,完成所需的RFID交易。

说明:

①对于Ndef类型的标签,应用程序还可以按照NDEF格式对标签内容进行改写(要求标签支持改写,如标签内容已经固化则不行);

②对于非NDEF类型的标签,操作系统读取的标签数据没有实际的数据信息,而只是包含标签的物理ID和一些基本信息;

③对于其他类型的标签,由于无法明确标签支持的协议类型,因此难以做更进一步的处理。

3.3 点对点应用

点对点应用可视为一种特殊的NFC标签应用,但与普通的NFC标签处理又有所不同,这里特别进行说明。点对点应用中,一个NFC设备做为发送方,另外一个NFC设备做为接收方。当发送方检测到另一个NFC设备进入到监测范围后,将提示用户是否触发点对点应用,如用户点击设备确认后,发送方设备将模拟一个NFC标签,向接收方发送指定的标签数据。

说明:

(1)点对点应用中,发送的数据消息是采用NDEF格式进行编码的;

(2)对于接收方,接收点对点消息与接收普通标签是一致的;

(3)对于发送方,必须打开具有点对点功能的应用程序才能触发点对点应用。应用程序在实现时有两种方式:

①一种是预先设定一个NDEF消息进行发送,只要触发点对点应用就发送一个固定的消息内容;

②另一种是在应用程序中设定一个回调函数,当点对点应用被触发时,操作系统会调用应用程序提供的回调函数,动态生成一个NDEF消息进行发送。

4 束语

随着NFC产业链日益成熟, NFC技术已经逐渐成为移动支付的国际标准和支付产品发展的主流,NFC应用开发必将成为新的热点。本文在介绍NFC技术的基础上,对于Android平台下的NFC应用开发技术体系进行说明,并重点对Android系统中NFC标签的处理机制进行了详细的阐述,希望能够对NFC应用开发者带来裨益。

首页
产品
动态
联系