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 标签时,应用程序仍然可以自动启动。Annotated URL 示例显示了在 Android 上如何实现它。

已删除 QNearFieldManager::TargetAccessModes

已删除枚举 TargetAccessModes 以及相应的获取和设置方法(QNearFieldManager::setTargetAccessModes()QNearFieldManager::targetAccessModes())。

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

已删除 QNearFieldShareManager 和 QNearFieldShareTarget

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

已删除 QML API

对 QML API 的支持已被停止。

© 2024 Qt Company Ltd. 本文档中包含的贡献文档均为各自所有者的版权。所提供的文档基于自由软件基金会的发布,受GNU自由文档许可版本1.3条款的约束。GNU自由文档许可版本1.3。Qt及其相关标志是Qt Company Ltd.在芬兰及其他国家和地区的商标。所有其他商标归各自所有者所有。