Mit dem TeamViewer Software Development Kit (SDK) können Sie die volle Funktionalität von Assist AR nutzen und Ihren Kunden die beste AR-Fernunterstützung bieten, indem Sie AR-Fernunterstützungsfunktionen in Ihre eigenen mobilen Anwendungen einbetten.

Mit dem SDK können Sie sichere und GDPR-konforme Verbindungen zu den Geräten Ihrer Kunden herstellen.

Dieser Artikel richtet sich an alle, die TeamViewer Assist AR nutzen.

Voraussetzungen

  • Android 5.0 und höher
  • Ein vorhandenes TeamViewer Konto

Wenn Sie noch kein TeamViewer Konto haben, folgen Sie den nachstehenden Schritten, um eines zu erstellen:

  1. Gehen Sie zu https://login.teamviewer.com/und klicken Sie auf Sign Up.
  2. Führen Sie die Schritte aus, um ein Konto zu erstellen und Ihre E-Mail-Adresse zu bestätigen.

Einen API-Schlüssel generieren

1) Gehen Sie zu https://login.teamviewer.com/ und melden Sie sich mit Ihrem TeamViewer Konto an.

2) Klicken Sie unten auf der Seite auf Apps.

3) Klicken Sie auf die Schaltfläche App erstellen.

4) Aktivieren Sie den Mobile SDK Token, geben Sie einen Namen ein und fügen Sie (optional) eine kurze Beschreibung hinzu.

5) Aktivieren Sie Android.

6) Klicken Sie auf Erstellen.

Ihr Token wird beim Öffnen der erstellten App angezeigt:

Kopieren Sie diesen Token in Ihre Zwischenablage und fügen Sie ihn an einem sicheren Ort ein.

🚨WICHTIG: Geben Sie diesen Token nicht an Dritte weiter!

Holen Sie sich das TeamViewer Mobile SDK

Das SDK ist für Kunden mit einer Assist AR Professional-Lizenz verfügbar und wird vom TeamViewer Support-Team verteilt.

Integrieren Sie Ihr TeamViewer Mobile SDK

1) TeamViewer Mobile SDK für Android enthält die folgenden Dateien:

  1. TeamViewerSdk.aar (TeamViewer Mobile SDK)
  2. AssistARSessionUI.aar (nur erforderlich, wenn Sie eine AssistAR-Sitzung mit dem SDK einrichten wollen)
  3. ScreenSharingSdk-docs (TeamViewerSdk Dokumentation)
  4. AssistARSessionUI-docs (AssistARSessionUI-Dokumentation)
  5. Die Demo-App ist verfügbar unter https://github.com/teamviewer/TravelApp/

2) Erstellen Sie einen libs-Ordner unter Ihrem Programmverzeichnis und kopieren Sie die *.aar-Dateien dorthin.

📌Hinweis: Das SDK unterstützt die folgenden Architekturen: armeabi-v7a, arm64-v8a, x86, x86_64.

3) Aktivieren Sie ViewBinding und fügen Sie die folgenden Abhängigkeiten in die build.gradle Ihrer App ein:

android { 
 
   buildFeatures { 
      viewBinding true 
   } 
} 
 
dependencies { 
   implementation files('libs/TeamViewerSdk.aar') 
   implementation files('libs/AssistARSessionUI.aar') //(Add only if you plan to use AssistAR(AssistAR) Session 
    
// Add dependencies of AssistARSessionUI.aar(Add only if you plan to use AssistAR Session): 
   runtimeOnly "androidx.camera:camera-camera2:1.0.2" 
   runtimeOnly "androidx.camera:camera-lifecycle:1.0.2" 
   runtimeOnly "androidx.constraintlayout:constraintlayout:2.0.4" 
   runtimeOnly "androidx.fragment:fragment-ktx:1.3.6" 
   runtimeOnly "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" 
   runtimeOnly "androidx.work:work-runtime-ktx:2.5.0" 
   runtimeOnly "com.google.android.material:material:1.4.0" 
   runtimeOnly "de.javagl:obj:0.3.0" 
   runtimeOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.31" 
   runtimeOnly "com.google.android.gms:play-services-mlkit-text-recognition:17.0.0" 
   runtimeOnly "com.squareup.picasso:picasso:2.8" 
}

Eine aktuelle Liste der Abhängigkeiten finden Sie in der Datei AssistARSessionUI-docs/index.html, die Teil des SDK-Pakets ist, das Sie von TeamViewer erhalten.

4) Erstellen Sie das TeamViewerSdk-Objekt:

    teamViewerSdk = TeamViewerSdk.Builder(context) 
        .withToken(SDK_TOKEN) 
        .withAuthenticationCallback(sdkAuthenticationCallback) 
        .withSessionCallback(sdkSessionCallback) 
        .withErrorCallback(sdkErrorCallback) 
        .withOnlineStateCallback(onlineStateCallback) 
        .withMicInitiallyMuted(true) 
        .build() 
} 

Das obige Beispiel zeigt die Erstellung des teamViewerSdk-Objekts unter Verwendung von SDK_TOKEN (verwenden Sie den SDK_TOKEN , der in Schritt 7 des Abschnitts "Generate API Key Section" erstellt wurde)

Bitte besuchen Sie ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html, um weitere Details über diese Builder-Methoden zu erfahren. Die Dokumentation wird Teil des SDK-Pakets sein, das Sie von TeamViewer erhalten.

5) Verbinden Sie sich mit einem Sitzungscode

Das Shared SDK bietet eine Methode zum Aufbau einer Verbindung zu einem Sitzungscode. Dieser Sitzungscode kann von zwei Typen sein:

  • Fernunterstützung oder
  • Assist AR

