Interfață Audio Recorder.
Interfață Audio Recorder.
← Toate ghidurile native

Xodera Plugins · Bubble Native

Xodera Audio Recorder Native

Permiteți utilizatorilor să înregistreze o notă vocală, să o asculte înainte de trimitere și să păstreze o ciornă locală. Încărcați numai când aleg să trimită înregistrarea.

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ție revizuită 6 noiembrie 2026

Exemple practice

Ascultați înainte de a trimite un mesaj vocal neconfidențial

Utilizatorii trebuie să aibă posibilitatea să asculte și să înlocuiască o înregistrare înainte să devină un atașament.

`title = the app’s conversation label`; setați `max_duration_seconds` și `max_upload_bytes` la politica dvs. de mesaje.

Start recording → Stop recording → așteptați `recording_ready` → Play preview. Oferiți Seek preview și Set preview speed. Doar un Trimite explicit invocă Upload to Bubble pe endpoint‑ul de încărcare acceptat al aplicației proprii.

Doar pe `upload_succeeded`, creați Message și setați câmpul audio la `uploaded_file`. Mesajul nu este creat de înregistratorul în sine.

La refuzul microfonului afișați `permission_status`; la eșecul încărcării păstrați înregistrarea locală. Verificați rezultatul unei încărcări necunoscute înainte de a reîncerca, astfel încât Trimite să nu poată crea atașamente/mesaje duplicate.

Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.

Exercițiu de pronunție fără încărcare imediată

Învățăceii doresc să compare răspunsul lor vorbit cu lecția înainte de a decide să îl trimită.

`title = Current Exercise’s prompt`; `max_duration_seconds = the exercise limit`; un răspuns la exercițiu rămâne un înregistrare deținută de aplicație.

Înregistrează → Oprește → Play preview. Permiteți învățăcelului să caute, să încetinească previzualizarea sau să anuleze și să înregistreze o altă încercare. Save locally numai când aleg să păstreze ciornă.

`duration`, `local_uri`, `mime_type` și `draft_id` descriu încercarea. Aplicația dvs. decide dacă rămâne locală sau este trimisă ulterior prin fluxul de încărcare ales.

Pe `preview_error`, păstrați ciorna și afișați `error_code`. Nu transformați o previzualizare sau o ciornă salvată într-un Răspuns trimis până când fluxul de trimitere al aplicației reușește.

Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.

Păstrați o ciornă vocală locală și faceți Trimite explicit

Un lucrător de teren poate fi întrerupt înainte de a finaliza o notă și nu ar trebui să fie nevoit să o încarce doar pentru a o păstra.

`saved_draft_id = the draft ID stored by your app for this device and account`; `title = the selected non-sensitive task label`.

Start/Stop recording → Save locally. Stocați `draft_id` returnat în dispozitivul/contul dvs. local. Utilizați Restore local draft pentru același ID, apoi Play preview înainte de a decide dacă încărcați.

Pe `local_saved` sau `local_restored`, inspectați `is_saved_locally`, `local_uri` și `duration`. Ștergeți ciorna salvată numai după o alegere explicită a utilizatorului sau după o politică de păstrare confirmată separat.

Dacă restaurarea eșuează, afișați `error_code` și păstrați ID‑ul pentru diagnostic; nu raportați o înregistrare goală sau diferită ca restaurată. Nu efectuați niciodată încărcarea auto la reconectare.

Încărcarea Bubble creează un fișier audio public. Nu utilizați această încărcare pentru înregistrări confidențiale.

Ce funcționează acum

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.

Construiește fluxul de lucru

Utilizați acțiunile beta disponibile mai jos și testați rezultatul pe dispozitivele țintă.

Aceste exemple folosesc înregistrări de aplicație precum Lesson, Message și Order. Înlocuiți-le cu propriile tipuri de date și nume de elemente. Adresele media de exemplu trebuie înlocuite cu fișierele dumneavoastră.

  1. Adăugați înregistratorul. Setați document_context = Current User's unique id și is_active pentru a indica dacă vizualizarea înregistrării este deschisă.

  2. Start recording solicită permisiunea pentru microfon. Pause și Resume păstrează aceeași înregistrare. Stop recording o finalizează; așteptați recording_ready înainte de a oferi revizuirea sau încărcarea.

  3. Folosiți controalele de previzualizare pentru a asculta. Save locally păstrează o ciornă pe acest dispozitiv; după local_saved, rețineți draft_id pentru Restore local draft.

  4. Explicați că trimiterea creează un fișier public. Setați bubble_upload_url la adresa corectă de încărcare a fișierelor Bubble a aplicației dvs., Development sau Live. Rulați Upload to Bubble numai când utilizatorul alege Trimitere; la upload_succeeded, salvați uploaded_file în înregistrarea dvs.

