General
Este artículo se aplica a todos los usuarios de TeamViewer Assist AR .
Con el kit de desarrollo de software (SDK) de TeamViewer puede utilizar la funcionalidad completa de Assist AR y proporcionar la mejor experiencia de asistencia remota de RA a sus clientes, incorporando las capacidades de asistencia remota de RA dentro de sus propias aplicaciones móviles.
El SDK le permite tener conexiones seguras y que cumplan con la GDPR con los dispositivos de sus clientes.
Requisitos previos
- Android 5.0 y superior
- Una cuenta existente en TeamViewer
Si no tienes una cuenta en TeamViewer, sigue los siguientes pasos para crear una:
- Vaya ahttps://login.teamviewer.com/y haga clic enRegistrarse.
- Complete los pasos para crear una cuenta y validar su dirección de correo electrónico.
Generar una clave API
1) Vaya a https://login.teamviewer.com/ e inicie sesión con su cuenta de TeamViewer.
2) En la parte inferior de la página, haga clic en Aplicaciones.
3) Haga clic en el botón Crear aplicación.
4) Activar el Token SDK móvil, introducir un nombre y (opcional) añadir una breve descripción.
5) Activar Android.
6) Haga clic en Crear.
Tu token se muestra al abrir la aplicación creada:
Copie este token en su portapapeles y péguelo en un lugar seguro.
⚠ IMPORTANTE: ¡No comparta esta ficha con nadie!
Obtenga el SDK para móviles de TeamViewer
El SDK está disponible para los clientes con una licencia de Assist AR Professional y es distribuido por el equipo de soporte de TeamViewer.
Integre su SDK móvil en TeamViewer
1) TeamViewer Mobile SDK para Android contiene los siguientes archivos:
- TeamViewerSdk.aar (TeamViewer Mobile SDK)
- AssistARSessionUI.aar (sólo se necesita si se quiere establecer una sesión de AssistAR mediante el SDK)
- ScreenSharingSdk-docs (documentación de TeamViewerSdk)
- AssistARSessionUI-docs (documentación de AssistARSessionUI)
- La aplicación de demostración está disponible en https://github.com/teamviewer/TravelApp/
2) Cree una carpeta libs bajo el directorio de su aplicación y copie allí los archivos *.aar.
📌Nota:El SDK es compatible con las siguientes arquitecturas: armeabi-v7a, arm64-v8a, x86, x86_64.
3) Activa ViewBinding y añade las siguientes dependencias al build.gradle de tu aplicación:
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"
}
Para obtener una lista actualizada de las dependencias, por favor revise AssistARSessionUI-docs/index.html que será parte del paquete SDK que recibirá de TeamViewer.
4) Construya el objeto TeamViewerSdk:
teamViewerSdk = TeamViewerSdk.Builder(context)
.withToken(SDK_TOKEN)
.withAuthenticationCallback(sdkAuthenticationCallback)
.withSessionCallback(sdkSessionCallback)
.withErrorCallback(sdkErrorCallback)
.withOnlineStateCallback(onlineStateCallback)
.withMicInitiallyMuted(true)
.build()
}
El ejemplo anterior muestra la creación del objeto teamViewerSdk utilizando el SDK_TOKEN (utilice el SDK_TOKEN creado anteriormente en el paso 7 de la sección "Generar la clave de la API")
Por favor, visite ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html para conocer más detalles sobre estos métodos de construcción. La documentación formará parte del paquete del SDK que recibirá de TeamViewer.
5) Conectar con un código de sesión
El SDK compartido proporciona un método para establecer una conexión con un código de sesión. Este código de sesión puede ser de dos tipos:
- Soporte remoto o
- Assist AR
6) Cree códigos de sesión en su cliente TeamViewer (seleccione el tipo de soporte remoto o AssistAR en función de la sesión que desee) o a través de la API REST de TeamViewer.
teamViewerSdk.connectToSessionCode(sessionCode)
Una vez que sessionCode está en línea, se puede iniciar una conexión desde el lado del cliente TeamViewer.
El estado del código de la sesión puede comprobarse mediante OnlineStateCallback (ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html#withOnlineStateCallback(com.teamviewer.sdk.screensharing.OnlineStateCallback).
OnlineStateCallback es útil para recibir notificaciones del estado de conexión/desconexión del SDK:
private val onlineStateCallback = OnlineStateCallback { onlineState ->
val isSdkOnline = OnlineStateCallback.OnlineState.OFFLINE
val isSdkOffline = OnlineStateCallback.OnlineState.ONLINE
val isSessionCodeConnected = OnlineStateCallback.OnlineState.CONNECTED
}
ErrorCallback es útil para manejar los códigos de error enviados por el SDK en caso de que el código de sesión no sea válido, haya expirado o se haya cerrado. ( 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
}
Reacción a las conexiones entrantes
El SDK proporciona métodos de devolución de llamadas para reaccionar a los eventos de conexión entrantes.
1) AuthenticationCallback
AuthenticationCallback es útil para manejar las conexiones entrantes.
El parámetro AuthenticationData contiene el nombre del colaborador y una función de devolución de llamada para permitir o rechazar la conexión entrante.
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
}
}
Si se acepta la conexión entrante, se establece la correspondiente conexión TeamViewer.
- Para la conexión ScreenShare, se muestra al usuario una solicitud de permiso para el micrófono. (La solicitud de permiso de micrófono para la sesión ScreenShare debe ser implementada por el desarrollador de la aplicación en SessionCallback).
- Para la conexión Assist AR, se muestran los permisos del sistema para el acceso a la cámara y al micrófono. Si el usuario lo permite, se inicia la sesión de RA.
- Si el cliente/experto envía un archivo al servidor, se pide permiso de almacenamiento para mover los archivos al directorio de descargas después de la finalización de la sesión.
- Existe una comunicación VoIP bidireccional entre el usuario y el soporte. El estado inicial del micrófono es sin silenciar, pero esto se puede cambiar utilizando el método del sdk Builder withMicInitiallyMuted(boolean muted).
2) SessionCallback
Una vez iniciada la conexión en el lado TeamViewer, el SDK recibe una notificación sobre este intento de conexión a través de SessionCallback.
I) AssistARSession(AssistARSession):
Para las sesiones de AssistAR asegúrese de ->
- Set AssistARSessionUI.currentSession = session en onSessionStarted()
- lanzar AssistARSessionActivity como se menciona en el siguiente código.
- Set AssistARSessionUI.currentSession = null en onSessionEnded()
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
}
}
Pasar storageFolderName al método createIntentForAssistARSessionActivity aquí es obligatorio, ya que es el nombre de la carpeta donde se almacenarán los documentos compartidos bajo la carpeta Downloads. Para más detalles, consulte 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 requiere solicitar el permiso del micrófono en OnSessionStarted() si se pretende utilizar VOIP.
Registro de datos :
El método constructor withLogger(Logger callback)
establece una llamada de retorno de Logger a la que se delega toda la salida de registro de TeamViewer Sdk.
Para comprobar los detalles de esta devolución de llamada y otras devoluciones de llamada adicionales disponibles con el constructor Sdk por favor visite ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html.