Verbinden zu Remote-Anwendungen mithilfe von App-Tethering
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.
Inhaltsverzeichnis
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:
- Definieren von zwei Anwendungen als zur selben Gruppe gehörig und Verwenden der automatischen Ermittlung und Koppelung.
- Abrufen einer Liste mit ermittelten Anwendungen und dann Anfordern der Koppelung mit bestimmten Anwendungen.
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:
- Geben Sie in die Eigenschaft Group der TTetheringAppProfile-Komponente jeder Anwendung denselben String ein.
- 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.
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:
- 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.
- 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.
- 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.
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.
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
- Hinzufügen von App-Tethering zu Anwendungen
- Teilen und Ausführen von Aktionen für Remote-Anwendungen mithilfe von App-Tethering
- Teilen von Daten mit Remote-Anwendungen mithilfe von App-Tethering
- BDShoppingList (Beispiel)
- DesktopCast (Beispiel)
- MediaPlayer (Beispiel)
- PhotoWall (Beispiel)