СредстваNFC

Типы · NFCTools

Предназначен для управления средствами NFC как объектом конфигурации.

Полное описание, параметры и ограничения

СредстваNFC (NFCTools)

СредстваNFC (NFCTools)

Доступен, начиная с версии 8.3.23.

Свойства:
МеткиNDEF (NDEFTags)

Описание:

Предназначен для управления средствами NFC как объектом конфигурации.

Доступность:

Мобильный клиент, мобильное приложение (клиент).

Использование в версии:

Доступен, начиная с версии 8.3.23.

Методическая информация

Практические примеры

Прочитать сообщение собственной метки и безопасно распознать неизвестную запись

Полный пример начала/отмены сеанса и асинхронного чтения. НеизвестнаяЗаписьNDEF получается от платформы при чтении, не создаётся поддельной Структура.

Где и как запускать

Полный клиентский модуль своей учебной мобильной формы. Сканирование/чтение собственной NFC-метки; без записи и необратимой блокировки.

Подготовка

  1. Только отдельное учебное мобильное приложение/клиент, поддерживающее NFC, на платформе с этими API (начиная с 8.3.23). В проекте мобильного приложения должна быть предусмотрена функциональность NFC; используйте собственный телефон и собственную учебную метку.

  2. В своей управляемой форме создайте команды НачатьУчебноеЧтение и ОстановитьУчебноеЧтение, назначьте одноимённые клиентские обработчики. Полный модуль урока вставьте в модуль этой формы; обработчик оповещения должен быть экспортной асинхронной функцией.

  3. Учебную метку заранее подготовьте собственным контролируемым способом с несекретным содержимым Книга. Не используйте пропуск, платёжную карту, чужую, производственную или ценную метку.

  4. Этот модуль только сканирует/читает и проверяет поддержку операций. ЗаписатьСообщениеАсинх и ЗаблокироватьЗаписьНаМеткуАсинх не вызываются; данные физической метки и возможность её перезаписи не изменяются.

  5. Сканирование создаёт один интерактивный сеанс. Отмена пользователем передаёт Неопределено. После выполнения обработчика сеанс автоматически заканчивается по справке.

