Тестирование и диагностика близкого взаимодействия в приложениях (HTML)

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Этот раздел содержит правила для разработчиков приложений по тестированию и диагностике близкого взаимодействия перед отправкой приложения в Магазин.

Перед началом работы

Близкое взаимодействие очень удобно для организации взаимодействия между двумя экземплярами приложения, работающими на двух разных устройствах. Пользователям приложений с поддержкой бесконтактного режима достаточно соприкоснуться двумя устройствами, чтобы инициировать подключение, либо пользователь может выполнить обзор и найти в беспроводном диапазоне другое устройство, на котором запущено приложение. Поиск одноранговых приложений на других компьютерах осуществляется с помощью WiFi-Direct. В Windows Phone поиск одноранговых приложений происходит через Bluetooth, с помощью которого можно найти одноранговые приложения, работающие на других телефонах.

Для проверки возможностей ответа на жест касания каждое устройство должно иметь модуль близкого взаимодействия, например радиомодуль беспроводной связи ближнего радиуса действия (NFC). Для проверки возможностей использования беспроводного обзора на компьютерах каждый компьютер должен поддерживать Wi-Fi Direct.

Примечание  Для проверки возможностей обзора для приложений магазина Windows Phone каждый телефон должен поддерживать Bluetooth.

Настройки для тестирования:

Если у вас нет оборудования, которое поддерживает радиочастотную связь ближнего действия (NFC), можно использовать пример драйвера близкого взаимодействия, который входит в число примеров в комплекте разработки драйверов для Windows (WDK). Вы можете использовать пример драйвера, чтобы имитировать жест касания для сетевого подключения двух устройств. Информацию о скачивании WDK см. в разделе Комплект разработки драйверов для Windows (WDK). После установки WDK и примеров вы можете найти пример драйвера близкого взаимодействия в каталоге src\nfp в расположении, в которое были установлены примеры WDK. Инструкции по сборке и выполнению симулятора см. в файле NetNfpProvider.html в каталоге src\nfp\net. После запуска симулятор выполняется в фоновом режиме, тогда как ваше приложение близкого взаимодействия выполняется на переднем плане. Для имитации касания ваше приложение должно находиться на переднем плане.

Подключение приложений с помощью класса PeerFinder

Вы можете использовать класс PeerFinder, чтобы создать подключение через сокет для одного приложения, которое выполняется на двух разных устройствах. Такое приложение называют одноранговым приложением. С помощью класса PeerFinder вы можете подключать одноранговые приложения жестом касания или можете использовать Wi-Fi Direct для поиска одноранговых приложений в диапазоне действия беспроводной сети. При обоих способах подключения одноранговых приложений создается открытый сокет между одноранговыми приложениями. Рекомендуется, чтобы вы в своем приложении обеспечивали поддержку как активируемого подключения (касание), так и подключения через обзор (Wi-Fi Direct).

Пример подключения одноранговых приложений: Краткое руководство: подключение приложений с помощью касания или обзора или пример близкого взаимодействия в коллекции примеров. Правила для создания приложений, использующих бесконтактное взаимодействие, см. в статье Руководство по разработке с использованием бесконтактного взаимодействия.

Hh967765.wedge(ru-ru,WIN.10).gifТестирование подключений одноранговых приложений

  1. Установите ваше приложение на двух устройствах и запустите его на обоих.
  2. На обоих устройствах объявите одноранговое подключение. Для этого вызывается метод Start.
  3. Чтобы протестировать активируемые подключения, выполните касание устройств.
  4. Убедитесь, что пользовательский интерфейс в приложении отражает состояние жеста касания. То есть сведения, когда обнаруживается одноранговое приложение, когда устройства находятся в процессе подключения и т. д. Подробнее см. в описании события TriggeredConnectionStateChanged.
  5. Если подключение установлено успешно, убедитесь, что пользовательский интерфейс отображает, что возможность сетевой работы действует на обоих устройствах.
  6. Если подключение не установлено, убедитесь, что пользовательский интерфейс показывает ошибку сетевого подключения.
  7. Чтобы протестировать беспроводные подключения, запустите на одном из устройств поиск доступных одноранговых подключений. Для этого вызывается метод FindAllPeersAsync. Поиск поддерживается между двумя компьютерами или телефонами, но не между телефонами и компьютерами. Механизм осуществления поиска для приложений, запущенных на компьютере, отличается от используемого в приложениях для телефонов. Windows Phone поддерживает только поиск через Bluetooth, а компьютеры поддерживают поиск только через WiFi-Direct.
  8. Если подключение установлено успешно, убедитесь, что пользовательский интерфейс отображает, что возможность сетевой работы действует на обоих устройствах.
  9. Если подключение не установлено, убедитесь, что пользовательский интерфейс отображает ошибку сетевого подключения.
  10. Если ваше приложение поддерживает подключения для более чем двух одноранговых партнеров, расширьте тест, чтобы использовать несколько устройств.

