Prise en charge de la fonctionnalité de proximité et du geste tactile (HTML)

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Objectif

Remarque  

La proximité intéresse les développeurs qui veulent intégrer à leur application des connexions faciles via une action d’appuyer. Il peut s’agir d’un jeu multijoueur, par exemple, dans lequel deux utilisateurs posent leurs appareils l’un sur l’autre pour établir une session de jeu partagée. Il peut également s’agir d’une application qui permet aux clients de poser leur appareil sur un autre pour recevoir un lien vers un emplacement où ils peuvent obtenir des informations supplémentaires ou effectuer un achat. Pour établir une connexion entre deux appareils à l’aide d’une action d’appuyer, les deux appareils doivent disposer d’un périphérique de proximité, par exemple la communication en champ proche (NFC) par ondes radio.

 

Grâce à la fonctionnalité de proximité, vous pouvez étendre vos applications en faisant en sorte qu’elles utilisent des communications en champ proche et vous pouvez connecter deux appareils via Wi-Fi Direct sans devoir recourir à un réseau. La fonctionnalité de proximité et la technologie de communication en champ proche vous permettent de connecter des appareils à l’aide d’une simple action par appui. Si deux appareils se trouvent à 4 centimètres tout au plus l’un de l’autre, ou s’ils sont connectés, le système d’exploitation de chaque appareil est informé de l’existence de l’autre. Vous pouvez aussi connecter deux appareils exécutant votre application et qui se trouvent à portée de connexion sans fil, en utilisant la recherche d’homologue avec Wi-Fi Direct. Vous pouvez alors connecter les deux appareils l’un à l’autre pour partager du contenu, tel que des photos ou des liens, créer une expérience multijoueur, ou publier et s’abonner à des messages.

Important  

Un appareil doit avoir un périphérique de proximité, tel qu’un périphérique radio de communication de champ proche, pour permettre les connexions par geste tactile. Un appareil doit avoir un périphérique Wi-Fi prenant en charge Wi-Fi Direct pour permettre la recherche d’homologues.

 

Dans cette section

Rubrique Description

Démarrage rapide : connexion d’applications à l’aide d’un geste tactile ou de la navigation

Quand vous utilisez la fonctionnalité de proximité, vous pouvez créer une connexion entre deux appareils avec un simple geste tactile ou en recherchant les appareils à portée de connexion sans fil. Il n’est pas nécessaire d’être connecté à un réseau. Vous pouvez simplement connecter deux appareils à l’aide d’une action d’appui ou de Wi-Fi Direct.

Démarrage rapide : publication et abonnement à des messages à l’aide d’un geste d’appui

Grâce à la fonctionnalité de proximité, une simple action par appui vous permet de publier des messages et de vous abonner à ces derniers entre deux appareils, mais aussi d’écrire des balises statiques à destination d’un appareil. Si deux appareils s’approchent à 3 ou 4 centimètres l’un de l’autre, la fonctionnalité de proximité envoie une notification au système. Cette rubrique vous montre comment utiliser la proximité pour publier un message ou s’y abonner.

Évaluation de la proximité dans les applications et résolution des problèmes qui en découlent

Cette rubrique fournit des instructions que les développeurs d’applications peuvent suivre pour tester la proximité et résoudre les problèmes qui y sont liés au sein d’une application, avant de soumettre celle-ci au Windows Store.

 

Audience de développeurs

La fonction de proximité est conçue pour être utilisée par des développeurs qui veulent étendre leurs applications en permettant des connexions faciles via un geste tactile ou via une recherche d’autres appareils exécutant votre application, ou des applications homologues, à portée de connexion sans fil. Par exemple, ces applications peuvent être un jeu multijoueur où deux utilisateurs effectuent ensemble un geste tactile sur leur appareil pour établir une session de jeu partagée. Il peut s’agir aussi d’une application permettant aux clients d’effectuer un geste tactile sur un appareil et de recevoir un lien vers un emplacement où ils peuvent obtenir davantage d’informations ou faire un achat.

