美文网首页
iOS11的NFC干起正紧事来太疯狂

iOS11的NFC干起正紧事来太疯狂

作者: 2b3ae5426811 | 来源:发表于2017-08-16 10:29 被阅读0次

    最近,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

    68747470733a2f2f61626c6f61642e64652f696d672f36383734373437303733336132663266363136323630367331672e706e67.png

    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

    今天就先说到这里啦,有任何问题,欢迎大家关注 零道书院 公众号,获取更多资讯。

    相关文章

      网友评论

          本文标题:iOS11的NFC干起正紧事来太疯狂

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