Transloadit
Preços
  • Uploads de arquivos
  • Importação de arquivos
  • Processamento em lote (English)
  • Codificação de vídeo
  • Codificação de áudio
  • Processamento de imagens
  • Processamento de documentos
  • Inteligência artificial
  • Filtragem de arquivos e segurança
  • Catalogação de mídia
  • Compressão de arquivos
  • Avaliação de código
  • Exportação de arquivos
  • Smart CDN
  • Ver todos os serviços
  • Explore integrações (English)
  • Explore demos ao vivo (English)
  • Uppy
  • TransloaditKit
  • Android SDK
  • Node.js SDK
  • Python SDK
  • Ruby SDK
  • Go SDK
  • Java SDK
  • PHP SDK
  • Zapier
  • MCP Server
  • Transloadit CLI (English)
  • Terraform
  • Essenciais
  • Boas práticas
  • Perguntas frequentes (English)
  • Robots
  • API
  • Formatos (English)
  • Crie seu primeiro app
  • Sobre (English)
  • Comparações (English)
  • Código aberto (English)
  • Depoimentos (English)
  • Vagas (English)
  • Segurança (English)
  • Publicações (English)
  • Notícias para devs (English)
  • Dicas para devs (English)
  • Imprensa (English)
  • Pesquisa (English)
  • Estudos de caso (English)
  • Soluções (English)
  • Guias (English)
  • Glossário (English)
  • Jurídico (English)
  • Ferramentas (English)
  • Ajudando a Coursera a levar educação a milhões de pessoas no mundo todo (English)
  • Suporte da Transloadit
  • Suporte a código aberto (English)
  • Acordo de nível de serviço (English)
EssenciaisRobotsPerguntas frequentesEN (English)APIFormatosEN (English)Boas práticas
Primeiros passos
  • Visão geral
  • Meu primeiro app
  • Salvando arquivos de resultado
Tópicos
  • Assembly Instructions
  • Assembly Variables
  • Avaliação dinâmica
  • Templates
  • Webhooks
  • Credenciais de terceiros
  • Builtin Templates
  • Estratégias de redimensionamento
  • Assembly Execution Progress
  • Workspaces
  • Agentes de IA
  • Parâmetro use avançado
  • O parâmetro ignore_errors
Kits de desenvolvimento de software
  • Visão geral
  • SDK para Android
  • Navegadores
  • Convex
  • cURL
  • SDK para Go
  • SDK para Java
  • Servidor MCP
  • Formulário multipart
  • SDK para Node.js
  • SDK para PHP
  • SDK para Python
  • SDK para Ruby
  • Terraform
  • TransloaditKit
  • Integração com o Zapier
Migração
  • Migrate from Cloudinary to TransloaditEN (English)
  • Migrate from Uploadcare to TransloaditEN (English)
  • Migrate from Mux to TransloaditEN (English)
  • Migrate from Filestack to TransloaditEN (English)

SDK para Android

transloadit/android-sdk⁠

Instalar

Este guia usa o SDK para Android 0.2.0 com o SDK para Java 2.2.4. O pacote Android é um AAR, disponível no Maven Central⁠. O POM publicado omite as dependências do pacote. Adicione o SDK para Java explicitamente e inclua as dependências do Android do build da tag⁠ ao integrar as APIs de listener e persistência do Android. Verifique esse conjunto de dependências no seu app.

Gradle:

implementation 'com.transloadit.android.sdk:transloadit-android:0.2.0'
implementation 'com.transloadit.sdk:transloadit:2.2.4'

Maven:

<dependency>
  <groupId>com.transloadit.android.sdk</groupId>
  <artifactId>transloadit-android</artifactId>
  <version>0.2.0</version>
  <type>aar</type>
</dependency>
<dependency>
  <groupId>com.transloadit.sdk</groupId>
  <artifactId>transloadit</artifactId>
  <version>2.2.4</version>
</dependency>

Uso

Todas as interações com o SDK começam com a classe com.transloadit.android.sdk.AndroidTransloadit.

Métodos de autenticação

Mantenha o Auth Secret no seu backend, inclusive em apps distribuídos internamente. O conteúdo do APK e a configuração baixada não podem mantê-lo confidencial. Exija Signature Authentication para o Workspace ou Template usado pelo app. A Auth Key pode ser fornecida ao app; o Auth Secret nunca deve ser fornecido a ele.

O construtor com chave e segredo não é adequado para um cliente Android. Aplicações de servidor confiáveis podem usar o SDK para Java com credenciais mantidas no servidor.

Signature Authentication no backend

O SDK chama SignatureProvider.generateSignature de forma síncrona, usando exatamente o params serializado que enviará. Com o construtor usado abaixo, ele adiciona auth, um novo nonce e uma expiração em cinco minutos. Seu backend deve validar essa expiração com base no próprio relógio. Não faça o parsing e a serialização da string novamente antes de assinar, nem reutilize uma assinatura para parâmetros diferentes.

Antes de usar o código auxiliar abaixo, implemente sua interface SigningBackend usando o cliente HTTPS autenticado do seu app. Essa interface é um ponto de integração da aplicação, não um serviço do SDK. Envie o paramsJson sem alterações ao seu próprio backend e inclua o token de sessão do usuário atual no cabeçalho Authorization da requisição. Use um endpoint fixo e confiável, rejeite redirecionamentos, limite o tempo de espera da requisição e lance uma exceção em caso de erros de transporte ou de qualquer resposta HTTP sem sucesso. Retorne a string de parâmetros aprovada pelo backend e a assinatura como SignedParams; nunca retorne o Auth Secret.

