在本教程中,您将学习如何使用Corenfc无线连接到其他设备或NFC标签。


这是原始条目的同伴讨论主题 //www.ohdvia.icu/9582458-getting-started-with-core-nfc
1 Like

这肯定是互联网上最全面的教程,用于阅读和编写NFC标签,因此感谢您。我有几个问题,我刚刚开始学习迅速,因为我的第一个编码语言只是一个月前,所以原谅了我任何天真。

  1. 我希望将同一类的不同对象分配给用户读取的不同标签。此类包含不同的数据类型,如字符串,int和图像。哪种有效载荷类型会下降?

  2. 即时编写这些标签而不为用户提供写入的选项,只读取并执行操作一旦读取。你怎么样?

@mjheitz. , 我很高兴你喜欢它!你不必担心在这里听起来朴素,即使你是一名经验丰富的迅速开发人员 - 我们都总是在一起。

我会尽力回答你的问题:

  1. You should be able to mimic the same thing going on in the tutorial for this. I used Location as a very simple model to write to the devices, but you can replace the references to this with your own Codable type (the protocol your type conforms to to make encoding/decoding easier). It still needs to be saved to the tag using NFCNDEFPayload. When you read the tag, you’ll just attempt to decode the records. Note that an NFC tag can save multiple records in the payload, and this tutorial assumed you would only ever have one value in the payload array.

  2. Writing to a tag requires you to connect to a tag and call writeNDEF(_:). You can just leave out the steps it takes to get to this point in your client code. You’ll need to have some way to initially write your data, and this tutorial attempts to break out that concept with the “Admin” tab. It also writes to the tag when the user “updates” the location, but you can also ignore that for your use case.

To perform an action when a tag is read, you can take a look at readLocation(from:) in the sample code. This calls readNDEF(_:) on the tag. Once a tag is successfully read, you can swap out this code to do whatever you need.

如果您还有问题,请告诉我,或者这不够清楚。祝你好运!

参考
可编码教程 Even though it’s a year old, it is still perfectly relevant if you’re not familiar or comfortable with Codable.

关闭 封闭件的一个很好的视频参考。这是我在读取标签时用于处理回调的基本概念。

谢谢!我认为这对我来说已经足够了解这些问题。

还有一个问题。在本教程中,您可以设置一个按钮以召唤提示用户扫描标记的模态。这是真实的,只有iPhone 7只需要&8,8后8代可以在没有提示的情况下读取标签?如果是,我可以根据用户拥有哪个设备,有条件地设置提示符?

教程具有以下内容以检查您的设备是否可以扫描:
guard NFCNDEFReaderSession.readingAvailable else {

NFCNDEFReaderSession.readingAvailable 是您提供包装设备支持代码的方法。

虽然没有提示用户,可以使用xs和beyond进行背景阅读(per 苹果的文件 )

您可以了解通用链接(用于背景阅读) 这里

1 Like

我已经编译了代码,但我收到此错误我正在使用Xcode 12与iOS 14

[Corenfc] 00000002 83FE0180 - [NfcndefReadersession _callbackdidbecomeacctive]:218代表不实现-readerSessionDidBecomeacctive:方法

这意味着您的代码没有实现此协议方法。您可以简单地添加错误所说的,或者它是模糊的,其中实现了其他NFC读取器会话协议方法。

当我尝试编写标记时,我会遇到一个问题。检测到标签,但我收到此警报消息:“ndef标记不包含任何ndef消息”

我已经尝试使用代码的最终版本的Neatocache应用程序,我得到同样的事情。几个月前我在使用Xcode 11时尝试了同样的事情。现在我正在使用Xcode 12,它没有。有什么想法吗?

你最终解决了这个问题吗?我得到了类似的。

在“管理”选项卡中保存位置无法正常工作......我没有成功安装POPUP位置。