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

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

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

开始之前

邻近感应是在两个不同的设备上运行的应用实例之间创建共享应用体验的绝佳方法。在支持邻近感应的应用中,应用用户只需点击连接两台设备,即可发起连接,或者用户可以浏览以查找在无线范围内运行该应用的另一台设备。将通过 WiFi-Direct 浏览其他电脑上的对等应用。在 Windows Phone 上,将通过蓝牙发现对等应用,该过程将查找在其他手机上运行的对等应用。

为了测试响应点击手势的功能,每台设备必须安装一个邻近感应设备,如近场通信 (NFC) 射频硬件。为了测试在电脑上使用无线浏览的功能,每台电脑必须支持 Wi-Fi Direct。

注意  若要测试 Windows Phone 应用商店应用的浏览功能,每部手机都必须支持蓝牙。

设置测试:

如果没有支持邻近点击的硬件(例如近场通信 (NFC) 射频硬件),可以使用 Windows 驱动程序工具包 (WDK) 示例中包含的邻近驱动程序示例。可以使用示例驱动程序模拟两台设备之间网络连接上的点击手势。有关如何下载 WDK 的信息,请参阅 Windows 驱动程序工具包 (WDK)。安装 WDK 和示例后,可以在安装 WDK 示例的位置中的 src\nfp 目录下找到邻近驱动程序示例。请查阅 src\nfp\net 目录中的 NetNfpProvider.html 文件,了解构建和运行模拟器的说明。启动模拟器后,它在后台运行,而邻近应用在前台运行。应用必须在前台运行,这样点击模拟才能生效。

使用 PeerFinder 类连接应用

可以使用 PeerFinder 类在两台不同设备上运行的相同应用(也就是对等应用)之间创建一个套接字连接。使用 PeerFinder 类,你可以通过点击手势连接对等应用,也可以使用 Wi-Fi Direct 浏览无线范围内的对等应用程序。两种连接对等应用程序的方法都会在对等应用程序之间创建一个开放的套接字,建议在应用程序中同时支持触发的(点击)和浏览 (Wi-Fi Direct) 连接功能。

有关连接对等应用程序的示例,请参阅:快速入门:使用点击或浏览连接应用程序或示例库中的邻近示例。有关创建可使用邻近感应的应用程序的指南,请参阅使用邻近进行开发的指南

Hh967765.wedge(zh-cn,WIN.10).gif测试对等应用连接

  1. 将应用安装在两台设备上,然后在两台设备上都启动该应用。
  2. 在两台设备上公开一个对等连接。通过调用 Start 方法来完成该工作。
  3. 要测试触发的连接,可以通过点击连接两个设备。
  4. 确保应用中的 UI 反映了点击手势的状态。也就是在找到一个对等方时以及设备正在连接时等。有关详细信息,请参阅 TriggeredConnectionStateChanged 事件。
  5. 如果连接成功,则确保应用中的 UI 表明网络功能对两台设备都有效。
  6. 如果未连接成功,则确保应用中的 UI 通知用户网络连接已失败。
  7. 要测试无线连接,可让其中一台设备浏览可用的对等连接。通过调用 FindAllPeersAsync 方法来完成该工作。仅支持电脑之间或手机之间的浏览,但不支持手机和电脑之间的浏览。对于分别在电脑和手机上运行的应用,浏览操作所基于的机制各不相同。Windows Phone 仅支持通过蓝牙进行浏览,而电脑仅支持通过 WiFi-Direct 进行浏览。
  8. 如果连接成功,则确保应用中的 UI 表明网络功能对两台设备都有效。
  9. 如果未连接成功,则确保应用中的 UI 通知用户网络连接已失败。
  10. 如果应用支持连接到两个以上的对等方,将测试范围扩大到使用多台设备。

如果在两台设备上安装了一个支持触发(点击)连接的应用程序,从一台设备使用点击手势请求连接时,将提示用户选择要启动或安装该应用的第二台设备。该应用必须在请求设备的前台运行。使用 FindAllPeersAsync 方法浏览连接时,不支持此功能。

