Testen der Näherung in Apps und Behandeln von Problemen (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]

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.

Vorbereitung

Die Näherung ist eine großartige Möglichkeit, die gemeinsame Nutzung Ihrer App zwischen zwei auf unterschiedlichen Geräten ausgeführten App-Instanzen zuzulassen. In einer näherungsfähigen App koppeln App-Benutzer zwei Geräte einfach, oder ein Benutzer kann innerhalb der Drahtlosreichweite nach einem anderen Gerät suchen, auf dem die App ausgeführt wird. Die Suche nach Peer-Apps auf anderen PCs findet über Wi-Fi Direct statt. Unter Windows Phone erfolgt die Peer-App-Suche per Bluetooth, wobei auf anderen Telefonen laufende Peer-Apps gefunden werden.

Zum Testen von Funktionen, die auf eine Tippbewegung reagieren, muss auf jedem Gerät ein Näherungsgerät (z. B. NFC-Funk) installiert sein. Zum Testen von Funktionen, bei denen die drahtlose Suche auf PCs verwendet wird, muss jeder PC Wi-Fi Direct unterstützen.

Hinweis  Zum Testen von Suchfunktionen für Windows Phone Store-Apps muss jedes Telefon Bluetooth unterstützen.

Einrichten der Testumgebung:

Wenn Sie keine Hardware haben, die die Näherungskopplung unterstützt, z. B. NFC-Funkempfang (Near-Field Communication, Nahfeldkommunikation), können Sie das Beispiel für den Näherungstreiber verwenden, das in den Beispielen für das Windows-Treiberkit (WDK) enthalten ist. Sie können den Beispieltreiber verwenden, um eine Koppelbewegung über eine Netzwerkverbindung zwischen zwei Geräten zu simulieren. Informationen zum WDK-Download finden Sie im Thema zum Windows-Treiberkit (WDK). Sobald Sie das WDK und die Beispiele installiert haben, finden Sie das Näherungstreiberbeispiel im Verzeichnis „src\nfp“ an dem Speicherort, an dem Sie die WDK-Beispiele installiert haben. Anweisungen zum Erstellen und Ausführen des Simulators finden Sie in der Datei „NetNfpProvider.html“ im Verzeichnis „src\nfp\net“. Sobald Sie den Simulator starten, wird er im Hintergrund ausgeführt, während Ihre Näherungs-App im Vordergrund ausgeführt wird. Damit die Koppelsimulation funktioniert, muss Ihre App sich im Vordergrund befinden.

Verbinden von Apps mit der PeerFinder-Klasse

Sie können mit der PeerFinder-Klasse eine Socketverbindung zwischen zwei auf verschiedenen Geräten ausgeführten Instanzen derselben App, d. h. zwischen Peer-Apps, herstellen. Mit der PeerFinder-Klasse können Sie entweder Peer-Apps über eine Koppelbewegung verbinden oder Wi-Fi Direct verwenden, um im Funkbereich nach Peers zu suchen. Beide Methoden zum Verbinden von Peer-Apps erzeugen einen offenen Socket zwischen Peer-Apps. Wir empfehlen, dass Sie sowohl Funktionen für ausgelöste Verbindungen (Koppeln) als auch für Verbindungen mittels Suche (Wi-Fi Direct) in Ihrer App unterstützen.

Ein Beispiel für die Verbindung von Peer-Apps finden Sie unter Schnellstart: Verbinden von Anwendungen durch Koppeln oder Suchen oder Beispiel für die Näherung in der Beispielgalerie. Richtlinien zum Erstellen von Apps, die die Näherungsfunktion verwenden, finden Sie unter Richtlinien für das Entwickeln mithilfe von Näherung.

