Изменения в 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 Smart Poster, тип является строкой в формате 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-сообщений и фильтрации необходимых.
Примечание: Приложение всё ещё может автоматически запускаться после касания NFC-метки. Пример Annotated URL показывает, как это сделать на Android.
Удалено QNearFieldManager::TargetAccessModes
Перечисление TargetAccessModes было удалено вместе со способами получения и установки его значений (QNearFieldManager::setTargetAccessModes() и QNearFieldManager::targetAccessModes()).
Функция не поддерживается на платформах Android и iOS.
Удалены QNearFieldShareManager и QNearFieldShareTarget
Обмен файлами через NFC устарел на Android в API 29. Следует использовать другие технологии.
Удален QML API
Поддержка QML API прекращена.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtnfc-changes-qt6.html