Hh967765.wedge(zh-cn,WIN.10).gif测试通过点击手势启动的应用

  1. 在两台设备上安装你的应用。仅在第一台设备上启动应用。
  2. 在运行你的应用的设备上公开一个对等连接。通过调用 Start 方法来完成该工作。
  3. 通过点击连接设备。
  4. 在第二台设备上,确保弹出了一个提示用户启动应用的通知。接受该通知。
  5. 确保应用程序在第二台设备上成功启动,并且该应用程序立即建立了一个邻近网络套接字。确保应用中的 UI 表明网络功能对两台设备都有效。
  6. 如果应用未成功启动,则确保请求设备上的应用中的 UI 反映了已失败的尝试。如果应用程序已启动,但未能成功建立邻近网络套接字,请确保两台设备上的应用中的 UI 都反映了这一失败状态。

你编写的应用应该能处理对启动对等应用的请求进行拒绝时的情况。

Hh967765.wedge(zh-cn,WIN.10).gif测试被拒绝的点击手势请求

  1. 在两台设备上安装你的应用。仅在第一台设备上启动应用。
  2. 在运行你的应用的设备上公开一个对等连接。通过调用 Start 方法来完成该工作。
  3. 通过点击连接设备。
  4. 在第二台设备上,确保弹出了一个提示用户启动或安装应用的通知。拒绝该通知。
  5. 确保应用没有在第二台设备上启动,而且请求应用中的 UI 反映了该请求已被拒绝。

使用 ProximityDevice 类发布和订阅消息

在点击手势期间,你可以使用 ProximityDevice 类在设备之间发布简短消息。设备需要位于已安装的邻近感应硬件覆盖范围内。这个范围通常为 2-3 厘米。

要在点击手势期间发布消息,可在发布设备上使用 PublishMessagePublishBinaryMessagePublishUriMessage 方法,在接收设备上使用 SubscribeForMessage 方法。 有关发布和订阅消息的示例,请参阅快速入门:使用点击发布和订阅消息或示例库中的邻近感应示例

Hh967765.wedge(zh-cn,WIN.10).gif测试可发布和订阅消息的应用

  1. 在一台设备上启动发布应用,在另一台设备上启动订阅应用。可在两台设备上使用相同的应用,但并非必须这么做。
  2. 将应用设置为发布和接收消息的状态。这涉及到在发布应用中调用某个发布方法,以及在接收应用中调用 SubscribeForMessage 方法。
  3. 通过点击连接设备。
  4. 如果消息成功传输,请确保订阅应用中的 UI 表明该消息已收到。作为发布应用中的一个选项,你可以调用发布方法的一个重载,该重载包含在传输消息时调用的 MessageTransmittedHandler 类型的事件处理程序的一个参数。在此事件处理程序的代码中,你可以更新发布应用中的 UI 以表明该消息已成功传输。
  5. 如果消息未能发布或未收到,请检查应用中的代码来确定问题。有关疑难解答步骤,请参阅本文"疑难解答"一节中的"未收到已发布和订阅的消息"。
  6. 测试两个应用是否都能从发布和订阅消息的状态中恢复。在发布设备上,调用 StopPublishingMessage 方法。在订阅设备上,调用 StopSubscribingForMessage 方法。通过点击连接设备后,确保未再次发布或接收该消息。

疑难解答

如果你遇到的问题未在此处列出,可能可以在 Windows 开发人员论坛中找到答案。

问题 疑难解答步骤
点击无响应。使用点击手势连接对等应用时,或在点击期间发布和订阅消息时,响应点击手势的代码未执行。

确保点击手势所涉及的设备位于邻近范围内,至少在 2 厘米内。可能必需根据邻近感应设备的位置来对齐设备。Windows 在设备进入邻近范围时会播放一个声音。