Hh967765.wedge(de-de,WIN.10).gifTesten von Peer-App-Verbindungen

  1. Installieren Sie Ihre App auf zwei Geräten, und starten Sie die App auf beiden Geräten.
  2. Kündigen Sie auf beiden Geräten eine Peerverbindung an. Dazu rufen Sie die Start-Methode auf.
  3. Koppeln Sie die beiden Geräte zusammen, um ausgelöste Verbindungen zu testen.
  4. Stellen Sie sicher, dass die UI in der App den Status der Koppelbewegung widerspiegelt. Das heißt, wenn ein Peer gefunden wird, wenn die Verbindung zwischen den Geräten hergestellt wird usw. Weitere Informationen finden Sie im TriggeredConnectionStateChanged-Ereignis.
  5. Wenn die Verbindung erfolgreich ist, muss die Benutzeroberfläche in der App anzeigen, dass die Netzwerkfunktion auf beiden Geräten aktiv ist.
  6. Wenn die Verbindung scheitert, stellen Sie sicher, dass die UI in der App den Benutzer über die nicht erfolgreiche Netzwerkverbindung informiert.
  7. Lassen Sie ein oder beide Geräte nach verfügbaren Peerverbindungen suchen, um die Drahtlosverbindungen zu testen. Dazu rufen Sie die FindAllPeersAsync-Methode auf. Durchsuchen wird nur zwischen PCs oder zwischen Telefonen unterstützt, jedoch nicht zwischen Telefonen und PCs. Der Mechanismus, über den das Durchsuchen stattfindet, ist auf Apps, die auf PCs laufen, und solchen, die auf Telefonen laufen, unterschiedlich. Windows Phone unterstützt nur das Durchsuchen über Bluetooth, wohingegen PCs dafür nur Wi-Fi Direct unterstützen.
  8. Wenn die Verbindung erfolgreich ist, muss die Benutzeroberfläche in der App anzeigen, dass die Netzwerkfunktion auf beiden Geräten aktiv ist.
  9. Wenn die Verbindung scheitert, stellen Sie sicher, dass die UI in der App den Benutzer über die nicht erfolgreiche Netzwerkverbindung informiert.
  10. Wenn Ihre App Verbindungen mit mehr als zwei Peers unterstützt, erweitern Sie den Test zur Verwendung mehrerer Geräte.

Wenn eine App, die ausgelöste Verbindungen (Koppeln) unterstützt, auf zwei Geräten installiert ist und von einem Gerät mit einer Tippbewegung eine Verbindung angefordert wird, wird der Benutzer des zweiten Geräts aufgefordert, die App zu starten oder zu installieren. Auf dem Gerät, das die Verbindung anfordert, muss die App im Vordergrund ausgeführt werden. Diese Funktion wird nicht unterstützt, wenn mit der FindAllPeersAsync-Methode nach Verbindungen gesucht wird.

Hh967765.wedge(de-de,WIN.10).gifTesten von Apps, die über eine Koppelbewegung gestartet wurden

  1. Installieren Sie Ihre App auf zwei Geräten. Starten Sie die App nur auf dem ersten Gerät.
  2. Kündigen Sie auf dem Gerät, auf dem Ihre App ausgeführt wird, eine Peerverbindung an. Dazu rufen Sie die Start-Methode auf.
  3. Koppeln Sie die Geräte.
  4. Stellen Sie auf dem zweiten Gerät sicher, dass der Benutzer durch eine Benachrichtigung aufgefordert wird, die App zu starten. Akzeptieren Sie die Benachrichtigung.
  5. Stellen Sie sicher, dass die App auf dem zweiten Gerät korrekt gestartet wird und dass die App sofort ein Netzwerksocket für die Näherung herstellt. Die Benutzeroberfläche in der App muss anzeigen, dass die Netzwerkfunktion auf beiden Geräten aktiv ist.
  6. Falls die App nicht erfolgreich gestartet wird, muss auf dem Gerät, das die Verbindung anfordert, ein Hinweis auf den Verbindungsfehler in der Benutzeroberfläche der App angezeigt werden. Wenn die App gestartet wird, aber kein Netzwerksocket für die Näherung herstellen kann, stellen Sie sicher, dass der Fehler auf beiden Geräten angezeigt wird.

