
Xodera Plugins · Bubble Native
Xodera Offline Files Native
Păstrați atașamentele raportului și fișierele alese pe dispozitiv, restaurați-le mai târziu și permiteți utilizatorului să partajeze o copie selectată.
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
Pregătiți mai multe atașamente locale înainte de a trimite un raport
Un formular trebuie să afișeze ce fișiere au fost selectate și să permită utilizatorului să păstreze o copie gestionată înainte de orice trimitere în cloud.
`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; setați `max_files`, `max_file_bytes` și un cont/raport `document_context`.
Pick files → inspectați numele/mărimile selectate → Save selection locally. Formularul dvs. păstrează ID-urile de fișiere rezultate până când fluxul de lucru separat de Trimitere încarcă fișierele aprobate.
Utilizați `selection_count`, `file_names`, `file_sizes` și `saved_file_ids` pentru a afișa lista de recenzii. O copie gestionată salvată păstrează originalul apelantului.
Un selector anulat nu este un raport trimis. Pe `files_error`, păstrați ID-urile locale deja acceptate și afișați `error_code`; nu creați niciodată un atașament în cloud dintr-un URI local singur.
Fișierele rămân pe acest dispozitiv până sunt partajate sau încărcate separat.
Păstrați rezultatul unui editor foto sau al unui recorder pentru utilizare ulterioară
Un fișier local generat poate fi stocat într-o locație temporară; aplicația are nevoie de o copie gestionată explicită.
`source_uri = the local output of a separately accepted editor/recorder`; legați `display_name` real și `mime_type`; utilizați `document_context` al aceluiași proprietar.
Load local source → inspectare metadate → Save selection locally. Stocați ID-ul fișierului returnat doar în dispozitivul/contextul corespunzător, apoi Restore saved file cu acel ID exact când este necesar.
Consumați `file_id`, `local_uri`, `size_bytes` și `is_saved_locally`; utilizați `file_restored` pentru a diferenția o restaurare finalizată de simpla solicitare a uneia.
Respingeți un URL HTTP remote ca sursă locală. Dacă o sursă a dispărut sau restaurarea eșuează, afișați `error_code` și păstrați înregistrarea originală a aplicației pentru recuperare.
Fișierele rămân pe acest dispozitiv până sunt partajate sau încărcate separat.
Permiteți utilizatorului să partajeze o chitanță locală generată de aplicație sau un export
Aplicația ar trebui să transmită fișierul local selectat către fereastra de partajare a dispozitivului în loc să creeze un URL public.
`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; numele său și MIME descriu fișierul local real.
List saved files → Restore saved file → Share selected file după ce utilizatorul apasă Partajare. Păstrați copia salvată până când alegă explicit Delete saved copy.
Utilizați `share_status` și `share_sheet_closed` pentru a actualiza interfața după închiderea ferestrei. Păstrați ID-ul fișierului pentru o altă partajare deliberată.
O fereastră de partajare închisă nu dovedește că un e‑mail/mesaj a fost livrat. Gestionați anularea și `files_error` fără a raporta succesul destinatarului.
Fișierele rămân pe acest dispozitiv până sunt partajate sau încărcate separat.
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ă.
Setați document_context = Current User's unique id, sau o valoare stabilă pentru cont și raport. Alegeți accepted_mime_types_json, max_files și max_file_bytes.
Rulați Pick files, sau folosiți Load local source pentru un fișier citibil produs de Photo Editor sau Recorder. După selection_changed, citiți listele de fișiere corespunzătoare; Select picked file alege un index.
Rulați Save selection locally. După files_saved, păstrați saved_file_ids în înregistrarea locală de atașamente a aplicației. List saved files afișează copiile salvate; Restore saved file deschide ID-ul salvat selectat.
Share selected file deschide meniul de partajare al sistemului. share_sheet_closed înseamnă doar că meniul s-a închis. Delete saved copy necesită ID-ul selectat și confirm=yes.
Configurează o singură dată
Creați sau alegeți proiectul de aplicație Bubble în BestPlugins → Dashboard → Plugins. Alegeți Xodera Offline Files Native, copiați cheia acestuia, apoi deschideți Bubble → Plugins → Xodera Offline Files 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.
Utilizați o aplicație nativă cu acces la fișierele alese. Stabiliți un document_context stabil pentru cont sau raport, astfel încât fișierele salvate să rămână grupate corect.
Configurează o singură dată
- Creați sau alegeți proiectul de aplicație Bubble la BestPlugins → Dashboard → Plugins.
- Selectați acest plugin și copiați cheia proiectului.
- Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
- Adăugați elementul, alegeți datele aplicației și construiți fluxul de lucru de mai jos.
- 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
Exemplu LocalAttachment: proprietar, document_context, ID fișier salvat, display_name, mime_type și size_bytes. Acest ID funcționează doar pe același dispozitiv și pentru același cont sau raport. Pentru un atașament online, încărcați fișierul printr-un flux de lucru separat și salvați referința fișierului online returnată.
Eșec, anulare și recuperare
Un selector anulat returnează operation_cancelled; nu trimite formularul. În timp ce native_pending=yes, așteptați închiderea selectorului de fișiere sau a meniului de partajare înainte de a deschide altul. Clear session curăță selecția curentă, dar păstrează copiile salvate. Dacă lipsește un fișier, permiteți utilizatorului să îl aleagă din nou.
Capacități și limite
Alegeți fișiere 1–20 simultan. Limită per fișier: 1 byte–256 MiB, cu o limită inferioară dacă doriți. Filtrele de tip fișier nu verifică fișierele pentru viruși. ID-urile și căile fișierelor de pe dispozitiv nu funcționează ca linkuri de descărcare din cloud. Copiile locale nu sunt stocare criptată și pot fi pierdute dacă datele aplicației sunt șterse.
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
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 · textStări
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 (listă)file_uris · text (listă)file_names · text (listă)file_mime_types · text (listă)file_sizes · number (listă)files_json · textsaved_count · numbersaved_file_ids · text (listă)saved_file_uris · text (listă)saved_file_names · text (listă)saved_file_mime_types · text (listă)saved_file_sizes · number (listă)saved_files_json · textinvalid_saved_count · numbershare_status · texterror_code · textEvenimente
selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_errorAcțiuni și intrările lor
Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear sessionSetări element · 16
source_uritext · Implicit: ""- Valoare exemplu
file:///app-cache/report.pdf - Exemplu Bubble expresie
Photo Editor's output_uri - Locație de fișier citibilă pe acest dispozitiv, returnată de selectorul dumneavoastră sau de un alt plugin.
display_nametext · Implicit: ""- Valoare exemplu
report-photo.jpg - Exemplu Bubble expresie
Selected Attachment's display_name - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
mime_typetext · Implicit: ""- Valoare exemplu
image/jpeg - Exemplu Bubble expresie
Photo Editor's output_mime - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
document_contexttext · Implicit: "default"- Valoare exemplu
<current-user-id> - Exemplu Bubble expresie
Current 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.
selected_file_idtext · Implicit: ""- Valoare exemplu
<returned saved file ID> - Exemplu Bubble expresie
Selected LocalAttachment's local_file_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
accepted_mime_types_jsontext · Implicit: "[\"*/*\"]"- Valoare exemplu
["image/*","application/pdf"] - Exemplu Bubble expresie
Report Settings' accepted_mime_types_json - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
multipleyes_no · Implicit: false- Valoare exemplu
yes - Exemplu Bubble expresie
Report Settings' allow_multiple_attachments - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
copy_to_cacheyes_no · Implicit: true- Valoare exemplu
yes - Exemplu Bubble expresie
Report Settings' copy_to_cache - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
max_filesnumber · Implicit: 20- Valoare exemplu
5 - Exemplu Bubble expresie
Report Settings' attachment_limit - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
max_file_bytesnumber · Implicit: 268435456- Valoare exemplu
10485760 - Exemplu Bubble expresie
Report Settings' max_attachment_bytes - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
is_activeyes_no · Implicit: true- Valoare exemplu
yes - Exemplu Bubble expresie
GuideHost'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 exemplu
no - Exemplu Bubble expresie
GuideHost'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ă.
show_controlsyes_no · Implicit: true- Valoare exemplu
yes - Exemplu Bubble expresie
App Settings' show_editor_controls - Afișați sau ascundeți controalele încorporate.
languagetext · Implicit: "auto"- Valoare exemplu
uk - Exemplu Bubble expresie
Current 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.
ui_text_jsontext · Implicit: ""- Valoare exemplu
{} - Exemplu Bubble expresie
App Settings' player_labels_json (supported keys only) - JSON opțional cu etichete de buton acceptate. Lăsați gol pentru a utiliza textul încorporat.
titletext · Implicit: ""- Valoare exemplu
Lesson 4 — review - Exemplu Bubble expresie
Selected 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.
Acțiuni și intrările lor · 10
Pick files
Niciun parametru de acțiune
Load local source
source_uritext · Implicit: —- Valoare exemplu
file:///app-cache/report.pdf - Exemplu Bubble expresie
Photo Editor's output_uri - Locație de fișier citibilă pe acest dispozitiv, returnată de selectorul dumneavoastră sau de un alt plugin.
display_nametext · Implicit: —- Valoare exemplu
report-photo.jpg - Exemplu Bubble expresie
Selected Attachment's display_name - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
mime_typetext · Implicit: —- Valoare exemplu
image/jpeg - Exemplu Bubble expresie
Photo Editor's output_mime - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Select picked file
indexnumber · Implicit: —- Valoare exemplu
0 - Exemplu Bubble expresie
Selected row's current_source_index - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Save selection locally
Niciun parametru de acțiune
List saved files
Niciun parametru de acțiune
Restore saved file
file_idtext · Implicit: —- Valoare exemplu
<returned saved file ID> - Exemplu Bubble expresie
Selected LocalAttachment's local_file_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Delete saved copy
file_idtext · Implicit: —- Valoare exemplu
<returned saved file ID> - Exemplu Bubble expresie
Selected LocalAttachment's local_file_id - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
confirmyes_no · Implicit: —- Valoare exemplu
yes — explicit confirmation only - Exemplu Bubble expresie
Confirm Checkbox is checked - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Share selected file
dialog_titletext · Implicit: —- Valoare exemplu
Share attachment - Exemplu Bubble expresie
Selected Report's share_title - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
utitext · Implicit: —- Valoare exemplu
"" - Exemplu Bubble expresie
Empty unless your iOS integration supplies a proven UTI - Folosește valoarea înregistrării de afaceri curente; valideaz-o în raport cu limitele de mai jos.
Cancel operation
Niciun parametru de acțiune
Clear session
Niciun parametru de acțiune
Stări și evenimente
Stări
status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
is_busy · yes_noLucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.
native_pending · yes_noLucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.
operation · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
selection_count · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
selected_index · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
file_id · textIdentificator 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.
local_uri · textLocația fișierului pe acest dispozitiv. Salvați sau încărcați fișierul separat dacă trebuie să fie păstrat online.
display_name · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
mime_type · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
mime_source · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
size_bytes · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
is_saved_locally · yes_noValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
file_ids · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
file_uris · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
file_names · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
file_mime_types · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
file_sizes · number (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
files_json · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
saved_count · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
saved_file_ids · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
saved_file_uris · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
saved_file_names · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
saved_file_mime_types · text (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
saved_file_sizes · number (listă)O listă pentru fișierele selectate. Elemente cu același indice în celelalte liste de fișiere se referă la același fișier.
saved_files_json · textValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
invalid_saved_count · numberValoarea curentă pentru elementul selectat. Citiți‑o după evenimentul asociat.
share_status · textRezultatul curent al acestei acțiuni. Utilizați evenimentul de finalizare corespunzător înainte de a salva cu succes.
error_code · textInformații despre eroarea ultimei acțiuni. Afișați un mesaj util și oferiți o reîncercare relevantă.
Evenimente
selection_changedCând apare acest eveniment, citiți stările aferente din același element.
files_savedCând apare acest eveniment, citiți stările aferente din același element.
list_loadedCând apare acest eveniment, citiți stările aferente din același element.
file_restoredCând apare acest eveniment, citiți stările aferente din același element.
file_deletedCând apare acest eveniment, citiți stările aferente din același element.
share_sheet_closedCând apare acest eveniment, citiți stările aferente din același element.
operation_cancelledCând apare acest eveniment, citiți stările aferente din același element.
files_errorCând apare acest eveniment, citiți stările aferente din același element.
Întrebări pe care le pun dezvoltatorii
Împărtășirea înseamnă „trimis”?
Nu. Sistemul de operare nu furnizează aici o confirmare fiabilă a succesului destinatarului. Afișați „foaia de partajare închisă”.
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.