Если ваше приложение поддерживает активируемые подключения (касание) и установлено на двух устройствах, то запрос подключения с помощью жеста касания приглашает пользователя второго устройства запустить или установить приложение. Приложение на запрашивающем устройстве должно выполняться на переднем плане. Эта возможность не поддерживается, когда выполняется поиск подключений с помощью метода FindAllPeersAsync.

Hh967765.wedge(ru-ru,WIN.10).gifТестирование приложений, запущенных жестом касания

  1. Установите свое приложение на двух устройствах. Запустите приложение только на первом устройстве.
  2. На устройстве, выполняющем ваше приложение, объявите одноранговое подключение. Для этого вызывается метод Start.
  3. Выполните касание устройств.
  4. На втором устройстве убедитесь, что выводится уведомление, приглашающее пользователя запустить приложение. Примите уведомление.
  5. Убедитесь, что приложение успешно запускается на втором устройстве и что приложение немедленно устанавливает сокет сети близкого взаимодействия. Убедитесь, что пользовательский интерфейс в приложении отображает, что возможность сетевой работы действует на обоих устройствах.
  6. Если приложение не запускается, убедитесь, что пользовательский интерфейс в приложении на запрашивающем устройстве отражает неудачную попытку. Если приложение запускается, но не может установить сокет сети близкого взаимодействия, убедитесь, что отказ отражается в пользовательских интерфейсах приложений на обоих устройствах.

Ваше приложение должно быть написано так, чтобы обрабатывать сценарий, когда отклоняется запрос на запуск однорангового приложения.

Hh967765.wedge(ru-ru,WIN.10).gifТестирование отклоненных запросов после жеста касания

  1. Установите свое приложение на двух устройствах. Запустите приложение только на первом устройстве.
  2. На устройстве, выполняющем ваше приложение, объявите одноранговое подключение. Для этого вызывается метод Start.
  3. Выполните касание устройств.
  4. На втором устройстве убедитесь, что выводится уведомление, приглашающее пользователя запустить или установить приложение. Отклоните уведомление.
  5. Убедитесь, что приложение не запускается на втором устройстве и что пользовательский интерфейс на запрашивающем устройстве отражает отклонение запроса.

Публикация и подписка на сообщения с помощью класса ProximityDevice

Вы можете использовать класс ProximityDevice для публикации небольших сообщений между устройствами во время жеста касания. Устройства должны находиться в пределах диапазона установленного оборудования близкого взаимодействия. Обычно это 2–3 см.

Чтобы публиковать сообщение во время жеста касания, используйте метод PublishMessage, PublishBinaryMessage или PublishUriMessage на публикующем устройстве и метод SubscribeForMessage на получающем устройстве. Пример публикации и подписки на сообщения см. в статьях Краткое руководство: публикация и подписка на сообщения с помощью касания и Пример бесконтактного взаимодействия в коллекции примеров.

Hh967765.wedge(ru-ru,WIN.10).gifТестирование приложения, которое публикует и подписывается на сообщение

  1. Запустите публикующее приложение на одном устройстве и подписывающееся приложение на другом устройстве. Такими приложениями могут быть одинаковые приложения на обоих устройствах, но это не обязательно.
  2. Переведите приложения в состояния публикации и получения сообщения. Для этого следует вызвать один из методов публикации в публикующем приложении и метод SubscribeForMessage в получающем приложении.
  3. Выполните касание устройств.
  4. Если сообщение успешно передано, убедитесь, что в пользовательском интерфейсе подписавшегося приложения отражается получение сообщения. Как вариант, в публикующем приложении можно вызвать перегрузку метода публикации с включением параметра для обработчика события типа MessageTransmittedHandler, который вызывается, когда сообщение было передано. В коде для этого обработчика события вы можете обновить пользовательский интерфейс публикующего приложения, чтобы отразить успешную передачу сообщения.
  5. Если не удалось опубликовать или принять сообщение, просмотрите код в своем приложении, чтобы определить причину ошибки. Шаги по диагностике см. в описании неполадки "Опубликованное сообщение, на которое имеется подписка, не получено" в разделе "Диагностика" данного раздела.
  6. Проверьте, что оба приложения могут быть выведены из состояний публикации и подписки для этого сообщения. На публикующем устройстве вызовите метод StopPublishingMessage. На подписавшемся устройстве вызовите метод StopSubscribingForMessage. После выполнения касания устройств убедитесь, что сообщение более не публикуется или не принимается.

Диагностика

Если обнаруженная вами проблема не перечислена здесь, то, возможно, ответ найдется на форумах разработчиков для Windows.

Проблема Шаги диагностики
Нет ответа на касание. При подключении одноранговых приложений с помощью жеста касания или при публикации и подписке на сообщение во время касания не выполняется код, реагирующий на жест касания.

Убедитесь, что устройства, участвующие в жесте касания, находятся в диапазоне бесконтактного взаимодействия, по крайней мере в 2 см. Возможно, потребуется выровнять устройства на основании расположения устройства близкого взаимодействия. Когда устройства попадают в диапазон бесконтактного взаимодействия, Windows выдает звуковой сигнал.

