【问题标题】:Xamarin.iOS Write NFCXamarin.iOS 写入 NFC
【发布时间】:2020-03-11 07:50:15
【问题描述】:

如何使用 Xamarin.iOS 编写 NFC 标签?假设这还不可能 - 因为我在 API 文档或 Xamarin Forms 的发行说明中找不到任何提及这一点:是否有时间表可以预期?

另外,目前有解决办法吗?

【问题讨论】:

  • Xamarin.iOS 通过 9 月底添加的 iOS 13 支持已经支持它,它正在使用对 CoreNFC 的添加:Apple 有一个基于 Swift 的示例,可以转换为Xamarin.iOS 相当快(FishTagCreater 应用程序,只需几十行代码)developer.apple.com/documentation/corenfc/…
  • 感谢您的链接。我没有找到任何可用于将该示例翻译成的 Xamarin.iOS API。我在 docs.microsoft.com 上找到的关于 corenfc 的所有信息都与 iOS11 相关(即仅读取 ndef 记录有效负载):docs.microsoft.com/en-us/xamarin/ios/platform/… 和附近页面。如何编写 APDU 命令?
  • 我面前没有我的代码,但是你从你的 NFCTagReaderSession 中得到一个标签,并且每种类型的标签都有一个 SendCommand (ObjC: sendCommandAPDU) 方法。

标签: ios xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

Xamarin.iOS 的美妙之处在于,您可以使用本机 Apple 库执行的所有操作都可以在 C# 中执行。因此,如果使用原生库使用 Swift 有可能,您将能够使用该库的 C# 版本,在您的情况下使用 CoreNFC。

所以下一步就是弄清楚如何用 C# 编写 Swift/Obj-C 代码。 使用Apple docs,很明显您只有某些类型的标签可以使用 iPhone 写入。所以让我们选择使用 NFCISO7816Tag。

首先,您必须创建一个实现INFCIso7816Tag 的类。所以我创建了实现INFCIso7816TagNFCIso7816Tag。我适当地填写了所有内容。之后,在我的代码中,我创建了一个NFCIso7816Tag 的实例,还创建了一个NFCIso7816SendCompletionHandler 类型的actionHandler 委托。所以你的代码看起来像这样:

var tag = new NFCMiFareTag();
tag.SendCommand(new NFCIso7816Apdu(...), actionHandler);

最后,不要忘记使用较新的设备,因为您无法在较旧的设备上写入 NFC!

Here's a list of projects 使用 CoreNFC,它可能会让您先了解如何自己实现它!


2020 年 5 月编辑:

我写了一篇解释How to get started with NFC on iOS and Android apps using Xamarin Forms的文章,还创建了this video。有一个很棒的用于 Xamarin 表单的 nuget 包,称为 Plugin.NFC,它还允许您使用 iOS 编写标签

【讨论】:

  • @parvus 你能在哪里解决这个问题?我刚刚用新信息更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多