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
Se você não tiver uma conta TeamViewer, siga os passos abaixo para criar uma:
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!
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:
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:
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 }
O SDK fornece métodos de retorno de chamada para reagir a eventos de conexão de entrada.
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.
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:
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.