Connexion à des applications distantes à l'aide du tethering d'app

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation du tethering d'app


Avant que les composants TTetheringAppProfile de deux applications puissent partager des actions et des données via le tethering d'app, vos applications doivent se découvrir et s'appairer au moyen de leur composant TTetheringManager, puis leurs composants TTetheringAppProfile doivent se connecter.

Exigences relatives aux adaptateurs et aux protocoles

Les différents adaptateurs et protocoles fournis par la fonctionnalité de tethering d'app pour appairer des applications et échanger des données peuvent respectivement avoir leurs propres exigences.

Pour vérifier les exigences des adaptateurs et des protocoles intégrés, voir :

  • TTetheringNetworkAdapterCommon, adaptateur pour les connexions entre les applications qui s'exécutent sur le même périphérique ou sont accessibles via un réseau IP, par exemple un réseau local (LAN) ou Internet.
  • TTetheringBluetoothAdapter, adaptateur pour les connexions entre les applications qui s'exécutent sur différents périphériques accessibles et appairables en utilisant Classic Bluetooth.
  • TTetheringTCPProtocol, protocole de communication utilisé par les deux adaptateurs.

Choix d'une approche pour la découverte, l'appairage et la connexion à des applications distantes

Vous pouvez utiliser l'une des approches suivantes pour découvrir et appairer des applications :

L'utilisation de groupes est plus simple, mais l'approche manuelle offre davantage de souplesse, et les deux approches supportent l'appairage protégé par mot de passe. Choisissez l'approche qui convient le mieux à votre cas d'utilisation ; vous pouvez également combiner deux approches avec le même TTetheringManager.

Utilisation de groupes pour se connecter à des applications

Si vous voulez que vos applications se découvrent et s'appairent automatiquement :

  1. Entrez la même chaîne dans la propriété Group du composant TTetheringAppProfile de chaque application.
  2. Appelez la méthode AutoConnect du composant TTetheringManager de chaque application à l'exécution.

Choisissez une chaîne Group aussi unique que possible, pour empêcher que vos applications se connectent accidentellement à des applications tierces utilisant le même groupe. Par exemple, vous pouvez utiliser un UUID en tant que chaîne Group.

Remarque : Les applications tierces pourront toujours trouver votre groupe et l'utiliser intentionnellement pour se connecter automatiquement à vos applications. Si vous ne voulez pas que les applications tierces se connectent automatiquement à vos applications via le tethering d'app, utilisez un mot de passe.

Lorsque vous appelez AutoConnect sur l'une de vos applications, votre application découvre les autres applications qui utilisent également le tethering d'app. Votre application s'appaire et se connecte automatiquement aux applications découvertes qui contiennent un composant TTetheringAppProfile se trouvant dans le même groupe que votre composant TTetheringAppProfile. Lorsque AutoConnect est terminé, l'événement OnEndAutoConnect se produit.

Connexion manuelle à des applications distantes

Si vous souhaitez davantage de contrôle sur les phases de découverte et d'appairage de la connexion du tethering d'app, vous pouvez utiliser à la place l'approche suivante :

  1. Appelez la méthode DiscoverManagers du composant TTetheringManager de votre application pour démarrer la découverte des autres applications utilisant le tethering d'app. Lorsque la découverte est terminée, l'événement OnEndManagersDiscovery de votre gestionnaire se produit.
  2. Consultez la liste des RemoteManagers découverts de votre TTetheringManager, et appelez TTetheringManager.PairManager pour effectuer l'appairage avec ceux de votre choix. Chaque fois que vous appairez votre gestionnaire avec un gestionnaire distant, l'événement OnEndProfilesDiscovery de votre gestionnaire se produit.
  3. Consultez la liste des RemoteProfiles découverts de votre TTetheringManager, et appelez Connect sur votre composant TTetheringAppProfile pour établir la connexion à ceux de votre choix.

Les gestionnaires distants et les profils distants sont respectivement des instances de TTetheringManagerInfo et TTetheringProfileInfo. Ces classes fournissent des informations à propos d'une instance de TTetheringManager ou TTetheringAppProfile à partir d'une application distante. Utilisez ces informations pour déterminer s'il faut effectuer l'appairage ou la connexion à un gestionnaire ou un profil distant spécifique.