可以使用 DeviceArrivedDeviceDeparted 事件确定设备何时进入或离开邻近范围。向代码中添加 DeviceArrivedDeviceDeparted 事件的事件处理程序。如果事件处理程序代码已执行,则点击手势已成功。如果 DeviceArrivedDeviceDeparted 事件的事件处理程序代码未执行,则可能邻近硬件或驱动程序存在问题。

如果应用使用 PeerFinder 类创建已触发的连接,并且出现了 DeviceArrived 事件,但未出现 TriggeredConnection 事件,请验证以下所有方面:

  • 两个应用实例都在尝试用点击建立连接之前调用了 Start 方法。
  • 设备之间没有来自上一次点击的开放套接字连接。如果属于这种情况,请确保应用在一个不再需要的套接字上调用了 Close 方法。如果需要,可通过退出并重新启动应用,关闭应用的对等实例之间的开放套接字连接。
应用未在点击后启动。

确保应用在点击手势所涉及的两台设备中的至少一台上的前台运行。如果是这样,并且应用仍然未在点击后启动,请参阅"点击无响应"的疑难解答步骤。

如果在前台运行的应用中引发了 TriggeredConnection 事件,但没有提示在点击手势所涉及的另一台设备上启动应用,请确保已正确安装了该应用。如果已正确安装了该应用,它将从启动磁贴启动,并在前台运行时通过一个点击手势连接。

在浏览时未找到对等方。
  • 确保应用在前台运行,并且在正在浏览或可用于连接的所有设备上调用了 Start 方法。如果在 Windows 设备上浏览对等应用,请验证是否在所有可用于连接的设备上启用了 Wi-Fi Direct。如果在 Window Phone 上浏览对等应用,请验证是否在所有电话上启用了蓝牙。可以使用 SupportedDiscoveryTypes 属性确定计算机是否支持浏览对等方。

  • 确保浏览应用没有来自以前 ConnectAsync 方法调用的开放套接字连接。如果属于这种情况,请确保应用在一个不再需要的套接字上调用了 Close 方法。如果需要,可通过退出并重新启动应用,关闭应用的对等实例之间的开放套接字连接。

  • 浏览对等方只能找到运行相同的、启用了邻近感应的应用的对等设备。确保在你测试的所有设备上正在运行相同的应用。一次只能使用 ConnectAsync 方法连接两台设备。

  • 如果你尝试连接的设备加入了一个域,域策略可能阻止一个新连接或关闭现有连接。如果未加入域的设备连接成功,而加入域的设备连接失败,请检查域的防火墙策略。

  • 如果电脑上的连接失败,可能 Wi-Fi Direct 硬件存在限制。尝试在两台开启无线射频但与所有无线网络断开连接的电脑上运行应用。

通过点击进行连接的尝试会在一分钟后失败。

检查点击手势所涉及的两台设备上的无线设置,确保它们的 Wi-Fi 和蓝牙射频已开启。如果任一设备都没有支持 Wi-Fi Direct 或蓝牙射频的无线设备,请确保两台设备都连接到同一个网络。

未收到已发布和订阅的消息。发布和订阅消息时,订阅设备未收到已发布的消息。

在发布设备上,可使用 PublishMessagePublishUriMessagePublishBinaryMessage 方法的一个重载,该重载包含在传输消息时调用的 MessageTransmittedHandler 类型的事件处理程序的一个参数。如果发布方法调用成功,并且 MessageTransmittedHandler 事件处理程序中的代码已执行,表明已成功传输了消息。

在订阅设备上,确保传递给 SubscribeForMessage 方法的 messageType 参数的值与传递给 PublishMessagePublishBinaryMessage 方法的 messageType 参数的值匹配(对于 PublishUriMessage 方法,messageType 值始终为 WindowsUri)。消息类型值区分大小写。

 

相关主题

支持邻近感应和点击

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

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

邻近感应指南和清单

Windows.Networking.Proximity namespace

示例

邻近示例