Language: HTML | XAML

Näherung und Kopplung (XAML)

Applies to Windows and Windows Phone

Zweck

Hinweis  

Näherung kann von Entwicklern verwendet werden, die einfache Verbindungen mittels Koppeln in Ihre App integrieren möchten. Ein Beispiel wäre ein Multiplayer-Spiel, bei dem zwei Benutzer ihre Geräte koppeln, um eine gemeinsame Spielsitzung einzurichten. Denkbar wäre auch eine App, in der Kunden ein Gerät koppeln und einen Link zu einem Speicherort erhalten, an dem sie weitere Informationen finden oder etwas kaufen können. Um per Tippbewegung eine Verbindung zwischen zwei Geräten herstellen zu können, muss auf beiden Geräten ein Näherungsgerät installiert sein, z. B. Near Field Communication-(NFC-)Funk.

Sie können zwei PCs, auf denen Ihre App ausgeführt wird, auch mittels Peersuche mit WiFi Direct verbinden, sofern sie sich innerhalb der Drahtlosreichweite befinden. Ebenso können Sie zwei Windows Phones, auf denen Ihre App ausgeführt wird, mittels Peersuche verbinden, sofern sie sich innerhalb der Bluetooth-Reichweite befinden. Nachdem die Verbindung hergestellt wurde, können die Geräte Inhalte wie Fotos oder Links teilen, eine Multiplayer-Spielsitzung einrichten oder Nachrichten veröffentlichen und abonnieren.

Inhalt dieses Abschnitts

ThemaBeschreibung

Schnellstart: Verbinden von Apps durch Koppeln oder Navigation

In diesem Thema wird der Code erläutert, den Sie benötigen, wenn Ihre App in der Lage sein soll, mittels Näherung eine Verbindung mit einer anderen Instanz Ihrer App herzustellen, die auf einem anderen Gerät ausgeführt wird.

Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Koppeln

In diesem Thema erfahren Sie, wie Sie die Näherungs-APIs PublishMessage und SubscribeForMessage zum Austauschen von Nachrichten zwischen zwei Geräten durch Koppeln verwenden.

Testen der Näherung in Apps und Behandeln von Problemen

Dieses Thema enthält Richtlinien, mit denen App-Entwickler die Näherungsfunktion in einer App testen und Probleme behandeln können, bevor sie die App an den Store übermitteln.

 

Roadmap: Wie hängt dieses Thema mit anderen zusammen? Informationen finden Sie unter:

Entwicklergruppe

Mit Näherung können Sie einen schnellen Austausch von Daten während einer Kopplung per Tippbewegung ermöglichen. Sie können durch Koppeln aber auch einen langfristigen Kommunikationskanal mit einem Infrastrukturnetzwerk, Wi-Fi Direct oder Bluetooth einrichten.

  • Applies to Windows Phone

Hinweis  

Das Einrichten eines Kommunikationskanals mit Wi-Fi Direct wird nicht unterstützt. Ein langfristiger Kommunikationskanal kann nur mit einem Infrastrukturnetzwerk oder Bluetooth eingerichtet werden.

Näherung wird von den Klassen in der Windows-Runtime im Windows.Networking.Proximity-Namespace unterstützt. Mit der ProximityDevice-Klasse können Sie mit anderen Geräten in einer Entfernung von 4 cm oder weniger kommunizieren und während der Kopplung eine kleine Datenmenge austauschen. Mithilfe der PeerFinder-Klasse können Sie mit Peer-Apps kommunizieren und eine langfristige Socketverbindung einrichten. Eine Peer-App ist eine weitere Instanz einer App, die auf einem anderen Gerät ausgeführt wird.

Im folgenden Code wird beispielsweise die statische GetDefault-Methode der ProximityDevice-Klasse zum Abrufen eines Verweises auf das Näherungsgerät für den lokalen Computer verwendet. Indem Sie den Ereignissen DeviceArrived und DeviceDeparted Ereignishandler zuordnen, können Sie feststellen, wann ein Gerät in den Näherungsbereich kommt, d. h. maximal 4 cm von Ihrem Gerät entfernt ist.


Windows.Networking.Proximity.ProximityDevice proximityDevice;

