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

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

С помощью близкого взаимодействия вы можете обмениваться сообщениями (публиковать их и подписываться на них) между двумя устройствами, а также записывать статические теги на устройство одним касанием. Если два устройства находятся на расстоянии 3–4 сантиметра друг от друга, модуль близкого взаимодействия уведомляет систему. В этом разделе мы расскажем, как использовать близкое взаимодействие, чтобы опубликовать сообщение или подписаться на него.

Цель: Публикуйте сообщения и подписывайтесь на них с помощью касаний при близком взаимодействии.

Необходимые условия

Microsoft Visual Studio Express 2012 для Windows 8

Инструкции

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

  1. Откройте приложение Visual Studio Express 2012 для Windows 8 и выберите New Project (Создать проект) в меню File (Файл). В разделе JavaScript выберите Blank Application (Пустое приложение). Назовите приложение ProximityMessages и нажмите кнопку ОК.
  2. Откройте файл Package.appxmanifest и перейдите на вкладку Возможности. Включите возможность Близкое взаимодействие. Сохраните и закройте файл манифеста.

2. Добавление пользовательского интерфейса на языке HTML

Откройте файл Default.html и добавьте следующий HTML-код в раздел <body>.


<table>
    <tr>
        <td style="width: 500px;vertical-align: top">
            <button id="publishMessageButton">Publish Message</button>
            <input type="text" id="messageText" />
            <button id="subscribeForMessageButton">Subscribe For Message</button><br />
            <button id="stopPublishingMessageButton">Stop Publishing Message</button>
            <button id="stopSubscribingForMessageButton">Stop Subscribing For Message</button><br />
            Enter a message and click "Publish Message". On another computer, click
            "Subscribe For Message". Enter proximity to transmit the message.
        </td>
        <td><div id="messageDiv" style="width: 500px;vertical-align:top"></div></td>
    </tr>
</table>

3. Добавление кода инициализации

Класс ProximityDevice используется для публикации сообщений, передаваемых между близко расположенными устройствами, и для подписки на эти сообщения. Код на этом этапе создает экземпляр класса ProximityDevice и связывает функции, которые будут добавлены на последующих этапах, с обработчиками событий нажатия кнопок HTML. Включение функции ярлыка, id, обеспечивает удобный доступ к функции getElementById. Функция initialize вызывается при запуске приложения. Она получает ссылку на устройство близкого взаимодействия, которое будет использоваться по умолчанию для публикации сообщений и подписки на них. Она также добавляет обработчики событий для кнопок.

Откройте папку js. Откройте файл Default.js и замените функцию activated, настроенную по умолчанию, следующим кодом.

var proximityDevice;

app.onactivated = function (eventObject) {
    if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
        
        initializeProximitySample();

        WinJS.UI.processAll();
    }
};

function id(elementId) {
    return document.getElementById(elementId);
}
    
function initializeProximitySample() {
    proximityDevice = Windows.Networking.Proximity.ProximityDevice.getDefault();

    if (proximityDevice) {
        id("publishMessageButton").addEventListener("click", publishMessage);
        id("subscribeForMessageButton").addEventListener("click", subscribeForMessage);
        id("stopSubscribingForMessageButton").addEventListener("click",
            stopSubScribingForMessage);
        id("stopPublishingMessageButton").addEventListener("click",
        stopPublishingMessage);
    }
    else {
        id("messageDiv").innerHTML += "Failed to initialize proximity device." +
             "Your device may not have proximity hardware.<br />";
    }
}

4. Добавление обработчиков событий нажатия

На этом этапе вы добавите код для событий нажатия кнопок HTML. Код в обработчике события кнопки publishMessageButton вызывает метод publishMessage для публикации сообщения на расположенных поблизости устройствах. Код в обработчике события кнопки subscribeToMessageButton вызывает метод subscribeToMessage, чтобы получать все сообщения, опубликованные расположенным поблизости устройством. В этом примере принимаются только сообщения, относящиеся к типу Windows.SampleMessage. Всегда следует использовать префикс Windows. для сообщений в режиме близкого взаимодействия, опубликованных с использованием метода publishMessage. Чтобы упростить пример, публикация или подписка каждый раз выполняется только для одного сообщения. Вы можете выполнять эти действия для нескольких сообщений одновременно.

Вы также можете опубликовать URI с помощью метода PublishUriMessage или опубликовать двоичные данные с помощью метода PublishBinaryMessage. Подробнее о списке типов сообщений, которые можно опубликовать с помощью метода PublishBinaryMessage, см. раздел PublishBinaryMessage(String, IBuffer).

В файле Default.js добавьте следующий код после функции initializeProximitySample.

var publishedMessageId = -1;
var subscribedMessageId = -1;

function publishMessage() {
    // Stop publishing the current message.
    if (publishedMessageId != -1) {
        proximityDevice.stopPublishingMessage(publishedMessageId);
    }

    publishedMessageId =
    proximityDevice.publishMessage("Windows.SampleMessage", id("messageText").value);
}

function subscribeForMessage() {
    // Only subscribe for the message one time.
    if (subscribedMessageId === -1) {
        subscribedMessageId =
    proximityDevice.subscribeForMessage("Windows.SampleMessage", messageReceived);
    }
}

function messageReceived(device, message) {
    id("messageDiv").innerHTML += "Message received: " + message.dataAsString + "<br />";
}

function stopSubscribingForMessage() {
    proximityDevice.stopSubscribingForMessage(subscribedMessageId);
}

function stopPublishingMessage() {
    proximityDevice.stopPublishingMessage(publishedMessageId);
}

5. Запуск приложения

Чтобы посмотреть на работу приложения, запустите его на двух устройствах с включенным близким взаимодействием. Введите сообщение и нажмите кнопку Publish Message на первом устройстве. Затем нажмите кнопку Subscribe For Message на другом устройстве и одновременно коснитесь обоих устройств.

Важно  

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

 

Краткая сводка и дальнейшие действия

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

Можно также использовать жест касания для подключения к другому устройству. Пример см. в документе Краткое руководство. Соединение приложений с помощью касания или обзора.

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

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

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

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

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

Windows.Networking.Proximity namespace

Примеры

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