Diagramă de flux de lucru — nu o captură de ecran a aplicației

Configurează o singură dată

Creați sau alegeți proiectul de aplicație Bubble în BestPlugins → Dashboard → Plugins. Alegeți Xodera Audio Recorder Native, copiați cheia acestuia, apoi deschideți Bubble → Plugins → Xodera Audio Recorder Native și inserați-o în licensing_api_key. Salvați o singură dată; apoi utilizați acțiunile de mai jos. Fiecare plugin din fiecare proiect are propria cheie.

Cereți permisiunea pentru microfon când utilizatorul începe înregistrarea. Alegeți cum va salva aplicația ciornele. Încărcarea Bubble stochează un fișier public, așa că folosiți-l numai pentru audio adecvat stocării publice.

Configurează o singură dată
  1. Creați sau alegeți proiectul de aplicație Bubble la BestPlugins → Dashboard → Plugins.
  2. Selectați acest plugin și copiați cheia proiectului.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Adăugați elementul, alegeți datele aplicației și construiți fluxul de lucru de mai jos.
  5. 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.
Instalare și abonament

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.

Salvează rezultatul în aplicația ta

După upload_succeeded, setați VoiceMessage.audio = Recorder's uploaded_file, owner = Current User, duration = Recorder's duration și mime_type = Recorder's mime_type. draft_id restaurează o ciornă pe acest dispozitiv; nu este un fișier audio online.

Eșec, anulare și recuperare

Dacă accesul la microfon este refuzat, explicați cum să îl activați în setările dispozitivului. Cancel recording elimină înregistrarea nesalvată; ciornele salvate rămân. Dacă o încărcare este întreruptă, păstrați înregistrarea locală și verificați dacă fișierul a sosit înainte de a-l trimite din nou. Delete saved draft elimină numai ciorna salvată selectată.

Capacități și limite

Înregistrare maximă implicită: 300 secunde; configurabil 1–3600. Limită implicită de încărcare: 10 MiB; maxim 30 MiB. Timp limită de încărcare: 60 secunde, fără reîncercare automată. Încărcările Bubble sunt publice. Sunt acceptate doar adresele de încărcare de fișiere *.bubbleapps.io proprii; domeniile personalizate nu sunt suportate. Ciornele locale nu sunt stocare criptată.

Setări, acțiuni și rezultate

Utilizați aceste nume în Bubble. Funcționalitățile planificate sunt marcate separat.

Setări beta disponibile

Setări element

title · textmax_duration_seconds · numbermax_upload_bytes · numberis_active · yes_nodisabled · yes_noui_text_json · textsaved_draft_id · textbubble_upload_url · textlanguage · textdocument_context · text

Stări

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 · text

Evenimente

recording_startedrecording_pausedrecording_resumedrecording_stoppedrecording_readyrecording_cancelledrecorder_errorlocal_savedlocal_restoredlocal_deletedupload_succeededupload_failedupload_cancelledpreview_readypreview_error

Acțiuni și intrările lor

Start recordingPause recordingResume recordingStop recordingCancel recordingSave locallyRestore local draftDelete saved draftUpload to BubbleCancel uploadPlay previewPause previewStop previewSeek previewSet preview speed
Setări element · 10
titletext · Implicit: ""
Valoare exempluLesson 4 — review
Exemplu Bubble expresieSelected Lesson's name
Text vizibil al aplicației; lăsat gol se folosește copia localizată încorporată acolo unde este suportată. Fără acreditări.
max_duration_secondsnumber · Implicit: 300
Valoare exemplu300
Exemplu Bubble expresieVoice Settings' max_seconds
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
max_upload_bytesnumber · Implicit: 10485760
Valoare exemplu10485760
Exemplu Bubble expresieVoice Settings' max_upload_bytes
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
is_activeyes_no · Implicit: true
Valoare exempluyes
Exemplu Bubble expresieGuideHost's view_is_active (your yes/no custom state)
Setați da în timp ce această vizualizare este deschisă. Setați nu la părăsire, pentru ca redarea sau lucrarea curentă să se oprească.
disabledyes_no · Implicit: false
Valoare exempluno
Exemplu Bubble expresieGuideHost's is_busy (your yes/no custom state)
Dezactivați elementul în timp ce aplicația este ocupată sau această acțiune nu este disponibilă.
ui_text_jsontext · Implicit: ""
Valoare exemplu{}
Exemplu Bubble expresieApp Settings' player_labels_json (supported keys only)
JSON opțional cu etichete de buton acceptate. Lăsați gol pentru a utiliza textul încorporat.
saved_draft_idtext · Implicit: ""
Valoare exemplu<returned draft_id>
Exemplu Bubble expresieSelected VoiceDraft's draft_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
bubble_upload_urltext · Implicit: ""
Valoare exempluhttps://your-app.bubbleapps.io/version-test/fileupload
Exemplu Bubble expresieApp Settings' selected_bubble_upload_url
Adresa proprie de încărcare fișiere a aplicației Bubble: /version-test/fileupload pentru Development, /fileupload pentru Live. Această încărcare creează fișiere publice.
languagetext · Implicit: "auto"
Valoare exempluuk
Exemplu Bubble expresieCurrent User's preferred_language
Setați language=auto să urmeze limba unui dispozitiv sau a unui browser acceptat. Introduceți un cod de limbă acceptat pentru a o selecta explicit.
document_contexttext · Implicit: ""
Valoare exemplu<current-user-id>
Exemplu Bubble expresieCurrent User's unique id
Valoare stabilă pentru acest cont sau înregistrare. Folosiți aceeași valoare când restaurați fișierele sau ciornele salvate.
Acțiuni și intrările lor · 15
Start recording

