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.
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 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!
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:
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:
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 }
Das SDK bietet Callback-Methoden, um auf eingehende Verbindungsereignisse zu reagieren.
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.
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 ->
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.