Unterstützen von Näherung und Koppeln (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

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 Ihre Apps mithilfe von Näherung zur Verwendung der Nahfeldkommunikation (Near-Field Communication, NFC) und zum Verbinden von zwei Geräten ohne Netzwerk mit Wi-Fi Direct erweitern. Mit der Näherung und NFC können Sie Geräte durch eine einfache Kopplungsgeste verbinden. Wenn sich zwei Geräte in einem Abstand von maximal 4 cm voneinander befinden oder das eine mit dem anderen gekoppelt wird, wird dies vom Betriebssystem auf den beiden Geräten erkannt. Sie können zwei Geräte, auf denen Ihre App ausgeführt wird, auch mittels Peersuche mit Wi-Fi Direct verbinden, sofern sie sich innerhalb der Drahtlosreichweite befinden. Sie können die beiden Geräte dann verbinden, um Inhalte wie Fotos oder Links zu teilen, Multiplayerspiele zu ermöglichen oder Nachrichten zu veröffentlichen oder zu abonnieren.

Wichtig  

Um das Koppeln zu ermöglichen, muss ein Gerät mit einem Näherungsgerät ausgestattet sein, z. B. einem NFC-Funkgerät. Für die Peersuche muss ein Gerät mit einem WiFi-Gerät ausgestattet sein, das Wi-Fi Direct unterstützt.

 

Inhalt dieses Abschnitts

Thema Beschreibung

Schnellstart: Verbinden von Apps durch Koppeln oder Navigation

Wenn Sie die Näherung verwenden, können Sie durch eine einfache Tippbewegung oder durch Suchen nach Geräten in Drahtlosreichweite eine Verbindung zwischen zwei Geräten herstellen. Sie müssen nicht mit einem Netzwerk verbunden sein. Sie können einfach zwei Geräte koppeln oder mit Wi-Fi Direct eine Verbindung herstellen.

Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Koppeln

Mit der Näherungsfunktion können Sie zwischen zwei Geräten Nachrichten veröffentlichen und abonnieren und statische Tags mit einer einfachen Kopplungsgeste auf ein Gerät schreiben. Wenn sich zwei Geräte in einem Abstand von 3 bis 4 cm voneinander befinden, benachrichtigt die Näherungsfunktion das System. In diesem Thema wird gezeigt, wie Sie die Näherungsfunktion verwenden, um eine Nachricht zu veröffentlichen oder zu abonnieren.

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.

 

Entwicklergruppe

Näherung kann von Entwicklern verwendet werden, die ihre App erweitern möchten, um mühelose Verbindungen durch Koppeln oder die Suche nach anderen Geräten, auf denen die App ausgeführt wird (Peer-Apps), innerhalb der Funkreichweite zu ermöglichen. Sie könnten z. B. ein Multiplayerspiel erstellen, bei dem Benutzer ihre Geräte koppeln, um eine gemeinsame Spielsitzung einzurichten. Eine App, in der Kunden ein Gerät koppeln und einen Link erhalten, unter dem sie weitere Informationen erhalten oder einen Einkauf tätigen können, wäre eine weitere Verwendungsmöglichkeit.

Mit Näherung können Sie schnellen Datenaustausch während einer Tippbewegung ermöglichen. Sie können die Kopplung auch verwenden, um einen langfristigen Kommunikationskanal per Infrastrukturnetzwerk, Wi-Fi Direct oder Bluetooth einzurichten.

Hinweis  

Für Windows Phone Store-Apps wird die Einrichtung eines Kommunikationskanals mit Wi-Fi Direct 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 separaten 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. Durch das Verknüpfen von Ereignishandlern mit den Ereignissen DeviceArrived und DeviceDeparted können Sie ermitteln, wann sich ein Gerät im Näherungsbereich befindet.

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/>";
}

Beispielcode für das Erstellen einer Netzwerkverbindung zwischen Geräten, die durch Kopplung oder Peersuche verbunden werden, 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 von PeerWatcher, ProximityDevice und PeerWatcher-Objekten 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

Wie bereits erwähnt, muss auf einem Gerät ein Gerät installiert sein, das die Windows-Schnittstelle für die Näherung implementiert, damit Sie die Näherungsfunktion nutzen können (Informationen zum Implementieren der Windows-Schnittstelle für die Näherung finden Sie in der Spezifikation zur Implementierung von Näherung in einem Nahfeld unter Windows 8). Sie stellen fest, ob ein Gerät installiert ist, das Näherung unterstützt, indem Sie die PeerFinder.SupportedDiscoveryTypes-Eigenschaft daraufhin überprüfen, ob Triggered-Verbindungen unterstützt werden. Sie können auch prüfen, ob die GetDefault-Methode NULL zurückgibt, oder eine Liste aller Näherungsgeräte abrufen und sicherstellen, dass die Liste auf mindestens ein Gerät verweist. Ein Beispiel für das Abrufen einer Liste aller installierten Näherungsgeräte finden Sie in der GetDeviceSelector-Methode.

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 tippen, um eine Verbindung zwischen Ihrer App und einer Peer-App auf einem anderen Gerät herzustellen, fordert Windows den Benutzer des anderen Geräts dazu auf, die App zu aktivieren, wenn sie nicht bereits ausgeführt wird oder sich im Vordergrund befindet. 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.

Bei der Aktivierung einer Peer-App mithilfe einer Tippbewegung wird das Activated-Ereignis ausgelöst. Die Kind der Aktivierung ist Launch. Wenn Sie das Ereignis aktivieren, indem Sie eine Nachricht mithilfe der PeerFinder.Start-Methode senden, kann der Nachrichtentext von 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.

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());
    }
}

Ein Beispiel für eine App, die mit einer Tippbewegung aktiviert wird und automatisch eine Socketverbindung herstellt, finden Sie unter Schnellstart: Verbinden von Anwendungen durch Koppeln oder Suchen.

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 erstellt, 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. Bei einem Test, ob die Version des Hostnamens höher ist als die des Remotehosts, 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

Richtlinien und Prüfliste für Näherung

Testen der Näherung in Apps und Behandeln von Problemen

Windows.Networking.Proximity namespace

Beispiele

Näherungsbeispiel