public MainPage()
{
    InitializeComponent();

    proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();

    if (proximityDevice != null)
    {
        proximityDevice.DeviceArrived += ProximityDeviceArrived;
        proximityDevice.DeviceDeparted += ProximityDeviceDeparted;
    }
    else
    {
        MessageTextBlock.Text += "Failed to initialize proximity device.\n";
    }
}



    Windows.UI.Core.CoreDispatcher _dispatcher = Window.Current.Dispatcher;

private async void ProximityDeviceArrived(object sender)
{
await _dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
            MessageTextBlock.Text += "Proximate device arrived.\n";
});
}

private async void ProximityDeviceDeparted(object sender)
{
await _dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
            MessageTextBlock.Text += "Proximate device departed.\n";
});
}       


Beispielcode für das Erstellen einer Netzwerkverbindung zwischen gekoppelten Geräten finden Sie unter Schnellstart: Verbinden von Apps durch Koppeln oder Suchen. Beispielcode für das Austauschen kleiner Nachrichten zwischen gekoppelten Geräten finden Sie unter Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Koppeln. Beispielcode für das Erstellen von App-Verbindungen mit mehreren Peers und die dynamische Suche nach Peer-Apps innerhalb des Bereichs mithilfe der Objekte "PeerFinder", "ProximityDevice" und "PeerWatcher" finden Sie im Näherungsbeispiel.

Wichtig  

Wenn Sie die Kopplung in Ihrer App verwenden möchten, müssen Sie die Näherungsfunktion im Paketmanifest Ihrer App aktivieren.

Wichtig  

Die Näherungs-APIs bieten keine Authentifizierung. Sie sollten keine sensiblen Daten mithilfe dieser APIs austauschen.

So wird’s gemacht: Feststellen, ob Näherung unterstützt wird

Um die Näherungsfunktion nutzen zu können, muss, wie zuvor erwähnt, auf einem PC oder Telefon ein Gerät installiert sein, das die Windows-Schnittstelle für Näherung implementiert. (Informationen zum Implementieren der Windows-Schnittstelle für Näherung finden Sie in Spezifikation zur Implementierung von Näherung in einem Nahfeld unter Windows 8.) Sie können feststellen, ob ein Gerät installiert ist, das Näherung unterstützt, indem Sie in der PeerFinder.SupportedDiscoveryTypes-Eigenschaft überprüfen, ob Triggered-Verbindungen unterstützt werden. Sie können auch überprüfen, ob die GetDefault-Methode NULL zurückgibt, oder mit der the GetDeviceSelector-Methode eine Liste der installierten Näherungsgeräte abrufen und kontrollieren, ob mindestens ein Gerät zurückgegeben wird.

Näherung ist nur aktiviert, wenn Ihre App im Vordergrund ausgeführt wird.

Alle ProximityDevice- und PeerFinder-Vorgänge werden deaktiviert, wenn Ihre App in den Hintergrund verschoben wird. Sie können nur dann Nachrichten oder offene Socketverbindungen veröffentlichen und abonnieren, wenn die App im Vordergrund ausgeführt wird. Wird Ihre App nach dem Öffnen einer Socketverbindung in den Hintergrund verschoben, bleibt die Socketverbindung offen.

Aktivieren von Apps über Näherung

Wenn Sie den PeerFinder verwenden und Ihre App durch Koppeln mit einer Peer-App auf einem anderen Gerät verbinden, wird der Benutzer des anderen Geräts aufgefordert, die App zu aktivieren, wenn diese noch nicht oder nicht im Vordergrund ausgeführt wird. Wird die App bereits im Vordergrund ausgeführt, wird das Aktivierungsereignis ohne eine vorherige Aufforderung an den Benutzer ausgelöst. Sie können eine App, die nicht im Vordergrund ausgeführt wird, aktivieren, indem Sie die PeerFinder.Start-Methodenüberladung aufrufen, die einen Zeichenfolgeparameter verwendet. Der Zeichenfolgeparameter für die Start-Methode enthält eine Nachricht, die an die Peer-App gesendet wird. Die App wird aktiviert, und die Nachricht wird an die Aktivierungsargumente weitergegeben.

