信息
您所需的主题如下所示。但此主题未包含在此库中。
此主题尚未评级 - 评价此主题

支持邻近感应和点击(使用 JavaScript 和 HTML 的 Windows 应用商店应用)

作用

通过使用邻近感应,你可以增强应用以使用近场通信 (NFC) 和连接两台计算机,而无需使用 Wi-Fi Direct 的网络。邻近感应和 NFC 使你可以借助简单的点击手势即可连接计算机。如果两台电脑相距 3-4 厘米,或被点击到一起,则其中任何一台电脑的操作系统都将能感知另一台电脑。你还可以使用 Wi-Fi Direct 的对等方浏览,连接在无线范围内运行你的应用程序的两台计算机。然后,你可以连接两台计算机以便共享内容(例如照片或链接)、创建多人游戏体验或者发布和订阅消息。

要点  

计算机必须有邻近设备,如近距离通信 (NFC) 无线电设备,才能支持点击连接。计算机必须具有支持 Wi-Fi Direct 的 Wi-Fi 设备才能支持对等方浏览。

本节内容

主题描述

快速入门:使用点击或浏览连接应用

如果你使用邻近功能,你可以通过简单的点击手势,或浏览无线范围内的设备,即可在两台设备之间创建连接。你无需连接到网络。只需同时点击两台计算机,或使用 Wi-Fi Direct 连接。

快速入门:使用点击发布和订阅消息

使用邻近感应,你可以在两台计算机之间发布和订阅消息,并使用简单的点击手势将静态标记写入计算机。如果两台计算机相互之间距离在 3-4 厘米范围内,邻近功能会通知系统。 本主题演示如何使用邻近感应来发布或订阅消息。

对应用中的邻近感应进行测试和疑难解答

本主题为应用开发人员提供在将应用提交到应用商店之前测试其中的邻近功能并进行解答疑难的指南。

 

开发者受众

邻近功能是针对有这样需求的开发人员设计的:需要扩展应用程序功能以支持通过点击或浏览运行你的应用的其他设备或无线范围内的对等应用来轻松建立连接。例如,这些应用可能包括一个多人游戏,其中两个用户同时点击计算机可以建立共享游戏会话。或者,应用可能允许客户点击计算机并接收指向某个位置的链接,在这个位置可以获取更多信息或进行购买。

你可以使用邻近以支持在使用点击手势期间快速交换数据。或者,你可以使用点击利用基础结构网络、Wifi-Direct 或 Bluetooth 来建立长期的信道。

属于 Windows.Networking.Proximity 命名空间的 Windows 运行时中的类支持邻近。你可以使用 ProximityDevice 类与 3-4 厘米范围内的其他计算机通信,并且在点击过程中交换少量数据。你可以使用 PeerFinder 类与对等应用进行通信,并设置长期套接字连接。对等应用是运行在另一台计算机上的应用的另一个实例。

例如,如下代码使用 ProximityDevice 类的 GetDefault 静态方法为本地计算机获取对邻近设备的引用。通过将事件处理程序与 DeviceArrivedDeviceDeparted 事件进行关联,你可以知道设备何时进入或离开邻近感应。


function id(elementId) {
    return document.getElementById(elementId);
}

WinJS.Application.onmainwindowactivated = function (e) {
    if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {

        var proximityDevice = Windows.Networking.Proximity.ProximityDevice.getDefault();

        if (proximityDevice != null) {
            proximityDevice.addEventListener("devicearrived", 
                                             proximityDeviceArrived, false);
            proximityDevice.addEventListener("devicedeparted", 
                                             proximityDeviceDeparted, false);
        }
        else {
            id("MessageBlock").innerHTML += "Failed to initialize proximity device.<br/>";
        }

    }
}



function proximityDeviceArrived() {
    id("MessageBlock").innerHTML += "Proximate device arrived.<br/>";
}

function proximityDeviceDeparted() {
    id("MessageBlock").innerHTML += "Proximate device departed.<br/>";
}


有关展示如何在同时点击设备或通过对等方浏览连接的设备之间建立网络连接的示例代码,请参阅快速入门:使用点击或浏览连接应用程序。有关展示如何在同时点击的设备之间共享少量消息的示例代码,请参阅快速入门:使用点击发布和订阅消息。有关展示如何创建多对等应用连接以及使用 PeerWatcher 对象动态扫描范围内的对等应用的示例代码,请参阅邻近感应示例

