本页面内容

变更内容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::typeInfo 从QByteArray 更改为QString

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

更新了QNdefFilter::appendRecord

QNdefFilter::appendRecord 现对输入参数进行基本验证,并返回一个布尔值,用于指示该记录是否已追加到过滤器中。

已移除的功能和方法

已移除 QNearFieldTarget::url

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

已移除 QNearFieldTarget::sendCommands

在 Qt 5 中,该方法作用有限,因为它无法追踪中间命令的执行结果。通常,只有在前一个命令成功执行后,才需要发送下一个命令。

正确的做法是手动创建一个命令队列,使用QNearFieldTarget::sendCommand 发送命令,并使用QNearFieldTarget::requestCompleted 或QNearFieldTarget::error 分别处理每个命令的结果。

已移除 QNearFieldTarget::keepConnection

已移除方法QNearFieldTarget::keepConnection() 和QNearFieldTarget::setKeepConnection() 。目前,保持连接是默认行为。

移除了 QNearFieldTarget::isProcessingCommand

该方法从未被实现,且始终返回false 。

将 QNearFieldTarget::setResponseForRequest 设为私有 API

该方法不应作为公共 API 对外暴露。请使用QNearFieldTarget::ndefMessageRead 或QNearFieldTarget::requestResponse 从 NFC 标签中读取数据。

移除了 QNearFieldTarget::handleResponse

由于该方法仅将调用转发给QNearFieldManager::setResponseForRequest (该方法现已成为私有 API),因此已被移除。

将 QNearFieldTarget::reportError 设为私有 API

可改用QNearFieldTarget::error 信号代替。

移除了 QNearFieldTarget::ndefMessagesWritten 信号

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

已移除 QNearFieldManager::(un)registerNdefMessageHandler

已移除方法QNearFieldTarget::registerNdefMessageHandler 和QNearFieldTarget::unregisterNdefMessageHandler 。

请使用QNearFieldTarget::ndefMessageRead() 和QNdefFilter::match() 来检测 NDEF 消息并筛选出所需的消息。

注意: 触摸 NDEF 标签后,应用程序 仍可自动启动。带注释的 URL示例展示了如何在 Android 上实现此功能。

已移除 QNearFieldManager::TargetAccessModes

TargetAccessModes 枚举及其对应的获取器和设置器方法(QNearFieldManager::setTargetAccessModes() 和QNearFieldManager::targetAccessModes() )已被移除。

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

移除了 QNearFieldShareManager 和 QNearFieldShareTarget

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

已移除 QML API

已停止对 QML API 的支持。

© 2026 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.