
Xodera Plugins · Bubble Native
Xodera Offline Files Native
Mantingues les adjuncions de l’informe i els fitxers seleccionats al dispositiu, restaura‑los més tard i permet a l’usuari compartir una còpia seleccionada.
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.
Documentació revisada 6 novembre 2026
Exemples pràctics
Prepara diverses adjuncions locals abans d’enviar un informe
Un formulari ha de mostrar quins fitxers s’han seleccionat i permetre a l’usuari conservar una còpia gestionada abans de qualsevol enviament al núvol.
`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; defineix `max_files`, `max_file_bytes` i un `document_context` de compte/informe.
Pick files → inspecciona els noms/mides seleccionats → Save selection locally. El teu formulari conserva els ID de fitxer resultants fins que el flux de treball separat d’Enviament carregui els fitxers aprovats.
Utilitzeu `selection_count`, `file_names`, `file_sizes` i `saved_file_ids` per renderitzar la llista de revisió. Una còpia gestionada desada conserva l’original del cridador.
Un selector cancel·lat no és un informe enviat. A `files_error`, conserveu els ID locals ja acceptats i mostreu `error_code`; mai creeu un adjunt al núvol només a partir d’un URI local.
Els fitxers romanen en aquest dispositiu fins que es comparteixin o es carreguin per separat.
Conserveu la sortida d’un editor de fotos o d’un gravador per a un ús posterior.
Un fitxer local generat pot estar en una ubicació temporal; l’aplicació necessita una còpia gestionada explícita.
`source_uri = the local output of a separately accepted editor/recorder`; enllaça el seu real `display_name` i `mime_type`; utilitza el `document_context` del mateix propietari.
Load local source → inspecciona les metadades → Save selection locally. Emmagatzemeu l’ID de fitxer retornat només al dispositiu/context corresponent, i després Restore saved file amb aquest ID exacte quan calgui.
Consumeu `file_id`, `local_uri`, `size_bytes` i `is_saved_locally`; utilitzeu `file_restored` per distingir una restauració completada d’una simple sol·licitud.
Rebutgeu una URL HTTP remota com a font local. Si la font desapareix o la restauració falla, mostreu `error_code` i conserveu el registre original de l’aplicació per a la recuperació.
Els fitxers romanen en aquest dispositiu fins que es comparteixin o es carreguin per separat.
Permeteu que un usuari comparteixi un rebut local generat per l’aplicació o una exportació.
L’aplicació hauria de passar un fitxer local seleccionat a la fulla de compartició del dispositiu en lloc d’inventar una URL pública.
`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; el seu nom i MIME descriuen el fitxer local real.
List saved files → Restore saved file → Share selected file després que l’usuari premi Compartir. Mantingueu la còpia desada fins que triï explícitament Delete saved copy.
Utilitzeu `share_status` i `share_sheet_closed` per actualitzar la interfície després que la fulla es tanqui. Conserveu l’ID del fitxer per a una altra compartició deliberada.
Una fulla de compartició tancada no és prova que un correu electrònic/missatge s’hagi entregat. Gestioneu la cancel·lació i `files_error` sense informar d’èxit al destinatari.
Els fitxers romanen en aquest dispositiu fins que es comparteixin o es carreguin per separat.
Què funciona ara
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.
Crea el flux de treball
Utilitzeu les accions beta disponibles a continuació i proveu el resultat en els vostres dispositius de destinació.
Aquests exemples utilitzen registres d'aplicació com Lesson, Message i Order. Substituïu-los amb els vostres propis tipus de dades i noms d'elements. Les adreces multimèdia d'exemple s'han de substituir per els vostres propis fitxers.
Defineix document_context = Current User's unique id, o un valor estable per al compte i informe. Tria accepted_mime_types_json, max_files i max_file_bytes.
Executa Pick files, o utilitza Load local source per a un fitxer llegible generat per l’Editor de fotos o el Gravador. Després de selection_changed, llegeix les llistes de fitxers coincidents; Select picked file tria un índex.
Executa Save selection locally. Després de files_saved, conserva saved_file_ids al registre d’adjuncions locals de la teva aplicació. List saved files mostra les còpies desades; Restore saved file obre l’ID desat seleccionat.
Share selected file obre el menú de compartició del sistema. share_sheet_closed només indica que el menú s’ha tancat. Delete saved copy necessita l’ID seleccionat i confirm=yes.
Configura una vegada
Creeu o trieu el vostre projecte d’aplicació Bubble a BestPlugins → Dashboard → Plugins. Trieu Xodera Offline Files Native, copieu la seva clau i, a continuació, obriu Bubble → Plugins → Xodera Offline Files Native i enganxeu‑la a licensing_api_key. Deseu una vegada; després utilitzeu les accions a continuació. Cada connector en cada projecte té la seva pròpia clau.
Utilitza una aplicació nativa amb accés als fitxers seleccionats. Defineix un document_context estable per al compte o informe perquè els fitxers desats es mantinguin agrupats correctament.
Configura una vegada
- Creeu o trieu el vostre projecte d’aplicació Bubble a BestPlugins → Dashboard → Plugins.
- Trieu aquest connector i copieu la clau del projecte.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Afegiu l’element, trieu les vostres dades d’aplicació i construïu el flux de treball a continuació.
- 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.
Instal·lació i subscripció
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.
Desa el resultat a la teva aplicació
Exemple LocalAttachment: propietari, document_context, ID del fitxer desat, display_name, mime_type i size_bytes. Aquest ID funciona només al mateix dispositiu i per al mateix compte o informe. Per a una adjunció en línia, carrega el fitxer amb un flux de treball separat i desa la referència del fitxer en línia retornada.
Fallada, cancel·lació i recuperació
Un selector cancel·lat retorna operation_cancelled; no envia el formulari. Mentre native_pending=yes, espera que el selector de fitxers o el menú de compartició es tanqui abans d’obrir-ne un altre. Clear session neteja la selecció actual però conserva les còpies desades. Si falta un fitxer, permet que l’usuari el torni a seleccionar.
Capacitats i límits
Tria fitxers 1–20 d’un cop. Límits per fitxer: 1 byte–256 MiB, amb un límit inferior si ho prefereixes. Els filtres de tipus de fitxer no comproven virus. Els ID i rutes de fitxers del dispositiu no funcionen com a enllaços de descàrrega al núvol. Les còpies locals no són emmagatzematge encriptat i es poden perdre si es suprimeixen les dades de l’aplicació.
Configuracions, accions i resultats
Utilitzeu aquests noms a Bubble. Les funcions planificades es marquen per separat.
Configuracions beta disponibles
Configuració de l'element
source_uri · textdisplay_name · textmime_type · textdocument_context · textselected_file_id · textaccepted_mime_types_json · textmultiple · yes_nocopy_to_cache · yes_nomax_files · numbermax_file_bytes · numberis_active · yes_nodisabled · yes_noshow_controls · yes_nolanguage · textui_text_json · texttitle · textEstats
status · textis_busy · yes_nonative_pending · yes_nooperation · textselection_count · numberselected_index · numberfile_id · textlocal_uri · textdisplay_name · textmime_type · textmime_source · textsize_bytes · numberis_saved_locally · yes_nofile_ids · text (llista)file_uris · text (llista)file_names · text (llista)file_mime_types · text (llista)file_sizes · number (llista)files_json · textsaved_count · numbersaved_file_ids · text (llista)saved_file_uris · text (llista)saved_file_names · text (llista)saved_file_mime_types · text (llista)saved_file_sizes · number (llista)saved_files_json · textinvalid_saved_count · numbershare_status · texterror_code · textEsdeveniments
selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_errorAccions i les seves entrades
Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear sessionConfiguració de l'element · 16
source_uritext · Per defecte: ""- Valor d'exemple
file:///app-cache/report.pdf - Exemple d'expressió Bubble
Photo Editor's output_uri - Ubicació llegible del fitxer en aquest dispositiu, retornada pel vostre selector o un altre connector.
display_nametext · Per defecte: ""- Valor d'exemple
report-photo.jpg - Exemple d'expressió Bubble
Selected Attachment's display_name - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
mime_typetext · Per defecte: ""- Valor d'exemple
image/jpeg - Exemple d'expressió Bubble
Photo Editor's output_mime - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
document_contexttext · Per defecte: "default"- Valor d'exemple
<current-user-id> - Exemple d'expressió Bubble
Current User's unique id - Valor estable per a aquest compte o registre. Utilitzeu el mateix valor en restaurar els seus fitxers o esborranys desats.
selected_file_idtext · Per defecte: ""- Valor d'exemple
<returned saved file ID> - Exemple d'expressió Bubble
Selected LocalAttachment's local_file_id - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
accepted_mime_types_jsontext · Per defecte: "[\"*/*\"]"- Valor d'exemple
["image/*","application/pdf"] - Exemple d'expressió Bubble
Report Settings' accepted_mime_types_json - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
multipleyes_no · Per defecte: false- Valor d'exemple
yes - Exemple d'expressió Bubble
Report Settings' allow_multiple_attachments - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
copy_to_cacheyes_no · Per defecte: true- Valor d'exemple
yes - Exemple d'expressió Bubble
Report Settings' copy_to_cache - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
max_filesnumber · Per defecte: 20- Valor d'exemple
5 - Exemple d'expressió Bubble
Report Settings' attachment_limit - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
max_file_bytesnumber · Per defecte: 268435456- Valor d'exemple
10485760 - Exemple d'expressió Bubble
Report Settings' max_attachment_bytes - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
is_activeyes_no · Per defecte: true- Valor d'exemple
yes - Exemple d'expressió Bubble
GuideHost's view_is_active (your yes/no custom state) - Estableix sí mentre aquesta vista està oberta. Estableix no en sortir, perquè la reproducció o l'obra actual puguin aturar-se.
disabledyes_no · Per defecte: false- Valor d'exemple
no - Exemple d'expressió Bubble
GuideHost's is_busy (your yes/no custom state) - Desactiva l'element mentre l'aplicació està ocupada o aquesta acció no està disponible.
show_controlsyes_no · Per defecte: true- Valor d'exemple
yes - Exemple d'expressió Bubble
App Settings' show_editor_controls - Mostra o amaga els controls integrats.
languagetext · Per defecte: "auto"- Valor d'exemple
uk - Exemple d'expressió Bubble
Current User's preferred_language - Estableix language=auto per seguir un dispositiu o idioma del navegador compatible. Introdueix un codi d'idioma compatible per seleccionar-lo explícitament.
ui_text_jsontext · Per defecte: ""- Valor d'exemple
{} - Exemple d'expressió Bubble
App Settings' player_labels_json (supported keys only) - JSON opcional amb etiquetes de botó compatibles. Deixa buit per utilitzar el text integrat.
titletext · Per defecte: ""- Valor d'exemple
Lesson 4 — review - Exemple d'expressió Bubble
Selected Lesson's name - Text visible de l'aplicació; buit utilitza la còpia localitzada integrada quan sigui compatible. No hi ha credencials.
Accions i les seves entrades · 10
Pick files
Sense paràmetres d'acció
Load local source
source_uritext · Per defecte: —- Valor d'exemple
file:///app-cache/report.pdf - Exemple d'expressió Bubble
Photo Editor's output_uri - Ubicació llegible del fitxer en aquest dispositiu, retornada pel vostre selector o un altre connector.
display_nametext · Per defecte: —- Valor d'exemple
report-photo.jpg - Exemple d'expressió Bubble
Selected Attachment's display_name - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
mime_typetext · Per defecte: —- Valor d'exemple
image/jpeg - Exemple d'expressió Bubble
Photo Editor's output_mime - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
Select picked file
indexnumber · Per defecte: —- Valor d'exemple
0 - Exemple d'expressió Bubble
Selected row's current_source_index - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
Save selection locally
Sense paràmetres d'acció
List saved files
Sense paràmetres d'acció
Restore saved file
file_idtext · Per defecte: —- Valor d'exemple
<returned saved file ID> - Exemple d'expressió Bubble
Selected LocalAttachment's local_file_id - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
Delete saved copy
file_idtext · Per defecte: —- Valor d'exemple
<returned saved file ID> - Exemple d'expressió Bubble
Selected LocalAttachment's local_file_id - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
confirmyes_no · Per defecte: —- Valor d'exemple
yes — explicit confirmation only - Exemple d'expressió Bubble
Confirm Checkbox is checked - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
Share selected file
dialog_titletext · Per defecte: —- Valor d'exemple
Share attachment - Exemple d'expressió Bubble
Selected Report's share_title - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
utitext · Per defecte: —- Valor d'exemple
"" - Exemple d'expressió Bubble
Empty unless your iOS integration supplies a proven UTI - Utilitza el valor del registre empresarial actual; valida'l respecte als límits següents.
Cancel operation
Sense paràmetres d'acció
Clear session
Sense paràmetres d'acció
Estats i esdeveniments
Estats
status · textResultat actual d'aquesta acció. Utilitza l'esdeveniment de finalització coincident abans d'enregistrar l'èxit.
is_busy · yes_noLa feina encara està en curs. Espereu abans d'iniciar una altra acció.
native_pending · yes_noLa feina encara està en curs. Espereu abans d'iniciar una altra acció.
operation · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
selection_count · numberValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
selected_index · numberValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
file_id · textIdentificador per a aquest element o acció. Conserva'l amb el registre d'aplicació corresponent. Utilitza el mateix identificador de sol·licitud en tornar a intentar un resultat incert.
local_uri · textUbicació del fitxer en aquest dispositiu. Deseu o pugeu el fitxer per separat si ha de quedar en línia.
display_name · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
mime_type · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
mime_source · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
size_bytes · numberValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
is_saved_locally · yes_noValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
file_ids · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
file_uris · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
file_names · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
file_mime_types · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
file_sizes · number (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
files_json · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
saved_count · numberValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
saved_file_ids · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
saved_file_uris · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
saved_file_names · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
saved_file_mime_types · text (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
saved_file_sizes · number (llista)Una llista per als fitxers seleccionats. Els elements amb el mateix índex a les altres llistes de fitxers fan referència al mateix fitxer.
saved_files_json · textValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
invalid_saved_count · numberValor actual de l'element seleccionat. Llegeix-lo després de l'esdeveniment relacionat.
share_status · textResultat actual d'aquesta acció. Utilitza l'esdeveniment de finalització coincident abans d'enregistrar l'èxit.
error_code · textInformació d'error de l'última acció. Mostra un missatge útil i ofereix el reintent corresponent.
Esdeveniments
selection_changedQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
files_savedQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
list_loadedQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
file_restoredQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
file_deletedQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
share_sheet_closedQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
operation_cancelledQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
files_errorQuan es produeixi aquest esdeveniment, llegiu els estats relacionats del mateix element.
Preguntes que fan els desenvolupadors
¿Share vol dir “enviat”?
No. El sistema operatiu no proporciona aquí un rebut fiable d’èxit del destinatari. Mostra “share sheet closed”.
Com funciona la subscripció?
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.
Guies relacionades
Per obtenir ajuda, indiqueu quin connector i dispositiu utilitzeu, l'acció que heu provat i què ha passat. Utilitzeu un exemple sense dades personals. No compartiu mai la vostra clau ni fitxers privats.