Ihre App sollte auch ein Szenario behandeln können, in dem eine Anforderung zum Starten einer Peer-App abgelehnt wird.

Hh967765.wedge(de-de,WIN.10).gifTesten abgelehnter Anforderungen über eine Koppelbewegung

  1. Installieren Sie Ihre App auf zwei Geräten. Starten Sie die App nur auf dem ersten Gerät.
  2. Kündigen Sie auf dem Gerät, auf dem Ihre App ausgeführt wird, eine Peerverbindung an. Dazu rufen Sie die Start-Methode auf.
  3. Koppeln Sie die Geräte.
  4. Stellen Sie auf dem zweiten Gerät sicher, dass der Benutzer durch eine Benachrichtigung aufgefordert wird, die App zu starten oder zu installieren. Lehnen Sie die Aufforderung ab.
  5. Stellen Sie sicher, dass die App auf dem zweiten Gerät nicht gestartet wird und die Benutzeroberfläche der anfordernden App anzeigt, dass die Anforderung abgelehnt wurde.

Veröffentlichen und Abonnieren von Nachrichten mit der ProximityDevice-Klasse

Sie können die ProximityDevice-Klasse verwenden, um während einer Kopplung per Tippbewegung kleine Nachrichten zwischen Geräten zu senden. Die Geräte müssen sich dazu in der Reichweite der installierten Näherungshardware befinden. Diese Reichweite beträgt normalerweise 2 bis 3 cm.

Um während einer Kopplung per Tippbewegung eine Nachricht zu veröffentlichen, verwenden Sie die Methode PublishMessage, PublishBinaryMessage oder PublishUriMessage auf dem Gerät, das die Nachricht veröffentlicht, und die SubscribeForMessage-Methode auf dem Gerät, das die Nachricht empfängt. Ein Beispiel für das Veröffentlichen und Abonnieren von Nachrichten finden Sie unter Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Koppeln oder Beispiel für die Näherung in der Beispielgalerie.

Hh967765.wedge(de-de,WIN.10).gifTesten einer App, die eine Nachricht veröffentlicht oder abonniert

  1. Starten Sie die App, die eine Nachricht veröffentlicht, auf einem Gerät, und die App, die eine Nachricht abonniert, auf einem anderen Gerät. Dies kann auf beiden Geräten dieselbe App sein, muss aber nicht.
  2. Versetzen Sie die Apps in einen Status zum Veröffentlichen und Empfangen einer Nachricht. Dies umfasst das Aufrufen einer der publish-Methoden in der App zum Veröffentlichen und das Aufrufen der SubscribeForMessage-Methode in empfangenden App.
  3. Koppeln Sie die Geräte.
  4. Stellen Sie nach dem erfolgreichen Übertragen der Nachricht sicher, dass die UI in der abonnierenden App den Eingang der Nachricht anzeigt. Wahlweise können Sie in der App, die die Nachricht veröffentlicht, die Überladung der Veröffentlichungsmethode aufrufen. Diese enthält einen Parameter für einen Ereignishandler vom Typ MessageTransmittedHandler, der aufgerufen wird, nachdem die Nachricht übertragen wurde. Im Code für diesen Ereignishandler können Sie in der App, die die Nachricht veröffentlicht, die UI aktualisieren, damit diese die erfolgreiche Nachrichtenübermittlung anzeigt.
  5. Wenn die Nachricht nicht veröffentlicht oder empfangen wird, prüfen Sie den Code in Ihrer App, um das Problem zu finden. Schritte zur Problembehandlung finden Sie unter "Eine veröffentlichte und abonnierte Nachricht wird nicht empfangen" im Abschnitt "Problembehandlung" in diesem Thema.
  6. Testen Sie, dass beide Apps den Status zum Veröffentlichen und Abonnieren einer Nachricht verlassen können. Rufen Sie auf dem Gerät, das die Nachricht veröffentlicht, die StopPublishingMessage-Methode auf. Rufen Sie auf dem Gerät, das die Nachricht abonniert, die StopSubscribingForMessage-Methode auf. Stellen Sie nach dem Koppeln der Geräte sicher, dass die Nachricht nicht mehr veröffentlicht oder empfangen wird.

