使用iPhone 6 / iOS 8读取NFC标签

96
既然苹果刚刚宣布iPhone 6将拥有一个NFC芯片,那么有没有人知道iOS 8是否会使iPhone 6设备能够读取/检测RFID标签?有没有人可以分享相关细节?
7个回答

170
iPhone6/6s/6+不支持Passive NFC标签读取(也称为发现模式)。关于这个问题有很多错误的信息,因此我想提供一些具体的信息供开发人员考虑。缺乏NFC标签读取支持并不是由于软件而是由于硬件。要理解原因,您需要了解NFC的工作原理。NFC通过负载调制方式工作。这意味着询问器(PCD)发射一个载波磁场,激发被动目标(PICC)。通过该载波场产生的电势,目标能够解调来自询问器的数据,并通过在同样的场上调制数据来响应。关键在于目标从未创建自己的场。
如果您查看iPhone6的拆解和零件清单,您将看到非常小的NFC环形天线以及AS3923助推器IC的使用。这种设计旨在为定制的microSD或SIM卡提供支持,以使旧手机能够进行支付。这是移动电话呈现卡模拟凭据给高功率无接触POS终端的应用程序类型。POS终端充当读卡器,通过AS3923芯片帮助激活iPhone6。 AS3923块图清楚地显示了如何从读取设备呈现的信号来增强RX和TX调制。换句话说,iPhone6并不意味着要提供一个场,而只是对一个场做出反应。这就是为什么它的设计仅适用于NFC卡模拟,可能是点对点,但绝对不是标签发现的原因。

AS3923 booster IC

有一些替代方案可以使用硬件配件在iPhone6上实现标签发现。我在这篇博客文章中谈到了这些集成以及开发人员如何构建解决方案。我们的低功耗读写器设计为移动参与提供了有趣的机会,但很少有开发人员考虑。

声明:我是Flomio,Inc.的创始人,这是一个TechStars公司,为从访问控制到支付等各种应用提供接近识别硬件、软件和服务。

更新:这个谣言如果属实,将使iPhone几乎支持NFC标签发现模式的可能性增加。全玻璃设计不会像当前iPhone的金属背板那样干扰NFC天线。我们已经尝试过这种设计方法,尽管使用了更便宜的材料,但在一些自定义读写器设计中取得了成功,期待这种改进。

更新:iOS11宣布支持iPhone7 / 7+的“NFC读取器模式”。详情请看这里。API仅支持在应用程序处于前台时读取NDEF消息(无ISO7816 APDU),而不支持后台检测。将于2017年秋季发布...请查看WWDC主题演讲的屏幕截图:

enter image description here


2
我不是硬件专家,但 iPhone 的拆解是否可能没有显示所有内容?这是最终分析吗?无法读取被动 NFC 标签? - Salaryman
3
根据我对多个NFC读卡器的拆解分析、电路板设计研究以及观察iPhone6在NFC使用时的表现,我认为如此。尽管我自己没有亲自拆开过iPhone6,但不能排除在某个角落里藏着一个空气线圈电感器,并且在AS3923周围有迂回的线路,但这种设计方式不太常见,而且最多只能勉强读取标签。 - grundyoso
你能为iPhone 6S做类似的分析吗? - Randomblue
1
@Randomblue 我在 iPhone 6S 推出时审查了 iFixit 的分解,增强芯片和小天线的设计仍然存在。我们的硬件配件正在不断成熟地满足这种需求,并通过频繁更新 Flomio SDK 来实现轻松集成。考虑加入我们在 TrackHack 玩耍,以及与其他 RFID 供应商的神奇硬件一起玩耍。 - grundyoso
嘿伙计们,我有一个问题,如果这一切是真的,那么怎么可能发生: http://www.idownloadblog.com/2017/06/30/nfcwriter/ 我错过了什么? - Flavio_Lima
显示剩余3条评论