6) Erstellen Sie Sitzungscodes in Ihrem TeamViewer Client (wählen Sie den Typ Remote Support oder AssistAR je nach gewünschter Sitzung) oder über die TeamViewer REST API.

teamViewerSdk.connectToSessionCode(sessionCode)

Sobald sessionCode online ist, kann eine Verbindung von TeamViewer Client-Seite initiiert werden.

Der Status des Sitzungscodes kann mit OnlineStateCallback überprüft werden

(ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html#withOnlineStateCallback
(com.teamviewer.sdk.screensharing.OnlineStateCallback).

OnlineStateCallback ist nützlich, um über den Online-/Offline-/Verbindungsstatus des SDK informiert zu werden:

private val onlineStateCallback = OnlineStateCallback { onlineState -> 
    val isSdkOnline = OnlineStateCallback.OnlineState.OFFLINE 
    val isSdkOffline = OnlineStateCallback.OnlineState.ONLINE 
    val isSessionCodeConnected = OnlineStateCallback.OnlineState.CONNECTED 
}

ErrorCallback ist nützlich, um Fehlercodes zu behandeln, die vom SDK gesendet werden, wenn der Sitzungscode ungültig, abgelaufen oder geschlossen ist.

(ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html#withErrorCallback
(com.teamviewer.sdk.screensharing.ErrorCallback))
private val sdkErrorCallback = ErrorCallback { errorCode -> 
    val invalid = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_INVALID 
    val expired = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_EXPIRED 
    val closed = errorCode == ErrorCallback.ErrorCode.SESSION_CODE_CLOSED 
}

Reagieren auf eingehende Verbindungen

Das SDK bietet Callback-Methoden, um auf eingehende Verbindungsereignisse zu reagieren.

1) AuthenticationCallback

AuthenticationCallback ist nützlich, um eingehende Verbindungen zu behandeln.

Der Parameter AuthenticationData enthält den Namen des Supporters und eine Callback-Funktion, um die eingehende Verbindung zuzulassen oder abzulehnen.

private val sdkAuthenticationCallback = object : AuthenticationCallback { 
    override fun onAuthentication(data: AuthenticationData?) { 
	//set true to accept call, set false to reject call 
        data?.callback?.onAuthenticationResult(true) 
        Logging.info(TAG, "TeamViewer connected to ${data?.partnerName}") 
    } 
 
    override fun onAuthenticationCanceled() { 
        // Is called when TeamViewer Authentication was cancelled from TeamViewer client/expert side 
    } 
}

Wird die eingehende Verbindung akzeptiert, wird die entsprechende TeamViewer Verbindung aufgebaut.

  • Für die ScreenShare-Verbindung wird dem Benutzer eine Aufforderung zur Mikrofonerlaubnis angezeigt. (Die Abfrage der Mikrofonerlaubnis für ScreenShare-Sitzungen sollte vom App-Entwickler in SessionCallback implementiert werden).
  • Für die Verbindung Assist AR werden die Systemberechtigungen für den Zugriff auf Kamera und Mikrofon angezeigt. Wenn der Benutzer dies zulässt, wird die AR-Sitzung gestartet.
  • Wenn der Kunde/Experte eine Datei an den Server sendet, wird nach Beendigung der Sitzung eine Speichererlaubnis zum Verschieben der Dateien in das Verzeichnis Downloads eingeholt.
  • Es besteht eine bidirektionale VoIP-Kommunikation zwischen dem Benutzer und dem Supporter. Der anfängliche Zustand des Mikrofons ist ungestört, kann aber mit der sdk Builder-Methode withMicInitiallyMuted(boolean muted) geändert werden.

2) SessionCallback

Sobald die Verbindung auf der Seite TeamViewer initiiert wurde, wird das SDK über diesen Verbindungsversuch mittels SessionCallback informiert.

I) AssistARSession(AssistARSession):

Für AssistAR-Sitzungen stellen Sie sicher, dass Sie ->

  • AssistARSessionUI.currentSession = Sitzung in onSessionStarted() einstellen
  • starten Sie die AssistARSessionActivity wie im folgenden Code beschrieben.
  • AssistARSessionUI.currentSession = null in onSessionEnded() einstellen
private val sdkSessionCallback = object : SessionCallback { 
    override fun onSessionStarted(session: TeamViewerSession?) { 
        if (session is AssistARSession) { 
            AssistARSessionUI.currentSession = session 
            val intent = AssistARSessionUI.createIntentForAssistARSessionActivity(context, "StorageFolderName") 
            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK 
            context.startActivity(intent) 
        } 
  	if (session is ScreenSharingSession) { 
//Request microphone permission if you intend to use VOIP with ScreenShare Session 
       } 
    } 
 
    override fun onSessionEnded() { 
        Logging.info(TAG, "TeamViewer Session ended") 
        AssistARSessionUI.currentSession = null 
    } 
} 

Die Übergabe von storageFolderName an die createIntentForAssistARSessionActivity-Methode ist obligatorisch, da dies der Name des Ordners ist, in dem die freigegebenen Dokumente unter dem Ordner Downloads gespeichert werden. Einzelheiten finden Sie unter AssistARSessionUI-docs/-pilot-session-u-i/com.teamviewer.sdk.assistarsessionui/-assist-a-r-session-u-i/create-intent-for-assist-a-r-session-activity.html

II) ScreenSharingSession:

ScreenSharingSession erfordert die Anforderung der Mikrofonerlaubnis in OnSessionStarted(), wenn Sie beabsichtigen, VOIP zu verwenden.

Protokollierung:

Builder-Methode withLogger(Logger callback) setzt einen Logger-Callback, an den alle Log-Ausgaben von TeamViewer Sdk delegiert werden.

Details zu diesem Callback und anderen zusätzlichen Callbacks, die mit dem Sdk Builder verfügbar sind, finden Sie unter ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html.