一个新的 flutter 插件可帮助开发人员使用 iOS 或 Android 设备内部硬件来读取和写入 NFC 标签。
系统激活一个池读取会话,一旦识别出标签,该会话就会自动停止。您还可以使用专用函数手动触发停止事件。
平台 | 支持的 NFC 标签 |
---|---|
安卓 | NDEF: A、B、F、V、条形码 |
iOS系统 | NDEF: NFC 类型 1、2、3、4、5 |
添加到 pubspec.yaml:
依赖项:flutter_nfc_reader:^0.2.0
或者获得实验性的:
依赖项:flutter_nfc_reader:git:url:git://github.com/matteocrippa/flutter-nfc-reader.git 参考:开发
然后运行外壳
颤振包获取
最后一步导入到项目中:
导入'包:flutter_nfc_reader/flutter_nfc_reader.dart';
将这两行添加到顶部的AndroidManifest.xml
<uses-permission android:name="android.permission.NFC" /> <uses-featureandroid:name="android.hardware.nfc"android:required="true" />
在build.gradle (Module: app)
默认配置 {... minSdkVersion 19... }
Atm 仅支持基于Swift
的 Flutter 项目。
启用功能/近场通信标签读取。
Info.plist 文件,添加隐私 - NFC 扫描使用说明以及字符串值 NFC 标签。
在您的 Podfile 顶部添加此代码
平台:ios,'8.0'use_frameworks!
当发生读取时,此函数将返回一个承诺,直到读取会话打开为止。 Promise 将返回一个NfcData
模型,该模型包含:
FlutterNfcReader.read()
和FlutterNfcReader.onTagDiscovered()
有一个可选参数,仅适用于iOS ,称为instruction
。您可以传递一个包含要在模式屏幕中显示的信息的字符串。
id > 标签的 id
内容 > 标签的内容
错误 > 如果发生任何错误
FlutterNfcReader.read().then((response) {print(response.content); });
该函数将返回一个 Stream,每次识别标签时都会发出NfcData
。在 Ios 上,您也可以使用此功能,但当 IOS 想要扫描 NFC 标签时,它始终会显示底部表单。因此,当您需要第二个值时,您需要显式强制转换FlutterNfcReader.read()
。订阅流时,第一次调用 read 函数。查看示例以获取示例实现。
FlutterNfcReader.onTagDiscovered().listen((onData) { print(onData.id); print(onData.content); });
当写入发生时,该函数将返回一个承诺,直到读取会话打开为止。 Promise 将返回一个NfcData
模型,该模型包含:
内容 > 写在标签中
FlutterNfcReader.write("path_prefix","标签内容").then((response) {print(response.content); });
您可以使用上述函数读取并写入 nfc 标签,如下所示
FlutterNfcReader.read().then((readResponse) {FlutterNfcReader.write(" ",readResponse.content).then((writeResponse) {print('写入: ${writeResponse.content}'); }); });
状态 > ncf 读取或写入停止的状态
FlutterNfcReader.stop().then((response) {print(response.status.toString()); });
有关更多详细信息,请查看演示应用程序。
为了检查设备是否支持 NFC,您可以调用FlutterNfcReader.checkNFCAvailability()
。当支持并启用 NFC 时,该方法返回NFCAvailability.available
;当 NFC 被禁用(仅限 Android)时,该方法返回NFCAvailability.disabled
;当用户的硬件不支持 NFC 时,该方法返回NFCAvailability.not_supported
。
iOS 在 NFC 扫描和写入方面的行为略有不同。
当前实现中不可能有标签 ID
用户可以通过底页看到每次扫描
如需 Flutter 入门帮助,请查看我们的在线文档。
有关编辑插件代码的帮助,请查看文档。
请先快速浏览一下贡献指南。如果您在此处看到不再维护或不合适的包或项目,请提交拉取请求以改进此文件。感谢所有贡献者!!
要在 ios 上进行开发,您需要激活“旧版”构建系统,因为 flutter 中存在以下问题:
颤振/颤振#20685