43
根据9月9日下午3:30发布的iOS 8文档,没有提及开发者可以访问NFC控制器以执行任何NFC操作,包括读取标签、写入标签、配对、支付和标签仿真。鉴于它是一个NXP控制器,硬件具备执行这些功能的能力。他们提到了一款第三方应用程序,允许酒店客人使用NFC打开房门。这是NFC的经典用例,并表明NFC控制器将在某个时候向开发者开放。请记住,手表预计要到2015年第一季度才发布。因此,目前我认为它是关闭的,但很快就会开放。考虑到接触式支付对美国普通消费者的“新鲜感”以及最近的安全漏洞,苹果想要暂时保持封闭状态并不奇怪。

披露:我是GoToTags的首席执行官,这是一家NFC公司,对苹果开放NFC给开发者具有明显的利益。

---更正和更新---

酒店应用实际上使用的是蓝牙而不是NFC。 NFC仍然经常用于开锁,只是在这个例子中没有使用NFC。如果手表有一个开放的NFC控制器,那么可以使用NFC。

我知道苹果已经意识到这一问题,并正在与他们的顶级开发人员和利益相关者讨论。由于缺乏对标签阅读的支持,已经出现了大规模的负面反响。过去常见的情况是,我预计苹果最终会向开发人员开放此功能,以供非支付相关的功能使用(如阅读标签、配对)。但我不认为苹果会允许其他钱包的存在。文件共享可能也只能留给AirDrop来完成。
--- 2016年3月23日更新 ---
我经常被问及有关此主题的更新,通常是人们引用此帖子。随着苹果发布iPhone SE,许多人再次问为什么苹果还没有支持标签阅读。总的来说,苹果现在更专注于Apple Pay的成功,而不是NFC的其他用例。苹果可以从Apple Pay中赚取很多钱,而从NFC的其他用途中获得的收益则较少。当苹果感到消费者对NFC和Apple Pay的信任和安全性足以不会将Apple Pay置于风险之中时,它可能会开放NFC标签阅读功能。更多信息请参见此处
--- 2017年5月24日更新 ---
一个希腊的开发者已经破解了iPhone 6s,通过NFC私有框架让其能够读取NFC标签;更多信息和视频。虽然这不是一种长期解决方案,但它提供了一些关于一些未解决问题的指导:iPhone的NFC控制器是否有足够的功率来驱动NFC标签?看起来答案是。从初步测试来看,范围只有几厘米,但已经很不错了。这也可能是功率可调节的;目前正在进行调查。这样做的影响是非常大的。如果旧型号手机确实具有足够的RF功率用于标签读写,那么当苹果公司开放SDK时,就意味着将有数亿的iPhone可以读取NFC标签,而不仅仅是新的iPhone。

在阅读我找到的Apple Pay文档时,没有提到NFC。目前这就是我能找到的全部资料。我还不确定iPhone 6是否有NFC功能。我看过一篇新闻文章中提到了它,但记者可能把一个支付系统API和NFC支付混淆了。你能分享一下来自苹果公司的任何文件链接吗?确认iPhone 6将具备NFC硬件吗? - strwils
7
你看到直播了吗?他们在谈论Apple Pay时出现了一个很大的“NFC”字样。去看看TechCrunch的录像。 - craig.tadlock
没有,谢谢,我会去看看的。 - strwils
如果API对于普通的iOS开发者可用,那就太好了,但是他们花了两年时间才发布TouchID的API,所以这点需要注意。我敢打赌,NFC将被保留给苹果专有功能,比如ApplePay,也许还有一些联系人交换,但仅限于此。 - tricknology
2
@tricknology TouchID自iPhone 5S推出以来只有大约一年的时间。该API是在3个月前向开发人员发布的。 - Tim Bodeit
显示剩余2条评论

5

目前,NFC控制器没有开放访问权限。 iOS 8 GM SDK 中当前没有 NFC API - 这表明在发布初期,NFC功能将仅限于Apple Pay。这是我们的理解。

