Verbinden zu Remote-Anwendungen mithilfe von App-Tethering

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Verwenden von App-Tethering


Bevor die TTetheringAppProfile-Komponenten zweier Anwendungen Aktionen und Daten über App-Tethering teilen können, müssen diese Anwendungen sich gegenseitig mithilfe der Komponente TTetheringManager ermitteln, gekoppelt werden und dann die TTetheringAppProfile-Komponenten verbunden werden.

Voraussetzungen für Adapter und Protokolle

Für die verschiedenen Adapter und Protokolle, die das App-Tethering-Feature zum Koppeln von Anwendungen bzw. zum Austauschen von Daten bereitstellt, können spezielle Voraussetzungen erforderlich sein.

In den folgenden Themen können Sie die Voraussetzungen für die integrierten Adapter und Protokolle überprüfen:

  • TTetheringNetworkAdapter, Adapter für Verbindungen zwischen Anwendungen, die auf demselben Gerät ausgeführt werden oder über ein IP-Netzwerk, wie einem LAN (Local Area Network) oder dem Internet, erreichbar sind.
  • TTetheringBluetoothAdapter, Adapter für Verbindungen zwischen Anwendungen, die auf verschiedenen Geräten ausgeführt werden, die erreichbar und über Classic Bluetooth gekoppelt sind.
  • TTetheringTCPProtocol, von beiden Adaptern verwendetes Kommunikationsprotokoll.

Auswählen eines Verfahrens zum Ermitteln, Koppeln und Verbinden mit Remote-Anwendungen

Sie können mit einem der folgenden Verfahren Anwendungen ermitteln und koppeln:

Die Verwendung von Gruppen ist einfacher, das manuelle Verfahren bietet dagegen eine größere Flexibilität, und beide Verfahren unterstützen die passwortgeschützte Koppelung. Wählen Sie das Verfahren aus, das Ihren Anforderungen am besten gerecht wird; Sie können auch beide Verfahren mit demselben TTetheringManager kombinieren.

Verbinden von Anwendungen über Gruppen

Wenn sich Ihre Anwendungen automatisch ermitteln und sich gegenseitig koppeln sollen:

  1. Geben Sie in die Eigenschaft Group der TTetheringAppProfile-Komponente jeder Anwendung denselben String ein.
  2. Rufen Sie die Methode AutoConnect der TTetheringManager-Komponente jeder Anwendung zur Laufzeit auf.

Wählen Sie einen möglichst eindeutigen "Group"-String aus, um zu verhindern, dass Ihre Anwendungen sich versehentlich mit Fremdanwendungen verbinden, die zufällig dieselbe "Group" verwenden. Beispielsweise können Sie eine UUID als "Group"-String verwenden.

Hinweis: Fremdanwendungen können eventuell trotzdem Ihre "Group" ermitteln und damit absichtlich eine Verbindung mit Ihren Anwendungen herstellen. Wenn Sie nicht zulassen möchten, dass Fremdanwendungen automatisch eine Verbindung mit Ihren Anwendungen über App-Tethering herstellen, verwenden Sie ein Passwort.

Wenn Sie in einer Ihrer Anwendungen AutoConnect aufrufen, ermittelt Ihre Anwendung alle anderen Anwendungen, die auch App-Tethering verwenden, und Ihre Anwendung wird automatisch mit denjenigen ermittelten Anwendungen gekoppelt und verbunden, die eine TTetheringAppProfile-Komponente mit derselben "Group" wie Ihre TTetheringAppProfile-Komponente verwenden. Am Ende von AutoConnect wird das Ereignis OnEndAutoConnect ausgelöst.

Manuelles Verbinden mit Remote-Anwendungen

Wenn Sie eine größere Kontrolle über die Ermittlungs- und Koppelungsphasen der App-Tethering-Verbindung haben möchten, können Sie das folgende Verfahren anwenden:

  1. Rufen Sie die Methode DiscoverManagers der TTetheringManager-Komponente Ihrer Anwendung auf, um die Ermittlung anderer Anwendungen, die das App-Tethering verwenden, zu starten. Bei Abschluss der Ermittlung wird das Ereignis OnEndManagersDiscovery Ihres Managers ausgelöst.
  2. Rufen Sie TTetheringManager.PairManager für die gewünschten Anwendungen aus der Liste der ermittelten RemoteManagers Ihres TTetheringManager auf, um eine Koppelung herzustellen. Bei jeder Koppelung Ihres Managers mit einem Remote-Manager wird das Ereignis OnEndProfilesDiscovery Ihres Managers ausgelöst.
  3. Rufen Sie in Ihrer TTetheringAppProfile-Komponente Connect für die gewünschten Profile aus der Liste der ermittelten RemoteProfiles Ihres TTetheringManager auf, um eine Verbindung herzustellen.