Problembehandlung

Wenn das Problem, das bei Ihnen auftritt, nicht in diesem Thema aufgeführt ist, finden Sie vielleicht in den Windows-Entwicklerforen eine Antwort.

Problem Problembehandlungsschritte
Keine Reaktion beim Koppeln. Wenn Peer-Apps mit einer Koppelbewegung verbunden werden oder eine Nachricht während des Koppelns veröffentlicht und abonniert wird, wird der Code zum Reagieren auf die Koppelbewegung nicht ausgeführt.

Stellen Sie sicher, dass die an der Koppelbewegung beteiligten Geräte sich im Näherungsbereich befinden (mindestens 2 cm). Sie müssen die Geräte möglicherweise entsprechend der Position des Näherungsgeräts ausrichten. Windows gibt einen Ton aus, wenn sich Computer im Näherungsbereich befinden.

Sie können mit den Ereignissen DeviceArrived und DeviceDeparted feststellen, wann ein Gerät sich im Näherungsbereich befindet oder den Näherungsbereich verlässt. Fügen Sie Ihrem Code Ereignishandler für die Ereignisse DeviceArrived und DeviceDeparted hinzu. Wenn der Ereignishandlercode ausgeführt wird, war die Koppelbewegung erfolgreich. Wird der Ereignishandlercode für die Ereignisse DeviceArrived und DeviceDeparted nicht ausgeführt, gibt es unter Umständen ein Problem mit der Näherungshardware oder dem Näherungstreiber.

Wenn Ihre App zum Herstellen einer ausgelösten Verbindung die PeerFinder-Klasse verwendet und das DeviceArrived-Ereignis ausgelöst wird, aber nicht das TriggeredConnection-Ereignis, überprüfen Sie Folgendes:

  • Beide Instanzen Ihrer App haben die Start-Methode aufgerufen, bevor sie versuchen, durch Koppeln eine Verbindung herzustellen.
  • Zwischen den Geräten besteht keine offene Socketverbindung mehr aus einem vorherigen Koppelvorgang. Wenn dies der Fall ist, stellen Sie sicher, dass Ihre App die Close-Methode auf einem nicht mehr benötigten Socket aufruft. Falls erforderlich, können Sie eine offene Socketverbindung zwischen Peerinstanzen Ihrer App schließen, indem Sie die App beenden und neu starten.
Die App wird nach dem Koppeln nicht gestartet.

Stellen Sie sicher, dass die App auf mindestens einem der beiden am Koppelvorgang beteiligten Geräte im Vordergrund ausgeführt wird. Wenn dies zutrifft und die App dennoch nach dem Koppeln nicht gestartet wird, sehen Sie sich die Problembehandlungsschritte für "Koppeln reagiert nicht" an.

Falls das TriggeredConnection-Ereignis in der im Vordergrund ausgeführten App ausgelöst wird, auf dem anderen beteiligten Gerät aber keine Aufforderung zum Starten der App angezeigt wird, stellen Sie sicher, dass die App korrekt installiert ist. Ist die App korrekt installiert, wird sie von der Startkachel aufgerufen und über die Koppelbewegung verbunden, während sie im Vordergrund ausgeführt wird.

