Com TeamViewer Software Development Kit (SDK) você pode utilizar a funcionalidade completa Assist AR e fornecer a melhor experiência de suporte remoto AR a seus clientes, incorporando as capacidades de assistência remota AR em seus próprios aplicativos móveis.

O SDK permite que você tenha conexões seguras e compatíveis com a GDPR com os dispositivos de seu cliente.

Este artigo se aplica a todos os usuários do TeamViewer Assist AR

Pré-requisitos

  • Android 5.0 e superior
  • Uma conta TeamViewer existente

Se você não tiver uma conta TeamViewer, siga os passos abaixo para criar uma:

  1. Abra o Management Console e Clique no Inscreva-se.
  2. Complete os passos para criar uma conta TeamViewer e valide seu endereço de e-mail.

Gerar uma chave API

1. Vá para https://login.teamviewer.com/ e entre usando sua conta TeamViewer.

2. Na parte inferior da página, clique em Apps.

3. Clique no botão Criar aplicativo.

4. Ativar o Token SDK móvel, digitar um nome e (opcional) adicionar uma breve descrição.

5. Ativar o Android.

6. Clique em Criar.

Sua ficha é exibida ao abrir o aplicativo criado:

Copie esta ficha em sua prancheta e cole-a em um lugar seguro.

🚨IMPORTANTE: Não compartilhe este símbolo com ninguém!

Adquira o TeamViewer Mobile SDK

O SDK está disponível para os clientes with an Assist AR Professional licença e é distribuído pela equipe de suporte TeamViewer.

Integre seu TeamViewer Mobile SDK

1. TeamViewer O SDK móvel para Android contém os arquivos abaixo:

  • TeamViewerSdk.aar (TeamViewer Mobile SDK)
  • AssistARSessionUI.aar (somente necessário se você quiser estabelecer a Sessão AssistAR usando o SDK)
  • ScreenSharingSdk-docs (Documentação TeamViewerSdk)
  • AssistARSessionUI-docs (Documentação AssistARSessionUI)
  • O aplicativo demo está disponível em https://github.com/teamviewer/TravelApp/

2. Crie uma pasta libs sob seu diretório de aplicativos e copie os arquivos *.aar lá.

📌Lembrete:  The SDK suporta as seguintes arquiteturas: armeabi-v7a, arm64-v8a, x86, x86_64.

3. Habilite ViewBinding e adicione as seguintes dependências ao build.gradle do seu aplicativo:

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 obter uma lista atualizada de dependências, verifique AssistARSessionUI-docs/index.html que fará parte do pacote SDK que você recebe de TeamViewer.

4. Construir o objeto TeamViewerSdk:

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

O exemplo acima mostra o objeto TeamViewerSdk de criação usando SDK_TOKEN (use SDK_TOKEN criado acima no passo 7 da "Generate API Key Section")

Por favor, visite ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html para saber mais detalhes sobre estes métodos de construção. A documentação será parte do pacote SDK que você recebe de TeamViewer.

5. Conectar a um código de sessão

O SDK compartilhado fornece um método para estabelecer uma conexão com um código de sessão. Este código de sessão pode ser de dois tipos:

  • Suporte remoto ou
  • Assist AR

6. Crie códigos de sessão em seu cliente TeamViewer (selecione o tipo Suporte Remoto ou AssistAR com base na sessão desejada) ou através do TeamViewer REST API.

teamViewerSdk.connectToSessionCode(sessionCode)

Uma vez que a sessionCode esteja online, uma conexão pode ser iniciada do lado do cliente TeamViewer.

O estado do código de sessão pode ser verificado usando OnlineStateCallback

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

OnlineStateCallback é útil para ser notificado sobre o SDK online/offline/connected state:

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

ErrorCallback é útil para lidar com códigos de erro enviados pelo SDK no caso do código de sessão ser inválido, expirado ou fechado.

( 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 
}

 

Reagindo às conexões de entrada

O SDK fornece métodos de retorno de chamada para reagir a eventos de conexão de entrada.

1. AutenticaçãoCallback

A AutenticaçãoCallback é útil para lidar com conexões de entrada.

O parâmetroAuthenticationData contém o nome do apoiador e uma função de retorno de chamada para permitir ou rejeitar a conexão de entrada.

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 
    } 
}

Se a conexão de entrada for aceita, a conexão TeamViewer correspondente é estabelecida.

  • Para a conexão ScreenShare, uma solicitação de permissão de microfone é mostrada ao usuário. (Pedir permissão de microfone para a sessão ScreenShare deve ser implementado pelo Desenvolvedor do aplicativo em SessionCallback).
  • Para a conexão Assist AR, são mostradas as permissões do sistema para acesso de câmera e microfone. Se o usuário permitir isto, a sessão de AR é iniciada.
  • Se o cliente/expert envia o arquivo para o servidor, é solicitada permissão de armazenamento para mover os arquivos para o diretório Downloads após o final da sessão .
  • Há comunicação VoIP bidirecional entre o usuário e o apoiador. O estado inicial do microfone não é alterado, mas isto pode ser mudado usando o método sdk Builder withMicInitiallyMuted​(boolean muted).

2. Sessão de retorno

Uma vez iniciada a conexão no lado TeamViewer, o SDK é notificado sobre esta tentativa de conexão via SessionCallback.

A) AssistARSessão(AssistARSessão):

Para as sessões do AssistAR, certifique-se de:

  • o conjunto AssistARSessionUI.currentSession = sessão em onSessionStarted()
  • lançar AssistARSessionActivity como mencionado no código abaixo.
  • o conjunto AssistARSessionUI.currentSession = null in 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 
    } 
} 

Passar o armazenamentoFolderName para o método createIntentForAssistARSessionActivity aqui é obrigatório, pois este é o nome da pasta onde os documentos compartilhados serão armazenados sob a pasta Downloads. Para mais detalhes, 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

B) ScreenSharingSession:

ScreenSharingSession requer a solicitação da permissão do microfone em OnSessionStarted() se você pretende usar VOIP.

Logging:

O método Builder withLogger(Logger callback) define um Logger callback ao qual toda a saída de log do TeamViewer Sdk é delegada.

Para verificar os detalhes desta callback e outras callbacks adicionais disponíveis com o construtor ScreenSharingSdk-docs/com/teamviewer/sdk/screensharing/TeamViewerSdk.Builder.html.