Con el Kit de Desarrollo de Software (SDK) de TeamViewer puedes utilizar todas las funciones de Assist AR y ofrecer la mejor experiencia de asistencia remota AR a tus clientes mediante la incorporación de funciones de asistencia remota AR en tus propias aplicaciones móviles.

El SDK te permite tener conexiones seguras y conformes con la GDPR a los dispositivos de tus clientes.

Este artículo se aplica a tod@s l@s usuari@s de TeamViewer Assist AR .

Requisitos previos

  • Android 5.0 y superior
  • Una cuenta existente en TeamViewer

Si no tienes una cuenta en TeamViewer, sigue los pasos a continuación para crear una:

  1. Vete a https://login.teamviewer.com/y haz clic en Registrarse.
  2. Completa los pasos para crear una cuenta y valida tu dirección de correo electrónico a través de un mensaje que se te enviara a tu bandeja de correos recibidos.

Generar una clave API

1. Vete a https://login.teamviewer.com/ e inicia sesión con tu cuenta de TeamViewer.

2. En la parte inferior de la página, haz clic en Aplicaciones.

3. Haz clic en el botón Crear aplicación.

4. Activa el Token SDK móvil, introduce un nombre y (opcional) añade una breve descripción.

5. Activa Android.

6. Haz clic en Crear.

Tu token se muestra al abrir la aplicación creada:

Copia este token en tu portapapeles y pégalo en un lugar seguro.

🚨IMPORTANTE: ¡No compartas este token con nadie!

Obtén el SDK de TeamViewer para móviles.

El SDK está disponible para los clientes con una licencia de Assist AR Professional y es distribuido por el equipo de soporte de TeamViewer.

Integra tu TeamViewer Mobile SDK

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. Crea una carpeta libs bajo el directorio de tu aplicación y copia 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 revisa AssistARSessionUI-docs/index.html que será parte del paquete SDK que recibirás de TeamViewer.

4. Construye 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 (utiliza el SDK_TOKEN creado anteriormente en el paso 7 de la sección "Generar la clave de la API")

Por favor, visita 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. Conectate 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) Crea códigos de sesión en tu client TeamViewer (selecciona el tipo de soporte remoto o AssistAR en función de la sesión que desees) o a través de la API REST de TeamViewer.

teamViewerSdk.connectToSessionCode(sessionCode)

Una vez que el sessionCode este en línea, se puede iniciar una conexión desde el lado del Client de 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 esperto. 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úrate 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, consulta: 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 visita ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html.