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 .
Si no tienes una cuenta en TeamViewer, sigue los pasos a continuación para crear una:
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!
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:
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:
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 }
El SDK proporciona métodos de devolución de llamadas para reaccionar a los eventos de conexión entrantes.
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.
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 ->
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.
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.