O backend deve autenticar a sessão e autorizar o upload desse usuário antes de assinar. Permita apenas a Auth Key esperada, um nonce novo, a expiração e exatamente o Step de redimensionamento abaixo; rejeite Steps adicionais, Templates arbitrários, campos ou destinos. Aplique seus limites de upload e sua política de cotas no servidor. Para um Template controlado pelo servidor, desative allow_steps_override e permita apenas esse Template. Estar autenticado não dá permissão para assinar JSON arbitrário. Assine os bytes UTF-8 originais aprovados com HMAC-SHA384 e retorne um prefixo sha384: seguido dos 96 dígitos hexadecimais.

Criar uma Assembly

Salve este código auxiliar completo como MobileImageUpload.java. Ele vincula cada assinatura retornada aos parâmetros exatos do SDK e rejeita sessões ausentes, parâmetros divergentes e assinaturas malformadas. O backend continua responsável pela autorização; essas verificações no cliente não podem substituí-la.

import com.transloadit.android.sdk.AndroidTransloadit;
import com.transloadit.sdk.Assembly;
import com.transloadit.sdk.SignatureProvider;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

public final class MobileImageUpload {
  private MobileImageUpload() {}

  public static final class SignedParams {
    public final String params;
    public final String signature;

    public SignedParams(String params, String signature) {
      this.params = params;
      this.signature = signature;
    }
  }

  @FunctionalInterface
  public interface SigningBackend {
    SignedParams approve(String paramsJson, String userSessionToken) throws Exception;
  }

  public static AndroidTransloadit createClient(
      String authKey, String userSessionToken, SigningBackend backend) {
    Objects.requireNonNull(backend, "A signing backend is required");
    if (userSessionToken == null || userSessionToken.trim().isEmpty()) {
      throw new IllegalArgumentException("An authenticated user session is required");
    }
    SignatureProvider signatures = paramsJson -> {
      SignedParams approved = backend.approve(paramsJson, userSessionToken);
      if (approved == null || !paramsJson.equals(approved.params)
          || approved.signature == null
          || !approved.signature.matches("sha384:[0-9a-f]{96}")) {
        throw new IllegalStateException("Signing was not approved for these parameters");
      }
      return approved.signature;
    };
    return new AndroidTransloadit(authKey, signatures);
  }

  public static void addImage(Assembly assembly, File image) {
    assembly.addFile(image, "image");
    Map<String, Object> stepOptions = new HashMap<>();
    stepOptions.put("width", 75);
    stepOptions.put("height", 75);
    stepOptions.put("resize_strategy", "pad");
    assembly.addStep("resize", "/image/resize", stepOptions);
  }
}

Passe sua Auth Key, o token de sessão do usuário atual e a implementação do backend para MobileImageUpload.createClient. O token autentica a requisição ao seu próprio backend; ele não é um Auth Secret da Transloadit nem um token da API da Transloadit. Renove uma sessão expirada antes de criar um novo cliente. O próprio SDK constrói auth, então o callback de assinatura não pode adicionar auth.max_size ou auth.max_number_of_files. Se sua política exigir esses limites, aplique-os em um Template controlado pelo servidor ou crie a Assembly no backend. O número de arquivos adicionados localmente não é um limite de autorização no servidor.

Crie um AndroidAssembly com client.newAssembly(listener, context), passe-o junto com uma imagem local que possa ser lida para MobileImageUpload.addImage e chame assembly.saveAsync(). Forneça um AndroidAssemblyListener que implemente onUploadProgress, onUploadFinished, onAssemblyFinished, onUploadFailed e onAssemblyStatusUpdateFailed. A conclusão do upload é distinta da conclusão do processamento. Verifique status() e hasError() na resposta retornada, além de tratar exceções; erros da API nem sempre geram exceções.

A assinatura é realizada de forma síncrona na thread que faz a chamada. saveAsync() executa o envio da Assembly no executor do SDK, mas chamadas síncronas diretas ao SDK devem ser executadas fora da thread da UI. Por padrão, os callbacks do listener usam a thread principal em 0.2.0. Mantenha a Assembly e o listener em um componente adequado responsável pelo ciclo de vida, evite manter uma referência a uma Activity destruída e gerencie o cancelamento e o trabalho em segundo plano no seu app. Este código auxiliar não oferece agendamento com o WorkManager nem implementa a retomada de uploads após o encerramento do processo. É necessário testar o comportamento relacionado ao dispositivo e ao ciclo de vida no seu app Android.

Exemplo

Os exemplos da tag⁠ ilustram a integração com o Android. Aplique os requisitos de assinatura no backend descritos acima a qualquer exemplo que você adaptar; não copie segredos incluídos no app em exemplos antigos.

Documentação

Consulte o Javadoc da versão 0.2.0⁠ para ver a documentação completa da API.

Página anterior ← Visão geralPróxima página Navegadores →
Falar com o suporte⁠

TransloaditVerificando status…

Produto

  • Serviços
  • Preços
  • Demonstrações EN (English)
  • Ferramentas EN (English)
  • Segurança EN (English)
  • Suporte

Empresa

  • Sobre EN (English)/Imprensa EN (English)
  • Blog EN (English)/Vagas EN (English)
  • Comparações EN (English)/Matriz de conformidade EN (English)
  • Pesquisa EN (English)
  • Código aberto EN (English)
  • Soluções EN (English)

Documentação

  • Primeiros passos
  • Transcodificação
  • Perguntas frequentes EN (English)
  • API
  • Guias EN (English)/Dicas para devs EN (English)
  • Formatos suportados EN (English)

Mais

  • Status da plataforma⁠
  • Fórum da comunidade⁠
  • StackOverflow⁠
  • Uppy EN (English)
  • tus⁠

© 2009–2026 Transloadit-II GmbH

Privacidade EN (English)Termos EN (English)Aviso legal EN (English)
EnglishDeutschEspañolPortuguês (Brasil)