Connexion aux applications à l'extérieur de votre sous-réseau

Par défaut, AutoConnect et DiscoverManagers effectuent la détection sur le sous-réseau du réseau local (LAN) où se trouve le périphérique exécutant votre application.

Toutefois, vous pouvez utiliser leur paramètre facultatif Target pour redéfinir ce comportement, et spécifier une adresse IP ou un sous-réseau :

  • Pour indiquer une adresse IP pour la recherche de gestionnaires distants, spécifiez cette adresse IP en tant que Target.
  • Pour indiquer un sous-réseau d'adresses IP, spécifiez une adresse IP avec un 0 en tant que quatrième nombre. Par exemple, si vous spécifiez "192.168.4.0" pour Target, votre gestionnaire recherche les gestionnaires distants sur le sous-réseau 192.168.4.x.
    Remarque : Vous ne pouvez pas spécifier des sous-réseaux plus larges. Par exemple, "192.168.0.0" n'est pas supporté.

Utilisation d'un mot de passe pour l'appairage

La RTL fournit une sécurité basée sur un mot de passe pour l'appairage par tethering d'app entre les applications. Vous pouvez utiliser ce système basé sur un mot de passe pour implémenter votre propre procédure de sécurité. Par exemple, vous pouvez :

  • Amener les applications à se connecter automatiquement lorsqu'elles se découvrent les unes les autres, de manière transparente pour les utilisateurs.
  • Permettre aux utilisateurs d'entrer un mot de passe dans les deux applications pour les appairer.

Utilisez la propriété Password de votre gestionnaire pour spécifier un mot de passe que les gestionnaires distants doivent connaître afin d'effectuer l'appairage avec votre gestionnaire. Lorsqu'un gestionnaire tente d'effectuer l'appairage avec un gestionnaire distant protégé par mot de passe, l'événement OnRequestManagerPassword du gestionnaire local se produit, et le gestionnaire local doit spécifier le mot de passe correct dans cet événement. Sinon, l'appairage échoue.

Persistance des informations d'appairage

Lorsque votre gestionnaire effectue un appairage avec un gestionnaire distant, il stocke l'identificateur du gestionnaire distant ainsi que le hachage qu'ils ont tous deux partagé lors du processus d'appairage. Il se peut qu'à un moment vos gestionnaires perdent la connexion établie entre eux, par exemple s'ils ne sont plus à portée l'un de l'autre (hors tethering) pendant un certain temps. Lorsque les deux gestionnaires se retrouvent à nouveau à portée l'un de l'autre, ils sont capables de se reconnaître et de s'authentifier mutuellement en utilisant les données stockées durant le processus d'appairage. Cette authentification ne nécessite aucun mot de passe, même si un mot de passe était nécessaire lors du processus initial d'appairage.

Par défaut, les gestionnaires stockent les informations concernant les gestionnaires distants auxquels ils sont appairés dans leur mémoire. En conséquence, votre gestionnaire peut se reconnecter à un gestionnaire distant auquel il a été précédemment appairé, mais uniquement au cours d'une même session. Si vous redémarrez votre application, votre gestionnaire perd ses données d'appairage et ne peut pas se reconnecter automatiquement aux gestionnaires distants auxquels il était précédemment appairé sans réutiliser un mot de passe (si un mot de passe est nécessaire).

Vous pouvez implémenter une sous-classe de TTetheringCustomStorage et assigner une instance au paramètre AStorage de l'événement OnRequestStorage de votre gestionnaire pour rendre votre gestionnaire persistant. Votre implémentation peut stocker ces données dans un média persistant, par exemple un fichier local.

Remarque : Pour que deux gestionnaires puissent s'appairer après un redémarrage, ils doivent tous deux être persistants.

L'unité de l'exemple de code TetheringIniFileStorage fournit un exemple d'implémentation d'une sous-classe de TTetheringCustomStorage. Vous pouvez utiliser l'unité TetheringIniFileStorage pour préserver les données d'appairage de votre composant TTetheringManager sur un fichier INI.

Voir aussi