Vous pouvez utiliser la fonctionnalité de proximité pour permettre un échange rapide de données lors d’un geste tactile. Vous pouvez aussi utiliser l’action par appui pour configurer un canal de communication à long terme, à l’aide d’un réseau à infrastructure, de Wi-Fi Direct ou de Bluetooth.

Remarque  

Dans les applications du Windows Phone Store, la configuration d’un canal de communication à l’aide de la fonctionnalité Wi-Fi Direct n’est pas prise en charge. Vous ne pouvez configurer un canal de communication à long terme qu’à l’aide d’un réseau à infrastructure ou de la fonctionnalité Bluetooth.

La fonctionnalité de proximité est prise en charge par les classes de Windows Runtime qui se trouvent dans l’espace de noms Windows.Networking.Proximity. Vous pouvez utiliser la classe ProximityDevice pour communiquer avec d’autres appareils situés à moins de 4 centimètres, et échanger une petite quantité de données pendant l’action d’appuyer. Vous pouvez utiliser la classe PeerFinder pour communiquer avec des applications homologues et configurer une connexion de sockets à long terme. Une application homologue est une autre instance d’une application s’exécutant sur un appareil distinct.

Par exemple, le code suivant utilise la méthode statique GetDefault de la classe ProximityDevice pour obtenir une référence au périphérique de proximité pour l’ordinateur local. En associant des gestionnaires d’événements aux événements DeviceArrived et DeviceDeparted, vous pouvez savoir à quel moment un appareil entre dans la zone de proximité ou en sort.

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

Pour un exemple de code montrant comment créer une connexion réseau entre des appareils sur lesquels des gestes tactiles sont effectués en même temps ou qui sont connectés par recherche d’homologues, voir Démarrage rapide : connexion d’applications à l’aide d’un geste tactile ou de la navigation. Pour un exemple de code montrant comment partager des petits messages entre des appareils sur lesquels des gestes tactiles sont effectués en même temps, voir Démarrage rapide : publication et abonnement à des messages à l’aide d’un geste d’appui. Pour obtenir un exemple de code qui montre comment créer des connexions d’applications homologues et rechercher de façon dynamique des applications homologues à portée via les objets PeerWatcher, ProximityDevice et PeerWatcher, voir l’exemple de proximité.

Important  

Pour utiliser l’action d’appuyer dans votre application, vous devez activer la fonctionnalité de proximité dans le manifeste du package de votre application.

 

Important  

Les API de proximité n’offrent aucune fonction en matière d’authentification. Vous devez éviter d’échanger des données sensibles avec ces API.

 

Comment déterminer si la fonctionnalité de proximité est prise en charge

Comme mentionné précédemment, un appareil doit être doté d’un périphérique installé qui implémente l’interface de proximité de Windows afin que vous puissiez utiliser la fonctionnalité de proximité. (Pour plus d’informations sur l’implémentation de l’interface de proximité de Windows, voir les Spécifications d’implémentation de la proximité en champ proche de Windows 8.) Vous pouvez déterminer si un périphérique qui prend en charge la proximité est installé en vérifiant la propriété PeerFinder.SupportedDiscoveryTypes pour savoir si les connexions Triggered sont prises en charge, en vérifiant si la méthode GetDefault retourne la valeur NULL ou en accédant à une liste de tous les périphériques de proximité et en vous assurant que cette liste fait référence à au moins un périphérique. Pour retrouver un exemple d’obtention de la liste des périphériques de proximité installés, voir la méthode GetDeviceSelector.

La fonctionnalité de proximité n’est active que lorsque votre application s’exécute au premier plan

