共用方式為


快速入門:使用輕觸來發佈和訂閱訊息 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

利用鄰近性功能,您可以在兩部裝置之間發佈和訂閱訊息,以及使用簡單的點選手勢將靜態標記寫入裝置。如果兩個裝置互相靠近到相距 3 到 4 公分,鄰近性就會通知系統。 這個主題說明如何利用鄰近性功能來發佈或訂閱訊息。

目標: 使用鄰近性輕觸發佈和訂閱訊息。

先決條件

Microsoft Visual Studio Express 2012 for Windows 8

指示

1. 建立新專案和啟用鄰近性功能

  1. 開啟 Visual Studio Express 2012 for Windows 8,然後選取 [檔案] 功能表中的 [新增專案]。在 [Javascript] 區段中,選取 [空白的應用程式]。將應用程式命名為 ProximityMessages,然後按一下 [確定]。
  2. 開啟 Package.appxmanifest 檔案,然後選取 [功能]**** 索引標籤。選取 [鄰近性] 功能以啟用鄰近性。關閉並儲存資訊清單檔案。

2. 新增 HTML UI

開啟 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 按鈕 Click 事件的事件處理常式。在此包含 id 捷徑函式,以方便存取 getElementById 函式。當應用程式啟動時,會呼叫初始化函式。這個函式會取得預設的鄰近性裝置,並用來發佈和訂閱訊息。它也會新增按鈕的事件處理常式。

開啟 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. 新增 Click 事件處理常式

在這個步驟中,您要新增 HTML 按鈕的 Click 事件程式碼。publishMessageButton 按鈕的事件處理常式程式碼會呼叫 publishMessage 方法,將訊息發佈到鄰近性裝置。subscribeToMessageButton 按鈕的事件處理常式程式碼會呼叫 subscribeToMessage 方法,以接收鄰近性裝置發佈的所有訊息。在這個範例中,只會收到被識別為 Windows.SampleMessage 類型的訊息。針對使用 publishMessage 方法發佈的鄰近性訊息類型,其首碼應該一律為 Windows.。為了簡化這個範例,一次只發佈或訂閱一則訊息。您可以同時發佈和訂閱多個訊息。

您也可以使用 PublishUriMessage 方法來發佈 URI,或使用 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 和範例之後,您就可以在安裝 WDK 範例的位置 src\nfp 目錄中找到鄰近性驅動程式範例。如需建置和執行模擬器的指示,請參閱 src\nfp\net 目錄中的 NetNfpProvider.html 檔案。啟動模擬器之後,當您的鄰近性應用程式在前景中執行時,該模擬器便會在背景中執行。您的應用程式必須位於前景中,輕觸模擬才能運作。

 

摘要與後續步驟

在這個教學課程中,您已建立應用程式,可使用輕觸,在兩個裝置之間發佈和訂閱訊息。

您也可以使用點選手勢來連線到另一個裝置。例如,請參閱快速入門:使用輕觸或瀏覽來連線應用程式

快速入門:使用輕觸或瀏覽來連線應用程式

相關主題

使用鄰近性功能進行程式開發的指導方針

支援鄰近性和輕觸

在應用程式中測試和疑難排解鄰近性

Windows.Networking.Proximity namespace

範例

鄰近性範例