美文网首页程序员
Swift:初探NFC

Swift:初探NFC

作者: Hem1ngTai | 来源:发表于2018-09-17 14:03 被阅读75次

NFC(近场通信)在生活中有很多使用场景,最常见的就是支付,除了刚开始的Apple Pay,到现在的交通卡,一些智能门锁等,都是利用了NFC的技术,可以说NFC的应用极大地提高了生活效率。但是iPhone上的NFC开放给开发者使用的时间稍晚了一点,仅在iPhone 7及其以上的机型并且iOS 11及其以上的系统开发者才有权限使用NFC,而且目前也只是初步的开放,仅支持NFC Tags(标签)的读取。好了,话不多说,进入正题。

这个NFC应用大致原理是扫描含有NFC芯片的卡片,在iPhone的屏幕上,能显示观众随机抽取的卡片对应的图片。自己在开发过程中也是遇到了一些坑,网上的相关资料也不是很多,在此分享一下心得。

首先需要像推送一样打开Capabilities里面的NFC开关,然后在plist文件里添加使用权限说明,在使用NFC时需要导入NFC框架,同时遵守 NFCNDEFReaderSessionDelegate:

import CoreNFC

class ShowViewController: UIViewController, NFCNDEFReaderSessionDelegate

定义一个NFC会话Session的变量:

var nfcSession: NFCNDEFReaderSession?

在viewDidLoad()方法里初始化这个变量并开启会话:

/// invalidateAfterFirstRead 属性表示是否需要识别多个NFC标签,如果是true,则会话会在第一次识别成功后终止; 
/// 不过有一种例外情况,就是如果响应了协议中失败的方法,不管是true还是false,会话都会被终止
nfcSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)
nfcSession?.begin()

最后实现协议方法,协议方法有两个,一个是成功,一个是失败:

/// 读取失败
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)
{}
/// 读取成功
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
{}

在成功回调方法里面,有一个参数message,这个参数是一个数组,数组里的对象是NFCNDEFMessage类型,这个类型有一个属性是records,这个属性也是一个数组,但是里面的对象是NFCNDEFPayload类型,扫描芯片的内容就在这里,所以这里遍历取出扫描的内容:

for myPayload:NFCNDEFPayload in (messages.first?.records)!
{
    let data = myPayload.payload
    imageName = String(data: data, encoding: .utf8)
    ///此处省略逻辑代码
}
session.invalidate()

注意❗️❗️❗️
1、这里的payload是Data类型,如果需要字符串等其他类型,要进行相应的转换。
2、关于卡片读取,这里的卡片一定要支持NDEF格式
3、会话可以读取一个或多个标签,在读取单个标签的时候,读取完成后会话自动终止。如果读取多个标签,会话会一直持续直到程序主动终止会话或者60秒后(60秒是一个最大的节点)。

相关文章

  • Swift:初探NFC

    NFC(近场通信)在生活中有很多使用场景,最常见的就是支付,除了刚开始的Apple Pay,到现在的交通卡,一些智...

  • Swift 中协议的扩展的简单应用

    参考: Swift面向协议编程初探 从 Swift 的面向协议编程说开去 根据下面的结构 设计类和协议 使用:

  • Swift 底层原理初探

    Swift 底层原理初探 1. 编译原理 在iOS中我们经常使用Objective-C和Swift这两门语言进行编...

  • swift初探

    ?操作符 Swift中是可以声明一个没有初始值的属性,Swift中引入了可选类型(Optional)来解决这一问题...

  • Swift初探

    开始之前允许吐槽一下,swift作为apple官方牵头并且为主的语言,特性进行了如此多修改和版本迭代对于一门开发语...

  • Swift 初探

    Swift 学习第一节 @(Swift 深入学习小记) if 语句缺省值的使用。 switch 支持任意类型的数据...

  • 初探swift

    Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LO...

  • Swift初探

    1.自定义打印语句2.代码书写 自定义打印语句为什么要自定义打印语句呢?因为Swift太简单,连打印信息都只有一句...

  • Swift初探

    Swift简介 Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C...

  • Swift初探

    import Foundation//// 输出语句 //print("Hello, World!") // //...

网友评论

    本文标题:Swift:初探NFC

    本文链接:https://www.haomeiwen.com/subject/vkdknftx.html