Wenn Sie eine Peer-App mit einer Tippbewegung aktivieren, wird sie mit der Kind-Eigenschaft Launch aktiviert. Wenn Sie die App aktivieren, indem Sie eine Nachricht mit der PeerFinder.Start-Methode senden, kann der Nachrichtentext aus der Arguments-Eigenschaft der Startargumente abgerufen werden. Wenn Ihre App aktiviert wird, um einen StreamSocket zu öffnen, gibt die Arguments-Eigenschaft die Zeichenfolge Windows.Networking.Proximity.PeerFinder:StreamSocket zurück. Legen Sie in diesem Fall die TriggeredConnectionStateChanged-Eigenschaft auf einen entsprechenden Ereignishandler fest, und rufen Sie die PeerFinder.Start-Methode auf, um die Socketverbindung herzustellen. Das folgende Beispiel stammt aus dem Beispielcode unter Schnellstart: Verbinden von Anwendungen durch Koppeln oder Suchen und beruht darauf, dass der Code im "OnLaunched"-Ereignis die Startargumente übergibt.


protected override void OnNavigatedTo(NavigationEventArgs e)
{
    DisplayNameTextBox.Text = Windows.Networking.Proximity.PeerFinder.DisplayName;
    Windows.Networking.Proximity.PeerFinder.ConnectionRequested += ConnectionRequested;

    // If activated from launch or from the background, create a peer connection.
    var args = e.Parameter as Windows.ApplicationModel.Activation.LaunchActivatedEventArgs;
    if (args != null && args.Kind == Windows.ApplicationModel.Activation.ActivationKind.Launch)
    {
        if (args.Arguments == "Windows.Networking.Proximity.PeerFinder:StreamSocket")
        {
            AdvertiseForPeersButton_Click(null, null);
        }
    }
}


Verschlüsselung der über Netzwerksockets gesendeten Daten

Falls Sie mittels Näherung einen StreamSocket öffnen und vertrauliche Informationen über das Netzwerk senden, können Sie die über den Socket gesendeten Daten verschlüsseln. Informationen zum Einrichten der Verschlüsselung finden Sie in den Abschnitten zur SessionKey-Eigenschaft und CreateSymmetricKey-Methode.

Socketkommunikationsprotokoll

Wenn Sie mit einem StreamSocket-Objekt Informationen an eine Peer-App senden, können Sie das Protokoll für den Informationsaustausch definieren. Sie können beispielsweise ein XML-Format, durch Zeichen getrennte Name/Wert-Paare usw. verwenden. Wenn die PeerFinder-Klasse eine Socketverbindung zwischen Peer-Apps herstellt, werden die Apps unabhängig von ihrer Version verbunden. So kann es vorkommen, dass unterschiedliche Versionen der App miteinander kommunizieren. Wenn beispielsweise eine App den Empfang zweier 4-Byte-Werte erwartet und eine neuere Version der App die Daten als 8-Byte-Werte zur Aufnahme größerer Daten sendet, tritt bei der empfangenden App, die die 4-Byte-Werte erwartet, beim Verarbeiten der Daten ein Fehler auf. Achten Sie darauf, dass neuere Versionen der App weiter mit älteren Versionen kommunizieren können, die Ihr Kommunikationsprotokoll verwenden. Das heißt, stellen Sie sicher, dass ältere Versionen der App problemlos neue Informationen ignorieren können, die von neueren Versionen der App gesendet werden.

Tipp  

Bei der Kommunikation zwischen Peer-Apps müssen Sie häufig bestimmen, welche App die erste Nachricht sendet und welche App lauscht. Ein Vergleich von StreamSocket.Information.LocalAddress.CanonicalName mit StreamSocket.Information.RemoteHostName.CanonicalName ist eine Möglichkeit, um zu bestimmen, ob die App als Sender oder Listener fungiert. Wenn Sie testen, ob die Version des lokalen Hostnamens höher ist als die des Remotehostnamens, erhalten Sie zwischen zwei Instanzen der App immer ein gegenteiliges Ergebnis.

Verwandte Themen

Schnellstart: Verbinden von Anwendungen durch Tippen oder Suchen
Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Tippen
Guidelines for Proximity
Testen der Näherung in Apps und Behandeln von Problemen
Windows.Networking.Proximity namespace
Beispiele
Näherungsbeispiel

 

 

Anzeigen:
© 2014 Microsoft