显然,iPhone 6内部的NXP芯片可能能够做更多事情,因此这并不意味着其他功能(配对、标签扫描/编码)不会在发布或不久的将来添加。


2

iOS 11新增了读取NFC标签的功能,只有iPhone 7和7 Plus支持

我创建了这个仓库来测试

首先,我们需要初始化NFCNDEFReaderSession类

var session: NFCNDEFReaderSession? 
session = NFCNDEFReaderSession(delegate: self, queue: nil, invalidateAfterFirstRead: false)

那么我们需要通过以下方式开始会话:

session?.begin()

完成后:

session?.invalidate()

这个代理(应该由self实现)基本上有两个功能:

func readerSession(_ session: NFCNDEFReaderSession, didDetectNDEFs messages: [NFCNDEFMessage])
func readerSession(_ session: NFCNDEFReaderSession, didInvalidateWithError error: Error)

here is my reference Apple docs


我也在尝试测试Core NFC。你已经有什么进展了吗?我知道现在才是第一天 :) - Blisterpeanuts
@Blisterpeanuts 我更新了我的答案,但由于CoreNFC中缺少x86_64架构,它还没有完全工作,但我很快会解决它。 - zombie
有些人已经成功地实现了它。请参见https://dev59.com/WFcP5IYBdhLWcg3wd5qm#44385819。 - Blisterpeanuts

2
目前,苹果公司并未向开发者开放嵌入式NFC芯片的任何访问权限,正如许多文章所建议的那样,例如:Daily TechMac RumorsCult of MacTech Times等。主要原因似乎是(就像过去添加到iPhone中的许多其他硬件功能一样)苹果希望在发布任何API之前确保这种技术的安全性,以便让开发者随意使用。因此,在最初阶段,他们将仅在内部使用它以满足其自身需求(例如,在推出时的Apple Pay)。
引用RapidNFC(一个NFC标签提供商)的话说:“目前没有任何对NFC控制器的开放访问权限,iOS 8 GM SDK中目前没有NFC API。”
但是,最终,我认为我们都可以同意他们将开发这样的API,这只是时间问题。

7
你意识到你引用的文章是以这个问题作为来源吗?它已经成了一个循环...... - craig.tadlock
我不知道技术记者会将 Stack Overflow 作为信息来源,但我想这是有道理的。无论如何,我的观点只是要引用来源,因为原始问题是关于我们开发人员是否能够使用嵌入在最新 iPhone 中的 NFC 芯片来发布代码的能力。 - m4rtin
“但是最终,我认为我们都可以同意他们会开发这样的API,只是时间问题。” 不,这是钱的问题!要花费多年的时间才能获得完整的蓝牙支持,他们不想听闪存和NFC技术的话题,只谈支付部分。苹果只有在能赚钱的情况下才会集成技术。他们绝对不关心技术可以为用户提供的服务! - fralbo

1
目前唯一已知的信息是,Apple Pay 将可在 iOS 8 上使用,但这并没有说明是否能够检测/读取 RFID 标签或 NFC 标签。我认为不允许这种可能性是短视的做法,但实际上钱在于 Apple Pay,而不一定在于允许开发者访问这些功能——我们以前见过这种情况,比如数据共享、蓝牙 SPP 和对某些功能的减少访问权限。...但另一方面,距第一次公告已经过去了约5个小时。

2
iPhone 6的NFC数据能被现有的NFC读卡器读取吗? - tricknology

-2

我认为在我们能够访问NFC之前,还需要一些时间,因为它的纯安全性方面,例如能够走过某人身边,刷过他们并获取你的手机来扫描卡片详细信息,或者只需将你的手机挥动到某人留在桌子上的钱包上。

我认为第一步是苹果与银行交谈,并找到更多保护卡片和NFC的方法,然后才会允许这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接