使用iPhone 6 / iOS 8读取NFC标签
现在,苹果刚刚宣布iPhone 6将有一个NFC芯片,有谁知道如果iOS 8将启用阅读/检测iPhone 6设备的RFID标签? 任何人有任何细节可以分享?
iPhone6 / 6s / 6 +不能读取无源NFC标签(又名发现模式)。 关于这个话题有很多错误的信息,所以我想为开发者提供一些有形的信息来考虑。 NFC标签读取支持的缺乏不是因为软件,而是因为硬件。 要理解为什么,你需要了解NFC的工作原理。 NFC通过负载调制来工作。 这意味着询问器(PCD)发射激励被动目标(PICC)的载波磁场。 利用这个载波场所产生的潜力,目标能够解调来自询问器的数据,并通过在这个相同的场之上调制数据来进行响应。 这里的关键是,目标永远不会创build自己的领域。
如果你看看iPhone6拆解和零件清单,你会看到一个非常小的NFC环形天线的存在以及使用AS3923升压IC 。 这种devise是为了定制microSD或SIM卡 ,使旧手机支付。 这是移动电话向高功率非接触式POSterminal提供卡仿真凭证的应用types。 POSterminal作为阅读器,在AS3923芯片的帮助下激活iPhone6。 AS3923框图清楚地显示了RX和TX调制如何从读取器设备提供的信号中提升。 换句话说,iPhone6并不意味着提供一个领域,而只是对其中一个做出反应。 这就是为什么它的devise只适用于NFC卡仿真,也许是Peer-2-Peer,但是绝对不能标记Discovery。
使用硬件附件可以实现使用iPhone6实现标签发现的一些select。 我将讨论这些集成以及开发人员如何在此博客文章中构build解决scheme。 我们的低功耗阅读器devise为开发人员正在考虑的移动互动提供了有趣的机会。
披露:我是Flomio公司的创始人,这家TechStars公司为从访问控制到付款的各种应用提供近距离ID硬件,软件和服务。
更新:如果这个传闻是真的话,将开放iPhone实际支持NFC标签发现模式的可能性。 全玻璃devise不会像当前iPhone的金属背面那样干扰NFC天线。 我们试图用这种devise方法 – 尽pipe用更便宜的材料 – 在我们的一些定制读卡器devise上取得成功,所以期待这种改进。
更新:iOS11已经宣布支持iPhone7 / 7 +的“NFC读卡器模式”。 详情在这里 。 API只支持读取NDEF消息(无ISO7816 APDU),而应用程序处于前台(无后台检测)。 2017年秋季发布…查看WWDC主题演示的截图:
从截至9月9日下午3点30分可用的iOS 8文档中,没有提到开发人员访问NFC控制器来执行任何NFC操作; 包括阅读标签,书写标签,配对,支付,标签仿真…鉴于其恩智浦控制器的硬件有能力执行这些function。 他们提到了手表的第三方应用程序,允许酒店客人使用NFC打开房间门。 这是NFC的一个经典用例,并且提供了一些NFC控制器将在某个时间向开发者开放的指示。 请记住,手表不应该直到2015年第一季度才会发布。所以现在我会说它已经closures,但是很快就会开放。 鉴于美国一般消费者对非接触式支付的“新颖性”,以及最近的安全漏洞,苹果公司希望暂时closures,这并不奇怪。
披露:我是GoToTags的首席执行官, 这是一家在苹果向开发者开放NFC方面明显的既得利益的NFC公司。
—更正和更新—
酒店的应用程序实际上使用蓝牙,而不是NFC。 NFC仍然经常被用于开门,而不是在这个例子中。 如果手表具有开放的NFC控制器,则可以使用NFC。
我知道苹果已经意识到了这一切,正在和他们的顶级开发者和利益相关者讨论这个问题。 对阅读标签缺乏支持已经有了大量的负面推动。 与往常一样,我期望苹果最终向开发者提供与付款无关的function(阅读标签,配对)。 我不认为苹果会允许其他钱包。 文件共享也可能留给AirDrop。
— 2016年3月23日更新—
我不断要求有关这个主题的更新,通常与这个职位的人参考。 随着苹果发布iPhone SE,许多人再次问苹果为什么还不支持标签阅读。 总之,苹果现在比以前的其他NFC应用案例更侧重于Apple Pay。 苹果可以从Apple Pay赚到很多钱,而从NFC的其他用途上来看,这个数字还是less得可怜的。 当苹果认为消费者对NFC和Apple Pay的信任和安全性不会使Apple Pay处于风险之中时,他们可能会开启NFC标签阅读。 更多信息在这里 。
— 2017年5月24日更新—
希腊的一位开发人员已经攻击iPhone 6,通过NFC私有框架读取NFC标签。 更多信息和video 。 虽然这不是一个长期的解决scheme,但它为一些未解决的问题提供了一些指导:iPhone的NFC控制器是否有足够的电力为NFC标签供电? 看起来答案是肯定的 。 从最初的testing范围是几厘米,这不是太糟糕。 这也可能是权力是可调的; 目前正在调查中。 这个影响是显着的。 如果旧型号手机具有足够的射频功率来读取/写入标签,那么当苹果确实打开SDK时,意味着将会有100M的iPhone可以读取NFC标签,而只有新的iPhone可以。
目前,没有任何开放的NFC控制器。 目前iOS 8 GM SDK中没有NFC API,这将表明NFCfunction将在发布时限于Apple Pay。 这是我们的理解。
显然,iPhone 6内部的恩智浦芯片很可能会做得更多,所以这并不意味着附加function(配对,标签扫描/编码)将不会在发布或不久的将来添加。
目前,苹果公司还没有开放任何接入embedded式NFC芯片给开发人员的许多文章,如这些:
- 苹果公司在iPhone 6,6+与日常技术开发禁令NFC跛子
- 苹果公司将iPhone 6和6 Plus中的NFC天线限制在苹果公司的谣言中
- 苹果确认iPhone 6的NFC芯片仅适用于 Mac版Cult 发布的Apple Pay
- 苹果最初将iPhone 6,iPhone 6 Plus NFC芯片限制在Tech Times的Apple Pay上
名单继续。 主要的原因似乎(像过去添加到iPhone的其他硬件function),苹果希望确保这种技术的安全性之前,释放任何API的开发人员,让他们做任何他们想要的。 所以一开始他们只会在内部使用它(如Apple Pay在发布时间)。
NFC标签供应商RapidNFC表示:“目前,NFC控制器没有任何开放的接入点。 “iOS 8 GM SDK目前没有NFC API”。
但最终,我认为我们都可以同意开发这样的API,这只是时间问题。
阅读NFC标签的能力已被添加到只支持iPhone 7和7 plus的iOS 11
作为试驾,我做了这个回购
第一:我们需要启动NFCNDEFReaderSession类
var session: NFCNDEFReaderSession? session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)
那么我们需要通过以下方式开始会话:
session?.begin()
完成后:
session?.invalidate()
代表(自己应该执行)基本上有两个function:
func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage]) func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)
这里是我参考的苹果文档
目前唯一可用的信息是Apple Pay将会在ios8上提供,但是这并不能说明是否能够检测/阅读RFID标签或NFC标签。
国际海事组织(IMO)认为这是一个不容许这种可能性的短视行为,但实际上这笔钱是在Apple Pay中,而不一定是允许开发者访问这些function – 我们之前已经看到了这种function,蓝牙SPP和某些function。
…但是再一次,从第一次发布到现在已经过去了大约5个小时。
我认为在我们看到接入NFC作为其纯安全性的一面之前,比如能够经过某人刷过他们,并且让你的手机到达卡的详细信息或简单地挥动你的手机在他们留在桌子上的钱包上。
我认为第一步是让苹果与银行交谈,并find更多的方法来确保卡和NFC的安全