Niciun parametru de acțiune

Pause recording

Niciun parametru de acțiune

Resume recording

Niciun parametru de acțiune

Stop recording

Niciun parametru de acțiune

Cancel recording

Niciun parametru de acțiune

Save locally

Niciun parametru de acțiune

Restore local draft
draft_idtext · Implicit: —
Valoare exemplu<returned draft_id>
Exemplu Bubble expresieSelected VoiceDraft's draft_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Delete saved draft
draft_idtext · Implicit: —
Valoare exemplu<returned draft_id>
Exemplu Bubble expresieSelected VoiceDraft's draft_id
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Upload to Bubble

Niciun parametru de acțiune

Cancel upload

Niciun parametru de acțiune

Play preview

Niciun parametru de acțiune

Pause preview

Niciun parametru de acțiune

Stop preview

Niciun parametru de acțiune

Seek preview
secondsnumber · Implicit: —
Valoare exemplu12
Exemplu Bubble expresieSelected Comment's seconds
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Set preview speed
ratenumber · Implicit: —
Valoare exemplu1.5
Exemplu Bubble expresiePreview Speed Dropdown's value
Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Stări și evenimente

Stări

recorder_status · text

Rezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.

permission_status · text

Rezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.

is_recording · yes_no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

is_paused · yes_no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

duration · number

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

local_uri · text

Locația fișierului pe acest dispozitiv. Salvați sau încărcați fișierul separat dacă trebuie să fie păstrat online.

draft_id · text

Identificator pentru acest element sau acțiune. Păstrați-l împreună cu înregistrarea corespunzătoare a aplicației. Utilizați același identificator de cerere când reîncercați un rezultat incert.

is_saved_locally · yes_no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

mime_type · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

file_size · number

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

waveform_peaks_json · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

preview_status · text

Rezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.

preview_is_playing · yes_no

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

preview_current_time · number

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

upload_status · text

Rezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.

upload_progress · number

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

uploaded_url · text

Valoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.

uploaded_file · file

Fișier returnat după upload_succeeded. Salvați-l în câmpul Fișier Bubble.

error_code · text

Informații despre eroarea ultimei acțiuni. Afișați un mesaj util și oferiți o reîncercare relevantă.

Evenimente

recording_started

Când apare acest eveniment, citiți stările aferente din același element.

recording_paused

Când apare acest eveniment, citiți stările aferente din același element.

recording_resumed

Când apare acest eveniment, citiți stările aferente din același element.

recording_stopped

Când apare acest eveniment, citiți stările aferente din același element.

recording_ready

Când apare acest eveniment, citiți stările aferente din același element.

recording_cancelled

Când apare acest eveniment, citiți stările aferente din același element.

recorder_error

Când apare acest eveniment, citiți stările aferente din același element.

local_saved

Când apare acest eveniment, citiți stările aferente din același element.

local_restored

Când apare acest eveniment, citiți stările aferente din același element.

local_deleted

Când apare acest eveniment, citiți stările aferente din același element.

upload_succeeded

Când apare acest eveniment, citiți stările aferente din același element.

upload_failed

Când apare acest eveniment, citiți stările aferente din același element.

upload_cancelled

Când apare acest eveniment, citiți stările aferente din același element.

preview_ready

Când apare acest eveniment, citiți stările aferente din același element.

preview_error

Când apare acest eveniment, citiți stările aferente din același element.

Întrebări pe care le pun dezvoltatorii

Salvarea locală încarcă înregistrarea?

Nu. Save locally păstrează o ciornă pe dispozitivul deținut. Upload to Bubble este o operație publică separată și explicită.

Cum funcționează abonamentul?

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.

Ghiduri conexe

Pentru ajutor, spuneți-ne ce plugin și dispozitiv utilizați, acțiunea pe care ați încercat-o și ce s-a întâmplat. Folosiți un exemplu fără date personale. Nu divulgați niciodată cheia sau fișierele private.