Вы можете использовать события DeviceArrived и DeviceDeparted, чтобы сообщать, когда устройство входит в зону бесконтактного взаимодействия или покидает ее. Добавьте в свой код обработчики события для событий DeviceArrived и DeviceDeparted. Если код обработчика события выполняется, результат жеста касания является успешным. Если код обработчика события для событий DeviceArrived и DeviceDeparted не выполняется, то, возможно, имеются проблемы с оборудованием или драйвером бесконтактного взаимодействия.

Если ваше приложение использует класс PeerFinder для создания активируемого подключения, а событие DeviceArrived создается, но событие TriggeredConnection не создается, проверьте все следующие возможности.

  • Оба экземпляра вашего приложения вызвали метод Start перед попыткой подключения с помощью касания.
  • Отсутствует открытое подключение через сокет между устройствами после предыдущего касания. Если это имеет место, убедитесь, что ваше приложение вызывает метод Close на сокете, который более не требуется. При необходимости вы можете завершить открытое подключение через сокет между одноранговыми экземплярами вашего приложения, закрыв и перезапустив приложение.
Приложение не запускается после касания.

Убедитесь, что приложение выполняется на переднем плане по крайней мере на одном из устройств, участвующих в касании. Если это имеет место, а приложение по-прежнему не запускается после касания, см. шаги диагностики для случая "Нет ответа на касание".

Если событие TriggeredConnection создается в приложении, выполняющемся на переднем плане, но отсутствует приглашение запустить приложение на другом устройстве, участвующем в жесте касания, убедитесь, что приложение правильно установлено. Если приложение правильно установлено, оно будет запускаться из плитки запуска и подключаться по жесту касания, когда оно выполняется на переднем плане.

Не обнаруживаются одноранговые приложения при обзоре.
  • Убедитесь, что приложение выполняется на переднем плане и что вы вызвали метод Start на всех устройствах, доступных для обзора или подключения. Выполняя обзор одноранговых приложений на устройствах Windows, убедитесь, что интерфейс Wi-Fi Direct включен на всех устройствах, доступных для подключения. Выполняя обзор одноранговых приложений Windows Phone, убедитесь, что интерфейс Bluetooth включен на всех телефонах. С помощью свойства SupportedDiscoveryTypes вы можете определить, поддерживает ли компьютер обзор одноранговых партнеров.

  • Убедитесь, что у выполняющего обзор приложения отсутствует открытое подключение через сокет от предыдущего вызова метода ConnectAsync. Если это имеет место, убедитесь, что ваше приложение вызывает метод Close на сокете, который более не требуется. При необходимости вы можете завершить открытое подключение через сокет между одноранговыми экземплярами вашего приложения, закрыв и перезапустив приложение.

  • При обзоре одноранговых партнеров будут найдены только устройства, на которых выполняется одно и то же приложение с включенным близким взаимодействием. Убедитесь, что это же приложение выполняется на всех устройствах, с которыми вы проводите тестирование. С помощью метода ConnectAsync можно одновременно подключить только два устройства.

  • Если устройства, которые вы пытаетесь соединить, подключены к домену, политика домена может запрещать новое подключение или закрыть существующее. Если подключение успешно выполняется для устройств, не подключенных к домену, и не выполняется для устройств, подключенных к домену, проверьте политику брандмауэра в своем домене.

  • Причиной отказов в подключении на компьютере могут быть ограничения вашего оборудования Wi-Fi Direct. Попробуйте запустить приложение на обоих компьютерах с включением беспроводного радиоустройства, но с отключением от всех беспроводных сетей.

При попытке подключения касанием имеет место отключение через одну минуту.

Проверьте настройки беспроводной связи на обоих устройствах, участвующих в касании, и убедитесь, что на них включена радиосвязь Wi-Fi и радиомодуль Bluetooth. Если на любом из устройств отсутствует беспроводное устройство, которое поддерживает радиосвязь Wi-Fi Direct или Bluetooth, убедитесь, что оба устройства подключены к одной сети.

Опубликованное сообщение, на которое имеется подписка, не получено. При публикации и подписке на сообщения опубликованное сообщение не получено на подписавшемся устройстве.

На публикующем устройстве можно использовать перегрузку метода PublishMessage, PublishUriMessage или PublishBinaryMessage с включением параметра для обработчика события типа MessageTransmittedHandler, который вызывается, когда сообщение было передано. Если вызов метода публикации оказался успешным и выполнен код в обработчике события MessageTransmittedHandler, сообщение было успешно передано.

На подписавшемся устройстве убедитесь, что значение параметра messageType, переданного в метод SubscribeForMessage, совпадает со значением параметра messageType, которое было передано в метод PublishMessage или PublishBinaryMessage (для метода PublishUriMessage значением messageType всегда является WindowsUri). Значения типа сообщения всегда учитывают регистр.

 

Связанные разделы

Поддержка близкого взаимодействия и касания

Краткое руководство: соединение приложений с помощью касания или обзора

Краткое руководство: публикация и подписка на сообщения с помощью касания

Руководство и контрольный список для близкого взаимодействия

Windows.Networking.Proximity namespace

Примеры

Пример близкого взаимодействия