Note This sample was created using one of the universal app templates available in Visual Studio. It shows how its solution is structured so it can run on both Windows 8.1 and Windows Phone 8.1. For more info about how to build apps that target Windows and Windows Phone with Visual Studio, see Build apps that target Windows and Windows Phone 8.1 by using Visual Studio.
The Windows.Networking.Proximity APIs allow the same app running on two or more machines to communicate with each other in one of two ways. If the devices have Near Field Communications (NFC) radios, then you can align the radios and "tap" your devices together to exchange small messages. Alternatively, if you have two or more PCs which all support Wi-Fi Direct, or two or more phones which all support Bluetooth, then you can set up a socket connection between your devices. This socket connection can also be initiated using NFC.
The PeerFinder scenario (1) demonstrates how to use the Proximity APIs to create socket connections between peer apps on two or more devices, either by using a tap gesture or by first browsing for peers. “Browsing” refers to the process of discovering peers, whether over Bluetooth or Wi-Fi Direct, which is only successful when peer apps advertise for connections.
The PeerWatcher scenario (2) demonstrates how to dynamically browse for peers. You should see the list of available peers shrink or expand as they start or stop advertising, or as they move out of range of your wireless radio.
The ProximityDevice scenarios (3 and 4) demonstrate how to send small message payloads between two devices during a tap gesture. They also show how to process DeviceArrived and DeviceDeparted events when another device's NFC radio comes in and out of range.
This sample requires the use of multiple devices. For scenarios that use a tap gesture, each device must have an NFC radio installed.
Windows For scenarios that require wireless peer discovery, each device must have a wireless radio that supports Wi-Fi Direct. Proximity apps running on Windows devices will not be able to discover Proximity apps running on Windows phones.
Windows Phone For scenarios that require wireless peer discovery, each device must have a wireless chip that supports Bluetooth. Proximity apps running on Windows phones will not be able to discover Proximity apps running on Windows
Windows If your device does not have an NFC radio, you can use the Proximity driver sample that is part of the Windows Driver Kit (WDK) samples. You can use the sample driver to simulate a tap gesture over a network connection between two devices. For info on how to download the WDK, see Windows Driver Kit (WDK). After you have installed the WDK and samples, you can find the Proximity driver sample in the src\nfp directory in the location where you installed the WDK samples. See the NetNfpProvider.html file in the src\nfp\net directory for instructions on building and running the simulator. After you start the simulator, it runs in the background while your Proximity app is running in the foreground. Your app must be in the foreground for the tap simulation to work.
To obtain an evaluation copy of Windows 8.1, go to Windows 8.1.
To obtain an evaluation copy of Microsoft Visual Studio 2013 Update 2, go to Microsoft Visual Studio 2013.
Note For Windows 8 app samples, download the Windows 8 app samples pack. The samples in the Windows 8 app samples pack will build and run only on Microsoft Visual Studio 2012.
To build the Windows version of the sample:
To build the Windows Phone version of the sample:
Note The C# versions of the sample have a CS suffix. For example, the C#-Windows Phone version of the sample is ProximityCS.WindowsPhone.
The next steps depend on whether you just want to deploy the sample or you want to both deploy and run it.
Deploying the sample
To deploy the built Windows version of the sample:
To deploy the built Windows Phone version of the sample:
Deploying and running the sample
To deploy and run the Windows version of the sample:
To deploy and run the Windows Phone version of the sample: