Answers:
iPhone6 / 6s / 6 +不能读取无源NFC标签(也称为发现模式)。关于此主题的信息有很多,所以我想提供一些切实的信息供开发人员考虑。缺少NFC标签读取支持不是由于软件,而是由于硬件。要了解原因,您需要了解NFC的工作原理。NFC通过负载调制方式工作。这意味着询问器(PCD)发射出一个载波磁场,该磁场激励无源目标(PICC)。利用此载波场产生的电势,目标设备便可以解调来自询问器的数据,并通过在同一场上方调制数据来做出响应。这里的关键是目标永远不会创建自己的字段。
如果您查看iPhone6的拆解和零件清单,您会发现存在非常小的NFC环形天线以及AS3923升压器IC的使用。此设计旨在用于自定义microSD或SIM卡使旧手机可以付款。这是移动电话向高功率非接触式POS终端提供卡模拟凭据的应用程序的类型。POS终端充当读取器,借助AS3923芯片为iPhone6供电。AS3923框图清楚地显示了如何通过读取器设备提供的信号增强RX和TX调制。换句话说,iPhone6并不是要提供一个领域,而只是对一个领域做出反应。这就是为什么它的设计仅用于NFC卡仿真以及Peer-2-Peer,但绝对不用于Discovery的原因。
使用HW配件通过iPhone6实现标签发现有多种选择。在这篇博客文章中,我将讨论这些集成以及开发人员如何设计解决方案。我们的低功耗阅读器设计为移动互动提供了有趣的机会,而很少有开发人员在考虑这些机会。
披露:我是TechStars公司Flomio,Inc.的创始人,该公司为从访问控制到付款的应用程序提供感应ID硬件,软件和服务。
更新:如果此传言属实,则将为iPhone实际上支持NFC标签发现模式提供可能性。全玻璃设计不会像当前iPhone的金属背面那样干扰NFC天线。我们已经在某些定制阅读器设计中尝试了这种设计方法(尽管使用了更便宜的材料),并获得了成功,因此我们期待这种改进。
更新:iOS11宣布支持iPhone7 / 7 +的“ NFC阅读器模式”。详细信息在这里。API仅支持在应用程序处于前台(无后台检测)时读取NDEF消息(无ISO7816 APDU)。由于将于2017年秋季发布...请查看WWDC主题演讲的屏幕截图:
从9月9日下午3:30挖掘的iOS 8文档开始,没有提到开发人员可以访问NFC控制器以执行任何NFC操作。其中包括读取标签,写入标签,配对,付款,标签仿真...借助NXP控制器,硬件具有执行这些功能的能力。他们确实提到了手表的第三方应用程序,该应用程序允许酒店住客使用NFC打开房间的门。这是NFC的经典用例,并表明NFC控制器将在某个时候向开发人员开放。请记住,该表不应该在2015年第一季度之前发布。因此,我现在说它已经关闭,但很快就会打开。鉴于“新”
披露:我是NFC公司GoToTags的首席执行官,该公司对苹果向开发人员开放NFC具有明显的既得利益。
-更正与更新-
酒店应用实际上使用蓝牙,而不是NFC。NFC仍然经常用于开门,仅在此示例中不使用。如果手表的NFC控制器打开,则可以使用NFC。
我确实知道Apple意识到了所有这一切,并正在与其顶尖的开发人员和利益相关者进行讨论。由于缺乏对阅读标签的支持,已经出现了巨大的负面影响。像往常一样,我希望苹果最终向开发人员开放与非支付相关的功能(读取标签,配对)。我认为苹果不会允许其他钱包使用。文件共享也可能留给AirDrop。
--- 2016年3月23日更新---
经常有人要求我提供有关此主题的更新。随着Apple发布iPhone SE,许多人再次询问为什么Apple还不支持标签读取。总而言之,Apple目前比NFC的其他用例更关注成功的Apple Pay。苹果可以通过Apple Pay赚很多钱,而从NFC的其他用途中赚的钱更少。当苹果公司认为消费者对NFC和Apple Pay的信任和安全性不会给Apple Pay带来风险时,他们可能会开放NFC标签阅读功能。此处有更多信息。
--- 2017年5月24日更新---
希腊的一名开发人员入侵了iPhone 6s,使其能够通过NFC专用框架读取NFC标签。更多信息和视频。尽管这不是一个长期解决方案,但它为一个悬而未决的问题提供了一些指导:iPhone的NFC控制器中是否有足够的功率为NFC标签供电?看起来答案是肯定的。从最初的测试来看,范围是几厘米,还算不错。功率也可能是可调的。目前正在对此进行调查。这的意义是重大的。如果较旧型号的手机确实具有足够的射频功率用于标签读取/写入,那么当苹果确实打开SDK时,这意味着将有100M的iPhone可以读取NFC标签,而只有新iPhone可以。
目前,苹果尚未像许多此类文章所建议的那样,向开发人员开放对嵌入式NFC芯片的任何访问权限:
清单继续。主要原因(似乎与过去iPhone中添加的许多其他其他硬件功能一样)是Apple希望在为开发人员发布任何API以便开发人员做他们想做的事情之前确保此类技术的安全性。因此,起初,他们只会在内部将其用于自己的需求(例如启动时的Apple Pay)。
NFC标签提供商RapidNFC说:“目前,尚无对NFC控制器的开放访问。” “ iOS 8 GM SDK当前没有NFC API”。
但是最终,我认为我们都可以同意他们将开发这样的API,只是时间问题。
可读取NFC标签的功能已添加到iOS 11中,仅支持iPhone 7和7 plus
作为试驾,我做了这个回购
第一:我们需要启动NFCNDEFReaderSession类
var session: NFCNDEFReaderSession?
session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)
然后,我们需要通过以下方式开始会话:
session?.begin()
并在完成后:
session?.invalidate()
委托(自己应实现)基本上具有两个功能:
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)
这是我的参考苹果文档
当前唯一可用的信息是Apple Pay将在ios8中可用,但这并不能说明是否可以检测到/读取RFID标签或NFC标签。
IMO不允许这种可能性是短视,但实际上这笔钱来自Apple Pay,不一定是允许开发人员访问这些功能-我们在绑定,蓝牙SPP和减少某些功能的访问权限之前就已经看到了。
...但是话又说回来,自第一次宣布以来已经过去了5个小时。
我认为这是某个时候,我们才能看到对NFC的访问是其纯粹的安全性,例如,能够走过某人,掠过它们,并让您的手机查看卡的详细信息,或者只是挥动您的手机在他们留在桌子上的某人的钱包上。
我认为第一步是苹果与银行进行对话,并在允许之前找到更多保护卡和NFC的方法。