要点  

若要在应用中支持邻近功能,必须启用邻近功能。

要点  

邻近感应 API 不提供身份验证、加密或消息完整性。不要使用邻近感应来交换用户敏感信息,例如密码、财务数据、文本消息、电子邮件、照片或身份证号码。

如何确定是否支持邻近功能

如前所述,计算机必须安装实现 Windows 邻近接口的设备,你才能使用邻近功能(有关实现 Windows 邻近接口的信息,请参阅 Windows 8 近距离近程实现规范。)。你可以通过以下方式确定是否已安装支持邻近感应的设备:检查 PeerFinder.SupportedDiscoveryTypes 属性以查看是否支持 Triggered 连接,检查 GetDefault 方法是否返回 NULL,或者获取所有邻近设备列表并确保列表至少列出一台设备。有关如何获取所有已安装的邻近设备列表的示例,请参阅 GetDeviceSelector 方法。

仅当应用在前台运行时启用邻近感应

如果你的应用已转移到后台,将禁用所有 ProximityDevicePeerFinder 操作。如果你的应用正在前台运行,你只能发布和订阅消息或打开套接字连接。如果你打开套接字连接,然后你的应用转移到后台,则你的套接字连接将保持打开状态。

使用邻近感应激活应用

当你使用 PeerFinder 并点击以将应用连接到另一台计算机上的对等应用时,如果该应用尚未运行或未在前台运行,Windows 将提示另一台计算机的用户激活该应用。如果该应用已在前台运行,将在不首先提示用户的情况下引发激活事件。你也可以通过调用接受一个字符串参数的 PeerFinder.Start 方法重载来激活未在前台运行的应用。Start 方法的字符串参数包含发送到对等应用的消息。该应用将通过传递到激活参数的消息激活。

当你使用点击手势激活对等应用时,将引发 Activated 事件。激活 KindLaunch。如果你通过使用 PeerFinder.Start 方法发送消息来激活事件,可以从启动参数的 Arguments 属性检索消息文本。如果为了打开 StreamSocket 而激活你的应用,则 Arguments 属性将返回字符串 Windows.Networking.Proximity.PeerFinder:StreamSocket。在此情况下,将 TriggeredConnectionStateChanged 属性设置为适当的事件处理程序,并调用 PeerFinder.Start 方法完成套接字连接。


app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        if (args.detail.arguments == "Windows.Networking.Proximity.PeerFinder:StreamSocket") {
            // Call PeerFinder.Start to begin multi-user mode.
        }
        else {
            // Respond to the message string in args.detail.arguments
        }

        args.setPromise(WinJS.UI.processAll());
    }
}


有关从应用手势激活而且自动完成套接字连接的应用的示例,请参阅快速入门:使用点击或浏览连接应用程序

套接字通信协议

在使用 StreamSocket 对象向对等应用发送信息时,你应当定义有关如何共享信息的协议。例如,你可以使用 XML 格式、分隔的名称/值对,等等。当 PeerFinder 类在对等应用之间创建套接字连接时,它会连接这些应用,而不考虑应用的版本。因此,对于同一个应用你可能会拥有两个不同且相互通信的版本。例如,如果一个接收应用应当采用两个 4 字节值,该应用的较新版本以两个 8 字节值的形式发送数据以容纳较大的数据,则在处理数据时,应当采用 4 字节值的接收应用将遇到错误。你应当注意确保你的应用的较新版本仍能够使用通信协议与该应用的旧版本通信。也就是说,应确保你的应用的较旧版本能够忽略从该应用的较新版本发送的新信息而不会遇到问题。

提示  

当对等应用通信时,你通常需要确定哪个应用将发送第一条消息,哪个应用将侦听。可用来确定应用是发送程序还是侦听程序的一种方法就是对 streamSocket.information.localAddress.canonicalNamestreamSocket.information.remoteHostName.canonicalName 进行比较。通过测试本地主机名是否大于远程主机名,你将始终收到你的应用的两个实例之间的相反结果。

相关主题

快速入门:使用点击或浏览连接应用程序
快速入门:使用点击发布和订阅消息
邻近的规则和清单
对应用中的邻近感应进行测试和疑难解答
Windows.Networking.Proximity namespace
示例
邻近示例

 

 

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft. 版权所有。