Toutes les opérations ProximityDevice et PeerFinder sont désactivées si votre application passe à l’arrière-plan. Vous ne pouvez publier et inscrire des messages ou des connexions de socket ouvertes que si votre application s’exécute au premier plan. Si vous ouvrez une connexion de socket et que votre application passe ensuite en arrière-plan, la connexion reste alors ouverte.

Activation d’applications par proximité

Quand vous utilisez la classe PeerFinder et appuyez pour connecter votre application à une application homologue sur un autre appareil, Windows demande à l’utilisateur de l’autre appareil d’activer l’application si cette dernière n’est pas déjà en cours d’exécution ou si elle ne se trouve pas au premier plan. Si l’application s’exécute déjà au premier plan, l’événement d’activation est alors déclenché sans le demander au préalable à l’utilisateur. Vous pouvez aussi activer une application qui ne s’exécute pas au premier plan en appelant la surcharge de la méthode PeerFinder.Start qui reçoit une chaîne en paramètre. Le paramètre de chaîne pour la méthode Start contient un message qui est envoyé à l’application homologue. L’application s’active avec le message passé en arguments de l’activation.

Lorsque vous activez une application homologue par le biais d’une action de toucher, l’événement Activated se déclenche. L’activation Kind correspond à Launch. Si vous activez l’événement en envoyant un message par le biais de la méthode PeerFinder.Start, le texte du message peut alors être récupéré de la propriété Arguments des arguments de lancement. Si votre application est activée dans le but d’ouvrir un objet StreamSocket, la propriété Arguments retourne alors la chaîne Windows.Networking.Proximity.PeerFinder:StreamSocket. Dans ce cas, affectez à la propriété TriggeredConnectionStateChanged un gestionnaire d’événements approprié et appelez la méthode PeerFinder.Start pour effectuer la connexion de sockets.

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

Pour obtenir un exemple d’application qui s’active suite à une action de toucher et qui établit automatiquement une connexion de socket, voir Démarrage rapide : connexion d’applications à l’aide d’un geste tactile ou d’une recherche.

Protocole de communication de socket

Quand vous envoyez des informations à une application homologue à l’aide d’un objet StreamSocket, il vous incombe de définir le protocole de partage des informations. Par exemple, vous pourriez utiliser un format XML, des paires de nom/valeur délimitées, et ainsi de suite. Lorsque la classe PeerFinder crée une connexion de socket entre des applications homologues, elle connecte les applications quelle que soit leur version. En conséquence, il se peut que deux versions différentes de votre application communiquent. Par exemple, si une application réceptrice attend deux valeurs de 4 octets et qu’une nouvelle version de cette application envoie les données sous forme de deux valeurs de 8 octets afin de gérer des données plus importantes, l’application réceptrice qui attend des valeurs de 4 octets rencontrera une erreur durant le traitement des données. Vous devez vous assurer que les versions plus récentes de votre application peuvent toujours communiquer avec les anciennes versions par le biais de votre protocole de communication. Autrement dit, vérifiez que les anciennes versions de votre application peuvent ignorer les nouvelles informations envoyées par une nouvelle version de l’application sans rencontrer de problème.

Astuce  

Quand des applications homologues communiquent, vous devez souvent identifier l’application qui enverra le premier message et celle qui sera à l’écoute. L’une des manières de déterminer si votre application est l’expéditeur ou l’écouteur consiste à comparer streamSocket.information.localAddress.canonicalName à streamSocket.information.remoteHostName.canonicalName. En testant si le nom de l’hôte local est plus grand que le nom de l’hôte distant, vous recevrez toujours un résultat opposé entre deux instances de votre application.

 

Rubriques associées

Démarrage rapide : connexion d’applications à l’aide d’un geste tactile ou d’une recherche

Démarrage rapide : publication et abonnement à des messages à l’aide d’un geste d’appui

Recommandations et liste de vérification sur la proximité

Évaluation de la proximité dans les applications et résolution des problèmes qui en découlent

Windows.Networking.Proximity namespace

Exemples

Exemple de proximité