Remote-Manager und Remote-Profile sind Instanzen von TTetheringManagerInfo bzw. von TTetheringProfileInfo. Diese Klassen stellen Informationen über eine Instanz von TTetheringManager oder TTetheringAppProfile aus einer Remote-Anwendung bereit. Anhand dieser Informationen können Sie festlegen, ob mit einem bestimmten Remote-Manager oder -Profil gekoppelt bzw. verbunden werden soll.

Herstellen von Verbinden zu Anwendungen außerhalb Ihres Subnetzes

Standardmäßig führen AutoConnect und DiscoverManagers die Suche im Subnetz des LAN (Local Area Network) durch, in dem sich das Gerät mit Ihrer Anwendung befindet.

Sie können dieses Verhalten aber mit dem optionalen Parameter Target überschreiben und eine IP-Adresse oder ein Subnetz angeben:

  • Um eine IP-Adresse für die Suche nach Remote-Managern festzulegen, geben Sie diese IP-Adresse als Target an.
  • Um ein Subnetz mit IP-Adressen festzulegen, geben Sie eine IP-Adresse mit 0 als vierter Nummer an. Wenn Sie zum Beispiel "192.168.4.0" als Target angeben, durchsucht Ihr Manager das Subnetz 192.168.4.x nach Remote-Managern.
    Hinweis: Sie können keine umfassenderen Subnetze angeben. "192.168.0.0" wird beispielsweise nicht unterstützt.

Verwenden eines Passworts für die Koppelung

Die RTL stellt passwortbasierte Sicherheit für App-Tethering-Koppelungen zwischen Anwendungen bereit. Mit diesem passwortbasierten System können Sie eine eigene Sicherheitsprozedur implementieren. Zum Beispiel können Sie:

  • Für Benutzer transparent festlegen, dass Anwendungen automatisch eine Verbindung zueinander herstellen, wenn sie sich gegenseitig erkennen.
  • Festlegen, dass Benutzer manuell ein Passwort in beide Anwendungen eingeben müssen, damit eine Verbindung hergestellt werden kann.

Legen Sie mit der Eigenschaft Password Ihres Managers ein Passwort fest, dass Remote-Managern bekannt sein muss, um eine Koppelung mit Ihrem Manager herzustellen. Wenn ein Manager versucht, eine Koppelung mit einem passwortgeschützten Remote-Manager herzustellen, wird das Ereignis OnRequestManagerPassword des lokalen Managers ausgelöst, und der lokale Manager muss das korrekte Passwort in diesem Ereignis angeben. Ansonsten schlägt die Koppelung fehl.

Dauerhafte Koppelungsinformationen

Beim Koppeln Ihres Managers mit einem Remote-Manager speichert Ihr Manager den Bezeichner des Remote-Managers und einen Hash-Code, den beide Manager während des Koppelungsprozesses genutzt haben. Die Verbindung der Manager kann gelegentlich abbrechen, beispielsweise weil sie sich einige Zeit nicht mehr in gegenseitiger Reichweite (bezogen auf das Tethering) befinden. Wenn beide Manager sich wieder in Reichweite befinden, können sie sich mit den Daten, die sie während des vorherigen Koppelungsprozesses gespeichert haben, wiedererkennen und authentifizieren. Für diese Authentifizierung ist kein Passwort erforderlich, auch wenn beim ursprünglichen Koppelungsprozess ein Passwort benötigt wurde.

Standardmäßig speichern Manager Informationen über Remote-Manager, die mit ihnen gekoppelt sind, im Arbeitsspeicher. Daher kann Ihr Manager eine Verbindung mit einem zuvor gekoppelten Remote-Manager nur in derselben Sitzung herstellen. Wenn Sie Ihre Anwendung neu starten, gehen die Koppelungsdaten Ihres Managers verloren, und ohne Passwort kann keine Verbindung mit zuvor gekoppelten Remote-Managern wiederhergestellt werden, wenn ursprünglich ein Passwort erforderlich war.

Sie können eine Unterklasse von TTetheringCustomStorage implementieren und dem Parameter AStorage des Ereignisses OnRequestStorage Ihres Managers eine Instanz zuweisen, um Ihren Manager persistent zu definieren. In Ihrer Implementierung können diese Daten in einem persistenten Medium, wie z. B. einer lokalen Datei, gespeichert werden.

Hinweis: Damit sich zwei Manager nach einem Neustart koppeln können, müssen beide Manager persistent sein.

In der Codebeispiel-Unit TetheringIniFileStorage finden Sie ein Beispiel für die Implementierung einer Unterklasse von TTetheringCustomStorage. Sie können mit der Unit TetheringIniFileStorage die Koppelungsdaten Ihrer TTetheringManager-Komponente in einer INI-Datei dauerhaft speichern.

Siehe auch