iOS + Transloadit
Crie uploads a partir do iOS usando um Template, o TransloaditKit 3.5.0 e a integração de assinatura no backend autenticado do seu app.
Receita executável
Criar a integração
Este auxiliar em Swift cria uma Assembly a partir de um Template, coloca um arquivo local na fila de upload e consulta periodicamente o status da Assembly. Seu app fornece a integração de assinatura autenticada descrita no guia do TransloaditKit.
- Instale o TransloaditKit exatamente na versão 3.5.0 com o Swift Package Manager ou o CocoaPods. O Swift Package Manager fixa o TUSKit na versão 3.6.0; mantenha as versões resolvidas das dependências junto com seu projeto.
- Crie um Template controlado pelo servidor com as substituições de Step desativadas e exija Signature Authentication. Configure o backend para permitir apenas o fluxo de trabalho pretendido, seguindo o guia de assinatura e uso do TransloaditKit.
- Substitua os placeholders da Auth Key, do Template ID e do caminho do arquivo local e, em seguida, chame createAssembly com o SignatureGenerator síncrono do seu app e handlers para completion e statusChanged.
- Chame createAssembly fora da thread principal, mantenha o cliente da Transloadit retornado durante a operação e despache as atualizações de interface para a fila principal. Trate as falhas em ambos os callbacks.
Upload.swift
// Swift Package Manager:
// .package(url: "https://github.com/transloadit/TransloaditKit", exact: "3.5.0")
// Or CocoaPods: pod 'Transloadit', '3.5.0'
// Pin its dependency too: pod 'TUSKit', '3.6.0'
import Foundation
#if canImport(TransloaditKit)
import TransloaditKit
#else
import Transloadit
#endif
// TransloaditKit 3.5.0. Supply your app’s authenticated signing integration.
// Its backend must authorize params, expiry, processing and destination policy,
// then sign the exact original UTF-8 bytes. Do not reserialize them.
// The signing completion is nonescaping: call it synchronously exactly once
// before the signature generator returns, including denial and timeout.
// Use synchronous transport with a finite timeout, off the main thread.
// The SDK fixes a 24-hour expiry; use backend creation if policy requires less.
// Retain the returned client for the operation’s lifetime.
// Signing guide: https://transloadit.com/docs/sdks/transloaditkit/#user-content-transloaditkit-usage
func createAssembly(
signatureGenerator: @escaping SignatureGenerator,
configuration: URLSessionConfiguration = .default,
completion: @escaping (Result<Assembly, TransloaditError>) -> Void,
statusChanged: @escaping (Result<AssemblyStatus, TransloaditError>) -> Void
) -> Transloadit {
let transloadit = Transloadit(
apiKey: "YOUR_TRANSLOADIT_KEY",
sessionConfiguration: configuration,
signatureGenerator: signatureGenerator
)
// Replace these paths with local file URLs from your app.
let filesToUpload: [URL] = [
URL(fileURLWithPath: "/path/to/file.jpg"),
]
transloadit.createAssembly(templateId: "YOUR_TRANSLOADIT_TEMPLATE_ID", andUpload: filesToUpload, completion: completion)
.pollAssemblyStatus(completion: statusChanged)
return transloadit
}
Autenticação
- Passe a Auth Key pública e o SignatureGenerator autenticado do seu app para o helper. Mantenha o Auth Secret no backend e exija Signature Authentication para o Workspace ou o Template.
- O backend deve autenticar o usuário e autorizar exatamente a Auth Key, o Template, os campos, o processamento, os destinos e a expiração antes de assinar os bytes UTF-8 originais dos params. Rejeite Steps extras e opções desconhecidas; corresponder apenas ao template_id não é suficiente.
- O TransloaditKit 3.5.0 usa uma closure de conclusão de assinatura nonescaping. Chame-a exatamente uma vez antes que o SignatureGenerator retorne, inclusive em casos de negação e de tempo limite esgotado, usando transporte síncrono com um tempo limite finito fora da thread principal.
Limitações e observações operacionais
- O SDK fixa auth.expires em 24 horas, e o callback de assinatura não pode substituir os parâmetros. Se sua política exigir uma expiração mais curta, rejeite a requisição e use a criação de Assemblies no backend.
- Esta função auxiliar cobre um Template e arquivos locais. O TransloaditKit 3.5.0 não permite combinar um Template com substituições de Step nem definir opções arbitrárias de Assembly e de autenticação; use a criação de Assemblies no backend quando esses controles forem necessários.
- O callback de criação significa que a Assembly existe e que os uploads foram agendados; não significa que o upload ou o processamento dos arquivos tenha terminado.
- A contagem de arquivos esperada pelo SDK fica fora dos parâmetros assinados e não é um limite de autorização. Aplique cotas e restrições de arquivos pelo fluxo de trabalho controlado pelo servidor; crie a Assembly no backend se o Template não conseguir impor seus requisitos.
- O auxiliar exige o login e o transporte de assinatura do seu app. Agendamento em segundo plano, retomada, gerenciamento do ciclo de vida e acesso a arquivos precisam de integração e testes nos seus dispositivos-alvo.
Mais integrações