&НаКлиенте
Процедура НачатьУчебноеЧтение(Команда)
    Менеджер = СредстваNFC.МеткиNDEF;
    Если НЕ Менеджер.ПоддерживаетсяАктивноеСканирование() Тогда
        Сообщить("Активное NDEF-сканирование здесь не поддерживается");
        Возврат;
    КонецЕсли;
    Оповещение = Новый ОписаниеОповещения("УчебнаяМеткаОбнаружена", ЭтотОбъект);
    Менеджер.ВключитьАктивноеСканирование("Только чтение собственной учебной NFC-метки", Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ОстановитьУчебноеЧтение(Команда)
    СредстваNFC.МеткиNDEF.ОтключитьАктивноеСканирование();
КонецПроцедуры

&НаКлиенте
Асинх Функция УчебнаяМеткаОбнаружена(Метка, ДополнительныеПараметры) Экспорт
    Если Метка = Неопределено Тогда
        Сообщить("Сканирование завершено без обнаруженной метки");
        Возврат Неопределено;
    КонецЕсли;
    Попытка
        Сообщение = Ждать Метка.ПолучитьСообщениеАсинх();
    Исключение
        Сообщить("Чтение метки не выполнено: " + ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;
    Сообщить("Записей в считанном сообщении: " + Строка(Сообщение.Записи.Количество()));
    Сообщить("Размер считанного сообщения: " + Строка(Сообщение.Размер));
    Для Каждого Запись Из Сообщение.Записи Цикл
        Если ТипЗнч(Запись) = Тип("НеизвестнаяЗаписьNDEF") Тогда
            Сообщить("Платформа вернула запись неизвестного типа");
            Сообщить("Идентификатор заполнен: " + Строка(НЕ ПустаяСтрока(Запись.ИдентификаторЗаписи)));
            Данные = Запись.Данные;
            Если Данные = Неопределено Тогда
                Сообщить("Двоичная полезная нагрузка не определена");
            Иначе
                Сообщить("Размер неизвестной нагрузки, байт: " + Строка(Данные.Размер()));
            КонецЕсли;
        Иначе
            Сообщить("Тип известной записи: " + Строка(ТипЗнч(Запись)));
        КонецЕсли;
    КонецЦикла;
    Сообщить("Содержимое записей не выполнялось, URI не открывались, метка не изменялась");
    Возврат Неопределено;
КонецФункции

Разбор по шагам

  1. Перед запуском проверяется ПоддерживаетсяАктивноеСканирование. Оповещение указывает на экспортную Асинх Функция с параметрами Метка и ДополнительныеПараметры, как требует справка.

  2. Отмена или завершение без метки передаёт Неопределено, поэтому обработчик выходит до чтения. Ошибка самого чтения имеет отдельную ветку.

  3. ПолучитьСообщениеАсинх вызывается через Ждать; результат — штатное сообщение с фиксированным массивом записей. Не считаем любой массив чужой метки гарантированно двухэлементным.

  4. НеизвестнаяЗаписьNDEF не имеет конструктора. Ветка с ней выполнится только если физическое сообщение действительно содержит неизвестный платформе тип; на обычной текстовой учебной метке может не выполниться.

  5. Для неизвестной записи проверяем Данные на Неопределено до Размер. Идентификатор проверяется только на заполненность; чужое содержимое не выводится и не интерпретируется.

  6. После обработчика сеанс заканчивается автоматически. Отдельная кнопка позволяет остановить ожидание; новый запуск заменяет незавершённый сеанс по справке.

Как проверить результат

  1. Отмена: сообщение завершения, без попытки чтения. Собственная метка: реальные количество, размер и типы записей.

  2. Неизвестный тип показывает отдельную ветку при реально подходящей метке; его появление не подделывается.

  3. Физические данные не изменены, секреты и URI не выводятся открытым текстом.

Ожидаемый результат

Получен полноценный безопасный цикл чтения, с обработкой отмены и неизвестных данных.

На что обратить внимание

  1. Считанное содержимое недоверенно даже если оно имеет знакомый MIME или домен.

  2. Не подменяйте асинхронную функцию обработчика обычной процедурой: контракт здесь прямо требует функцию.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Проверить возможности устройства до запуска NFC-сеанса

Три проверки менеджера относятся к платформе/устройству. Возможность записи конкретной физической метки определяется отдельным методом объекта метки.

Где и как запускать

Полный клиентский модуль своей учебной мобильной формы. Сканирование/чтение собственной NFC-метки; без записи и необратимой блокировки.

Подготовка

  1. Только отдельное учебное мобильное приложение/клиент, поддерживающее NFC, на платформе с этими API (начиная с 8.3.23). В проекте мобильного приложения должна быть предусмотрена функциональность NFC; используйте собственный телефон и собственную учебную метку.

  2. В собственной управляемой форме создайте команду ВыполнитьПример и назначьте её клиентский обработчик. Вставьте полный модуль урока. Сканирование этим примером не запускается.

  3. Этот модуль только сканирует/читает и проверяет поддержку операций. ЗаписатьСообщениеАсинх и ЗаблокироватьЗаписьНаМеткуАсинх не вызываются; данные физической метки и возможность её перезаписи не изменяются.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Менеджер = СредстваNFC.МеткиNDEF;
    Сообщить("Активное сканирование: " + Строка(Менеджер.ПоддерживаетсяАктивноеСканирование()));
    Сообщить("Фоновое сканирование: " + Строка(Менеджер.ПоддерживаетсяФоновоеСканирование()));
    Сообщить("Запись NDEF на уровне устройства: " + Строка(Менеджер.ПоддерживаетсяЗаписьНаМетку()));
    Сообщить("Сеанс сканирования не начат; чужая метка не читалась и не изменялась");
КонецПроцедуры

Разбор по шагам

  1. СредстваNFC.МеткиNDEF даёт штатный МенеджерМетокNDEF. Не создаём несуществующий Новый МенеджерМетокNDEF.

  2. Активное сканирование — интерактивный сеанс; фоновое — отдельная возможность. Один признак не заменяет другой.

  3. ПоддерживаетсяЗаписьНаМетку на менеджере не доказывает, что конкретная метка перезаписываемая и имеет нужную ёмкость.

  4. Функции возвращают реальные признаки. Ложь — допустимый ответ на неподдерживаемом устройстве, а не повод выдумать Истина.

Как проверить результат

  1. Три фактических признака устройства. Никакой NFC-сеанс автоматически не открыт.

  2. На настольном клиенте этот мобильный API не заменяется COM или браузерным обходом.

Ожидаемый результат

Понятно, какие аппаратные возможности доступны до взаимодействия с меткой.

На что обратить внимание

  1. Поддержка устройства и состояние конкретной метки — разные уровни проверки.

  2. Мобильные разрешения и оснащение телефона нужно подготовить отдельно; пример их не выдаёт себе сам.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.