Interfață Offline Files.
Interfață Offline Files.
← Toate ghidurile native

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ă.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

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 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ă
  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

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

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

Evenimente

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

Acțiuni și intrările lor

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
Setări element · 16
source_uritext · Implicit: ""
Valoare exemplufile:///app-cache/report.pdf
Exemplu Bubble expresiePhoto 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 exemplureport-photo.jpg
Exemplu Bubble expresieSelected 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 exempluimage/jpeg
Exemplu Bubble expresiePhoto 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 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.
selected_file_idtext · Implicit: ""
Valoare exemplu<returned saved file ID>
Exemplu Bubble expresieSelected 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 expresieReport 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 exempluyes
Exemplu Bubble expresieReport 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 exempluyes
Exemplu Bubble expresieReport 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 exemplu5
Exemplu Bubble expresieReport 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 exemplu10485760
Exemplu Bubble expresieReport 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 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ă.
show_controlsyes_no · Implicit: true
Valoare exempluyes
Exemplu Bubble expresieApp Settings' show_editor_controls
Afișați sau ascundeți controalele încorporate.
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.
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.
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.
Acțiuni și intrările lor · 10
Pick files

Niciun parametru de acțiune

Load local source
source_uritext · Implicit: —
Valoare exemplufile:///app-cache/report.pdf
Exemplu Bubble expresiePhoto 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 exemplureport-photo.jpg
Exemplu Bubble expresieSelected 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 exempluimage/jpeg
Exemplu Bubble expresiePhoto 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 exemplu0
Exemplu Bubble expresieSelected 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 expresieSelected 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 expresieSelected 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 exempluyes — explicit confirmation only
Exemplu Bubble expresieConfirm 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 exempluShare attachment
Exemplu Bubble expresieSelected 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 expresieEmpty 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 · text

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

is_busy · yes_no

Lucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.

native_pending · yes_no

Lucrul este încă în desfășurare. Așteptați înainte de a începe o altă acțiune.

operation · text

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

selection_count · number

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

selected_index · number

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

file_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.

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.

display_name · text

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.

mime_source · text

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

size_bytes · number

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

is_saved_locally · yes_no

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

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

saved_count · number

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

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

invalid_saved_count · number

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

share_status · text

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

error_code · text

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

Evenimente

selection_changed

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

files_saved

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

list_loaded

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

file_restored

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

file_deleted

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

share_sheet_closed

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

operation_cancelled

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

files_error

Câ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.