Qt NFC

Qt 6 是有意识地使框架更高效、更易用的结果。

我们努力在每个版本中保持所有公共 API 的二进制和源代码兼容性。但为了使 Qt 成为一个更好的框架,有些改动是不可避免的。

在本专题中,我们总结了Qt NFC 中的这些变化,并提供了处理这些变化的指导。

新特性和方法

新增功能QNdefRecord::clear()

使用此方法清除 NDEF 记录。

已添加QNdefFilter::match()

使用此方法检查QNdefMessage 是否与给定过滤器匹配。如果匹配成功,该方法返回true ,否则返回false

已扩展QNearFieldTarget::Type

枚举扩展了两种类型:

特性和方法中的更改

更名为 QNearFieldManager::isAvailable()

QNearFieldManager::isAvailable() 更名为QNearFieldManager::isEnabled() 。

添加了访问方法参数QNearFieldManager::isSupported

accessMethod 参数允许检查是否支持特定功能。这很重要,因为不同的平台或操作系统版本可能支持不同的选项。

添加了访问方法参数QNearFieldManager::startTargetDetection

accessMethod 参数允许使用给定的访问方法扫描 NFC 标签。

QNdefNfcSmartPosterRecord::typeInfoQByteArray 改为QString

根据 NDEF 智能海报规范,类型是 UTF-8 格式的字符串。这会影响QNdefNfcSmartPosterRecord::typeInfo() 和QNdefNfcSmartPosterRecord::setTypeInfo() 方法。

更新了QNdefFilter::appendRecord

QNdefFilter::appendRecord 现在会对输入参数执行基本验证,并返回一个布尔值,表明是否将记录附加到过滤器中。

删除的功能和方法

删除了 QNearFieldTarget::url

QNearFieldTarget 的现有子类从未实现该方法。

移除了 QNearFieldTarget::sendCommands

在 Qt 5 中,该方法不是很有帮助,因为它没有提供跟踪中间命令结果的方法。通常情况下,只有在前一条命令成功执行后,才需要发送另一条命令。

正确的做法是手动创建一个命令队列,使用QNearFieldTarget::sendCommand 发送命令,然后使用QNearFieldTarget::requestCompletedQNearFieldTarget::error 单独处理每个命令的结果。

删除了 QNearFieldTarget::keepConnection

删除了QNearFieldTarget::keepConnection()QNearFieldTarget::setKeepConnection() 方法。目前保持连接是默认行为。

移除了 QNearFieldTarget::isProcessingCommand

该方法从未实现,且总是返回false

使 QNearFieldTarget::setResponseForRequest 成为私有 API

该方法不应作为公共 API 公开。请使用QNearFieldTarget::ndefMessageReadQNearFieldTarget::requestResponse 从 NFC 标签读取数据。

已移除 QNearFieldTarget::handleResponse

删除了该方法,因为它只是将调用转发至QNearFieldManager::setResponseForRequest ,而 已成为私有 API。

使 QNearFieldTarget::reportError 成为私有 API

可以使用QNearFieldTarget::error 信号代替。

删除了 QNearFieldTarget::ndefMessagesWritten 信号

QNearFieldTarget::requestCompleted 信号用于 NDEF 消息和自定义命令。id 参数可用于检查哪个请求已实际完成。

删除了 QNearFieldManager::(un)registerNdefMessageHandler。

删除了QNearFieldTarget::registerNdefMessageHandlerQNearFieldTarget::unregisterNdefMessageHandler 方法。

请使用QNearFieldTarget::ndefMessageRead() 和QNdefFilter::match() 检测 NDEF 消息并过滤所需的消息。

注: 一旦触及 NDEF 标记,应用程序仍可自动启动。注释 URL示例展示了如何在 Android 上实现这一功能。

删除了 QNearFieldManager::TargetAccessModes

删除了TargetAccessModes 枚举以及 getter 和 setter 方法(QNearFieldManager::setTargetAccessModes()QNearFieldManager::targetAccessModes() )。

Android 和 iOS 平台不支持该功能。

删除了 QNearFieldShareManager 和 QNearFieldShareTarget

在 Android 的 API 29 中,通过 NFC 共享文件已被弃用。应改用其他技术。

删除了 QML API

已停止对 QML API 的支持。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.