最近,iOS11的NFC炒的火热,或许大家都等着iOS的NFC登场,然后,小伙伴们一起组队去刷iPhone公交卡了,再也不用嫉妒安卓的小伙伴了QAQ
2014 年苹果就已在 iPhone 6 和 iPhone 6 Plus 添加了 NFC 硬件,以支持 Apple Pay 移动支付系统。但是苹果并未对外开放第三方 App 对 iPhone 的 NFC 控制器访问的 SDK。直到 iPhone 7 和 iPhone 7 Plus 才开始支持读取 NFC 的 NDEF 标签。只有能读取 NFC 的 NDEF(数据交换格式)标签,才能实现 NFC 设备之间的通信。因此,即使苹果在 iOS 11 中提供了 Core NFC 给第三方 App 开发者,但是升级 iOS 11 后的设备中也只有 iPhone 7 和 iPhone 7 Plus 能在第三方 App 得到 NFC 的扩展,更老版本的 iPhone 依然只能刷 Apple Pay。
最近,密码安全"圣经"作者认错,2003年,比尔·伯尔在为美国政府工作期间,写下了关于密码安全的“圣经”。他建议在密码中使用大写字母、数字和符号,认为这样一来,它们就很难被猜出来。正是由于听从了他的建议,公司和网站开始要求人们设置非常复杂的密码,如“P@55w0rd”、“Football123”等等,而IT部门也会要求员工每90天重置一次密码。然而,这些密码并没有提高计算机系统的安全性,反而让它们变得更不安全了,因为用户最后要么重复使用同一个密码,要么把密码写下来贴在屏幕旁边。
NFC的使用,小编正在使用NFC实现一个二次验证的模块,让我们想象一下,如果我的手机没电了~,我想借用下别人的手机登录某个网站,但是我不想再别人的手机上输入密码或者指纹操作,因为这些操作,都有可能在对方手机上留下,这个借我手机的人万一不怀好意怎么办?嗯,恰好,我需要的信息的那个app或者网站,是支持nfc登录的,恰好这个手机也支持nfc。那么,我只要掏出我的nfc物理识别卡,就可以直接登录这个app,无需输入任何东西。一切就是这么方便。
又假如我是一个运维人员,突然之间,接到了领导的电话,说服务器现在怎么不能访问了,这时运维人员只需打开手机,将物理卡靠近手机,就能完成服务器的认证,无需记住一大串的密码,造福了一大堆运维人员呢~
其实,只要是需要输入密码的地方,我们都可以使用NFC卡来解决,免去了大家记住密码的麻烦。
我们来看看在iOS11上,我们如何实现NFC的读写,然后看看NFC的读写是否可以来做更多有趣的事情。
预先准备
1、Xcode 9 Beta
2、iOS 11 device (iPhone 7 / iPhone 7 Plus)
在项目的 .entitlements文件中,添加以下的Key
<key>com.apple.developer.nfc.readersession.formats</key>
<array>
<string>NDEF</string>
</array>
然后在苹果开发者网站中的Provisioning Profile 添加NFC Capability
Coding开始~
import CoreNFC
//新建两个属性,会话和检测到的tag消息
private var nfcSession: NFCNDEFReaderSession!
private var nfcMessages: [[NFCNDEFMessage]] = []
//初始化会话
self.nfcSession = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)
//描述NFC相关信息
self.nfcSession.alertMessage = "将NFC卡放在手机背后的顶部中间部分"
extension NFCTableViewController : NFCNDEFReaderSessionDelegate {
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error) {
print("Error reading NFC: (error.localizedDescription)")
}
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) {
print("检测到NFC Tag:")
for message in messages {
for record in message.records {
print("类型格式: (record.typeNameFormat)")
print("内容: (record.payload)")
print("类型: (record.type)")
print("标识: (record.identifier)")
}
}
self.nfcMessages.append(messages)
}
}
最后打印出来的消息应该是这样的
检测到NFC Tag:
- 类型格式: NFC Well Known
- 内容: google.com
- 类型: 1 bytes
- 标识: 0 bytes
今天就先说到这里啦,有任何问题,欢迎大家关注 零道书院 公众号,获取更多资讯。
网友评论