
Xodera Plugins · Bubble Native
Xodera Audio Recorder Native
Permita que as pessoas gravem uma nota de voz, escutem antes de enviar e mantenham um rascunho local. Faça upload somente quando escolherem enviar a gravação.
Public beta guides · Haptics instructions are in its Bubble listing
Public beta offer: free Bubble install · 7-day card trial, then US$1.50/month per plugin/project.
Documentação revisada 6 novembro 2026
Exemplos práticos
Ouça antes de enviar uma mensagem de voz não confidencial
Os usuários precisam de uma oportunidade para ouvir e substituir uma gravação antes que ela se torne um anexo.
`title = the app’s conversation label`; defina `max_duration_seconds` e `max_upload_bytes` na sua política de mensagens.
Start recording → Stop recording → aguarde `recording_ready` → Play preview. Ofereça Seek preview e Set preview speed. Apenas um Enviar explícito invoca Upload to Bubble no endpoint de upload aceito pelo próprio aplicativo.
Somente em `upload_succeeded`, crie seu Message e defina seu campo de áudio para `uploaded_file`. A mensagem não é criada pelo gravador em si.
Em caso de negação do microfone, mostre `permission_status`; em falha de upload, mantenha a gravação local. Verifique o resultado de um upload desconhecido antes de tentar novamente para que Enviar não possa criar anexos/mensagens duplicados.
O upload Bubble cria um arquivo de áudio público. Não use esse upload para gravações confidenciais.
Prática de pronúncia sem upload imediato
Os aprendizes desejam comparar sua própria resposta falada com a lição antes de decidir enviá-la.
`title = Current Exercise’s prompt`; `max_duration_seconds = the exercise limit`; uma resposta de exercício permanece um registro de propriedade do aplicativo.
Gravar → Parar → Play preview. Permita que o aprendiz procure, desacelere a pré‑visualização ou cancele e grave outra tentativa. Save locally somente quando ele escolher manter o rascunho.
`duration`, `local_uri`, `mime_type` e `draft_id` descrevem a tentativa. Seu aplicativo decide se permanece local ou é enviado posteriormente através do fluxo de upload escolhido.
Em `preview_error`, preserve o rascunho e mostre `error_code`. Não transforme uma visualização ou rascunho salvo em uma Resposta enviada até que o fluxo de trabalho de submissão do aplicativo seja bem-sucedido.
O upload Bubble cria um arquivo de áudio público. Não use esse upload para gravações confidenciais.
Mantenha um rascunho de voz local e torne Enviar explícito
Um trabalhador de campo pode ser interrompido antes de terminar uma nota e não deve precisar fazer upload apenas para mantê-la.
`saved_draft_id = the draft ID stored by your app for this device and account`; `title = the selected non-sensitive task label`.
Iniciar/Stop recording → Save locally. Armazene o `draft_id` retornado no seu próprio estado de dispositivo/conta. Use Restore local draft para esse mesmo ID, então Play preview antes de decidir se faz upload.
Em `local_saved` ou `local_restored`, inspecione `is_saved_locally`, `local_uri` e `duration`. Delete o rascunho salvo somente após escolha explícita do usuário ou após uma política de retenção confirmada separadamente.
Se a restauração falhar, exiba `error_code` e mantenha o ID para diagnóstico; não registre uma gravação vazia ou diferente como restaurada. Nunca faça upload auto ao reconectar.
O upload Bubble cria um arquivo de áudio público. Não use esse upload para gravações confidenciais.
O que funciona agora
Public beta. Use the documented controls and actions; test supported formats, permissions and device behavior in your own native app. Browser preview does not validate native device output.
Crie o fluxo de trabalho
Use as ações beta disponíveis abaixo e teste o resultado em seus dispositivos-alvo.
Estes exemplos utilizam registros de aplicativo como Lesson, Message e Order. Substitua-os pelos seus próprios tipos de dados e nomes de elementos. Endereços de mídia de exemplo devem ser substituídos pelos seus próprios arquivos.
Adicione o gravador. Defina document_context = Current User's unique id e is_active para indicar se a visualização de gravação está aberta.
Start recording solicita permissão de microfone. Pausar e retomar mantêm a mesma gravação. Stop recording finaliza‑a; aguarde recording_ready antes de oferecer revisão ou upload.
Use os controles de pré‑visualização para ouvir. Save locally mantém um rascunho neste dispositivo; após local_saved, retenha draft_id para Restore local draft.
Explique que o envio cria um arquivo público. Defina bubble_upload_url para o endereço de upload de arquivo correto do seu aplicativo Bubble, seja Development ou Live. Execute Upload to Bubble somente quando o usuário escolher Enviar; em upload_succeeded, salve uploaded_file em seu registro.
Configure uma vez
Crie ou escolha seu projeto de aplicativo Bubble em BestPlugins → Dashboard → Plugins. Escolha Xodera Audio Recorder Native, copie sua chave, então abra Bubble → Plugins → Xodera Audio Recorder Native e cole-a em licensing_api_key. Salve uma vez; depois use as ações abaixo. Cada plugin em cada projeto tem sua própria chave.
Solicite permissão de microfone quando o usuário iniciar a gravação. Escolha como o aplicativo salvará os rascunhos. O upload Bubble armazena um arquivo público, portanto use‑o apenas para áudio adequado ao armazenamento público.
Configure uma vez
- Crie ou escolha seu projeto de aplicativo Bubble em BestPlugins → Dashboard → Plugins.
- Escolha este plugin e copie sua chave de projeto.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Adicione o elemento, escolha os dados do seu aplicativo e construa o fluxo de trabalho abaixo.
- In the dashboard, review and confirm the 7-day card trial for this plugin. It then costs US$1.50/month per app project, including development and production. Cancel before the trial ends to avoid the first charge.
Instalação e assinatura
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
Salve o resultado no seu aplicativo
Após upload_succeeded, defina VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration e mime_type = Recorder's mime_type. draft_id restaura um rascunho neste dispositivo; não é um arquivo de áudio online.
Falha, cancelamento e recuperação
Se o acesso ao microfone for negado, explique como habilitá‑lo nas configurações do dispositivo. Cancel recording descarta a gravação não salva; os rascunhos salvos permanecem. Se um upload for interrompido, mantenha a gravação local e verifique se o arquivo chegou antes de enviá‑lo novamente. Delete saved draft remove apenas o rascunho salvo selecionado.
Capacidades e limites
Gravação máxima padrão: 300 segundos; configurável 1–3600. Limite padrão de upload: 10 MiB; máximo 30 MiB. Tempo limite de upload: 60 segundos, sem tentativa automática. Uploads Bubble são públicos. Apenas seus próprios endereços de upload de arquivo *.bubbleapps.io são suportados; domínios personalizados não são. Rascunhos locais não são armazenamento criptografado.
Configurações, ações e resultados
Use esses nomes em Bubble. Recursos planejados são marcados separadamente.
Configurações beta disponíveis
Configurações do elemento
title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · textEstados
recorder_status · textpermission_status · textis_recording · yes_nois_paused · yes_noduration · numberlocal_uri · textdraft_id · textis_saved_locally · yes_nomime_type · textfile_size · numberwaveform_peaks_json · textpreview_status · textpreview_is_playing · yes_nopreview_current_time · numberupload_status · textupload_progress · numberuploaded_url · textuploaded_file · fileerror_code · textEventos
recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_errorAções e suas entradas
Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speedConfigurações do elemento · 10
titletext · Padrão: ""- Valor de exemplo
Lesson 4 — review - Exemplo de expressão Bubble
Selected Lesson's name - Texto visível do aplicativo; vazio usa a cópia localizada incorporada onde suportado. Sem credenciais.
max_duration_secondsnumber · Padrão: 300- Valor de exemplo
300 - Exemplo de expressão Bubble
Voice Settings' max_seconds - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
max_upload_bytesnumber · Padrão: 10485760- Valor de exemplo
10485760 - Exemplo de expressão Bubble
Voice Settings' max_upload_bytes - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
is_activeyes_no · Padrão: true- Valor de exemplo
yes - Exemplo de expressão Bubble
GuideHost's view_is_active (your yes/no custom state) - Defina sim enquanto esta visualização estiver aberta. Defina não ao sair, para que a reprodução ou o trabalho atual possam parar.
disabledyes_no · Padrão: false- Valor de exemplo
no - Exemplo de expressão Bubble
GuideHost's is_busy (your yes/no custom state) - Desative o elemento enquanto seu aplicativo estiver ocupado ou esta ação estiver indisponível.
ui_text_jsontext · Padrão: ""- Valor de exemplo
{} - Exemplo de expressão Bubble
App Settings' player_labels_json (supported keys only) - JSON opcional com rótulos de botão suportados. Deixe vazio para usar o texto incorporado.
saved_draft_idtext · Padrão: ""- Valor de exemplo
<returned draft_id> - Exemplo de expressão Bubble
Selected VoiceDraft's draft_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
bubble_upload_urltext · Padrão: ""- Valor de exemplo
https://your-app.bubbleapps.io/version-test/fileupload - Exemplo de expressão Bubble
App Settings' selected_bubble_upload_url - Seu próprio endereço de upload de arquivos do aplicativo Bubble: /version-test/fileupload para Development, /fileupload para Live. Esse upload cria arquivos públicos.
languagetext · Padrão: "auto"- Valor de exemplo
uk - Exemplo de expressão Bubble
Current User's preferred_language - Defina language=auto para seguir um idioma de dispositivo ou navegador suportado. Insira um código de idioma suportado para escolhê-lo explicitamente.
document_contexttext · Padrão: ""- Valor de exemplo
<current-user-id> - Exemplo de expressão Bubble
Current User's unique id - Valor estável para esta conta ou registro. Use o mesmo valor ao restaurar seus arquivos ou rascunhos salvos.
Ações e suas entradas · 15
Start recording
Sem parâmetros de ação
Pause recording
Sem parâmetros de ação
Resume recording
Sem parâmetros de ação
Stop recording
Sem parâmetros de ação
Cancel recording
Sem parâmetros de ação
Save locally
Sem parâmetros de ação
Restore local draft
draft_idtext · Padrão: —- Valor de exemplo
<returned draft_id> - Exemplo de expressão Bubble
Selected VoiceDraft's draft_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Delete saved draft
draft_idtext · Padrão: —- Valor de exemplo
<returned draft_id> - Exemplo de expressão Bubble
Selected VoiceDraft's draft_id - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Upload to Bubble
Sem parâmetros de ação
Cancel upload
Sem parâmetros de ação
Play preview
Sem parâmetros de ação
Pause preview
Sem parâmetros de ação
Stop preview
Sem parâmetros de ação
Seek preview
secondsnumber · Padrão: —- Valor de exemplo
12 - Exemplo de expressão Bubble
Selected Comment's seconds - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Set preview speed
ratenumber · Padrão: —- Valor de exemplo
1.5 - Exemplo de expressão Bubble
Preview Speed Dropdown's value - Use o valor do registro comercial atual; valide-o contra os limites abaixo.
Estados e eventos
Estados
recorder_status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
permission_status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
is_recording · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
is_paused · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
duration · numberValor atual do item selecionado. Leia-o após o evento relacionado.
local_uri · textLocalização do arquivo neste dispositivo. Salve ou faça upload do arquivo separadamente se precisar mantê‑lo online.
draft_id · textIdentificador para este item ou ação. Mantenha-o com o registro de aplicativo correspondente. Use o mesmo identificador de solicitação ao tentar novamente um resultado incerto.
is_saved_locally · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
mime_type · textValor atual do item selecionado. Leia-o após o evento relacionado.
file_size · numberValor atual do item selecionado. Leia-o após o evento relacionado.
waveform_peaks_json · textValor atual do item selecionado. Leia-o após o evento relacionado.
preview_status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
preview_is_playing · yes_noValor atual do item selecionado. Leia-o após o evento relacionado.
preview_current_time · numberValor atual do item selecionado. Leia-o após o evento relacionado.
upload_status · textResultado atual desta ação. Use o evento de conclusão correspondente antes de salvar o sucesso.
upload_progress · numberValor atual do item selecionado. Leia-o após o evento relacionado.
uploaded_url · textValor atual do item selecionado. Leia-o após o evento relacionado.
uploaded_file · fileArquivo retornado após upload_succeeded. Salve-o no campo de Arquivo Bubble.
error_code · textInformações de erro da última ação. Exiba uma mensagem útil e ofereça a tentativa de novo relevante.
Eventos
recording_startedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recording_pausedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recording_resumedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recording_stoppedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recording_readyQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recording_cancelledQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
recorder_errorQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
local_savedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
local_restoredQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
local_deletedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_succeededQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_failedQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
upload_cancelledQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
preview_readyQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
preview_errorQuando este evento ocorrer, leia os estados relacionados do mesmo elemento.
Perguntas que os desenvolvedores fazem
O salvamento local faz o upload da gravação?
Não. Save locally mantém um rascunho de dispositivo próprio. Upload to Bubble é uma operação pública explícita separada.
Como funciona a assinatura?
For Audio Player, Video Player, Photo Editor, Audio Recorder, Files Kit and Haptics: free Bubble installation, a 7-day trial with a card, then US$1.50 per month per plugin and app project. Development and production are included, with no operation cap. File-size and feature limits still apply. Review billing and cancellation before confirming. Other plugins remain unavailable for purchase.
Guias relacionados
Para obter ajuda, informe qual plugin e dispositivo você usa, a ação que tentou e o que aconteceu. Use um exemplo sem dados pessoais. Nunca compartilhe sua chave ou arquivos privados.