Beim Suchen werden keine Peers gefunden.
  • Stellen Sie sicher, dass die App im Vordergrund ausgeführt wird und Sie die Start-Methode auf allen Geräten aufgerufen haben, die nach einer Verbindung suchen oder für eine Verbindung verfügbar sind. Überprüfen Sie, ob Wi-Fi Direct auf allen für eine Verbindung verfügbaren Geräten aktiviert ist, wenn Sie auf Windows-Geräten nach Peer-Apps suchen. Überprüfen Sie, ob Bluetooth auf allen Telefonen aktiviert ist, wenn Sie unter Windows Phone nach Peer-Apps suchen. Mit der SupportedDiscoveryTypes-Eigenschaft können Sie feststellen, ob der PC die Suche nach Peers unterstützt.

  • Stellen Sie sicher, dass für die suchende App keine offene Socketverbindung von einem vorherigen Aufruf der ConnectAsync-Methode mehr besteht. Wenn dies der Fall ist, stellen Sie sicher, dass Ihre App die Close-Methode auf einem nicht mehr benötigten Socket aufruft. Falls erforderlich, können Sie eine offene Socketverbindung zwischen Peerinstanzen Ihrer App schließen, indem Sie die App beenden und neu starten.

  • Bei der Suche nach Peers werden nur Peergeräte gefunden, auf denen dieselbe näherungsfähige App ausgeführt wird. Stellen Sie sicher, dass auf allen Geräten, die Sie für den Test einsetzen, dieselbe App ausgeführt wird. Sie können mit der ConnectAsync-Methode jeweils nur zwei Geräte verbinden.

  • Wenn die Geräte, die Sie verbinden möchten, Mitglied einer Domäne sind, wird das Herstellen einer neuer Verbindung oder das Schließen einer vorhandenen Verbindung vielleicht durch eine Domänenrichtlinie verhindert. Kann die Verbindung bei Geräten, die keiner Domäne angehören, erfolgreich hergestellt werden, aber nicht bei Geräten, die Mitglied einer Domäne sind, prüfen Sie die Firewallrichtlinie für Ihre Domäne.

  • Wenn die Verbindungsversuche auf einem PC scheitern, kann das an einer Einschränkung der Wi-Fi Direct-Hardware liegen. Versuchen Sie, die App auf beiden PCs mit aktiviertem Funkempfänger auszuführen, ohne sie aber mit einem Drahtlosnetzwerk zu verbinden.

Der Versuch, über Koppeln eine Verbindung herzustellen, scheitert nach einer Minute.

Überprüfen Sie die Funkeinstellungen auf beiden an der Kopplung beteiligten Geräten, und stellen Sie sicher, dass die WiFi- und Bluetooth-Funkempfänger aktiviert sind. Wenn keines der Geräte über ein Drahtlosgerät mit Wi-Fi Direct-Unterstützung oder ein Bluetooth-Gerät verfügt, stellen Sie sicher, dass beide Geräte an dasselbe Netzwerk angeschlossen sind.

Eine veröffentlichte und abonnierte Nachricht wird nicht empfangen. Sie stellen fest, dass beim Veröffentlichen und Abonnieren von Nachrichten die veröffentlichte Nachricht nicht vom Gerät empfangen wird, das die Nachricht abonniert hat.

Auf dem Gerät, das die Nachricht veröffentlicht, können Sie die Überladung der Methode PublishMessage, PublishUriMessage oder PublishBinaryMessage verwenden. Diese enthält einen Parameter für einen Ereignishandler vom Typ MessageTransmittedHandler, der aufgerufen wird, nachdem die Nachricht übertragen wurde. Wenn der Aufruf der Veröffentlichungsmethode erfolgreich ist und der Code im MessageTransmittedHandler-Ereignishandler ausgeführt wird, wurde die Nachricht erfolgreich übertragen.

Stellen Sie auf dem abonnierenden Gerät sicher, dass der Wert des messageType-Parameters, den Sie an die SubscribeForMessage-Methode übergeben haben, dem Wert des messageType-Parameters entspricht, der an die Methode PublishMessage oder PublishBinaryMessage übergeben wurde (für die PublishUriMessage-Methode ist der messageType-Wert immer WindowsUri). Bei den Werten für die Nachrichtentypen muss immer die Groß-/Kleinschreibung beachtet werden.

 

Verwandte Themen

Unterstützen von Näherung und Koppeln

Schnellstart: Verbinden von Anwendungen durch Tippen oder Suchen

Schnellstart: Veröffentlichen und Abonnieren von Nachrichten durch Koppeln

Richtlinien und Prüfliste für Näherung

Windows.Networking.Proximity namespace

Beispiele

Näherungsbeispiel