Antarmuka Offline Files.
Antarmuka Offline Files.
← Semua panduan native

Xodera Plugins · Bubble Native

Xodera Offline Files Native

Simpan lampiran laporan dan file yang dipilih di perangkat, pulihkan nanti, dan izinkan pengguna membagikan salinan yang dipilih.

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.

Dokumentasi ditinjau 6 November 2026

Contoh praktis

Siapkan beberapa lampiran lokal sebelum mengirimkan laporan

Formulir harus menampilkan file mana yang dipilih dan memungkinkan pengguna menyimpan salinan terkelola sebelum pengiriman ke cloud apa pun.

`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; tetapkan `max_files`, `max_file_bytes`, dan akun/laporan `document_context`.

Pick files → periksa nama/ukuran yang dipilih → Save selection locally. Formulir Anda menyimpan ID file yang dihasilkan hingga alur kerja Submit terpisah mengunggah file yang disetujui.

Gunakan `selection_count`, `file_names`, `file_sizes`, dan `saved_file_ids` untuk menampilkan daftar ulasan. Salinan terkelola yang disimpan mempertahankan asli pemanggil.

Pemilih yang dibatalkan bukan laporan yang dikirim. Pada `files_error`, pertahankan ID lokal yang sudah diterima dan tampilkan `error_code`; jangan pernah membuat lampiran cloud hanya dari URI lokal.

Berkas tetap berada di perangkat ini sampai dibagikan atau diunggah secara terpisah.

Simpan output foto-editor atau perekam untuk penggunaan nanti

Berkas lokal yang dihasilkan dapat berada di lokasi sementara; aplikasi memerlukan salinan terkelola yang eksplisit.

`source_uri = the local output of a separately accepted editor/recorder`; hubungkan `display_name` dan `mime_type` yang sebenarnya; gunakan `document_context` milik pemilik yang sama.

Load local source → periksa metadata → Save selection locally. Simpan ID berkas yang dikembalikan hanya di perangkat/konteks yang cocok, kemudian Restore saved file dengan ID tepat itu saat diperlukan.

Gunakan `file_id`, `local_uri`, `size_bytes`, dan `is_saved_locally`; gunakan `file_restored` untuk membedakan pemulihan yang selesai dari sekadar permintaan.

Tolak URL HTTP remote sebagai sumber lokal. Jika sumber menghilang atau pemulihan gagal, tampilkan `error_code` dan pertahankan catatan aplikasi asli untuk pemulihan.

Berkas tetap berada di perangkat ini sampai dibagikan atau diunggah secara terpisah.

Izinkan pengguna membagikan tanda terima lokal yang dihasilkan aplikasi atau ekspor

Aplikasi harus menyerahkan berkas lokal terpilih ke lembar berbagi perangkat alih-alih membuat URL publik.

`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; namanya dan MIME menjelaskan berkas lokal yang sebenarnya.

List saved files → Restore saved file → Share selected file setelah pengguna mengetuk Bagikan. Simpan salinan yang disimpan sampai mereka secara eksplisit memilih Delete saved copy.

Gunakan `share_status` dan `share_sheet_closed` untuk memperbarui UI setelah lembar ditutup. Simpan ID berkas untuk berbagi sengaja berikutnya.

Lembar berbagi yang ditutup bukan bukti bahwa email/pesan telah terkirim. Tangani pembatalan dan `files_error` tanpa melaporkan keberhasilan kepada penerima.

Berkas tetap berada di perangkat ini sampai dibagikan atau diunggah secara terpisah.

Apa yang berfungsi sekarang

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.

Buat alur kerja

Gunakan tindakan beta yang tersedia di bawah ini dan uji hasilnya pada perangkat target Anda.

Contoh-contoh ini menggunakan catatan aplikasi seperti Lesson, Message, dan Order. Ganti mereka dengan tipe data dan nama elemen Anda sendiri. Alamat media contoh harus diganti dengan file Anda sendiri.

  1. Tetapkan document_context = Current User's unique id, atau nilai stabil untuk akun dan laporan. Pilih accepted_mime_types_json, max_files, dan max_file_bytes.

  2. Jalankan Pick files, atau gunakan Load local source untuk file yang dapat dibaca yang dihasilkan oleh Photo Editor atau Recorder. Setelah selection_changed, baca daftar file yang cocok; Select picked file memilih indeks.

  3. Jalankan Save selection locally. Setelah files_saved, simpan saved_file_ids dalam catatan lampiran lokal aplikasi Anda. List saved files menampilkan salinan yang disimpan; Restore saved file membuka ID yang disimpan yang dipilih.

  4. Share selected file membuka menu berbagi sistem. share_sheet_closed hanya berarti menu ditutup. Delete saved copy membutuhkan ID yang dipilih dan confirm=yes.

Diagram alur kerja — bukan tangkapan layar aplikasi

Konfigurasi sekali saja

Buat atau pilih proyek aplikasi Bubble Anda di BestPlugins → Dashboard → Plugins. Pilih Xodera Offline Files Native, salin kuncinya, lalu buka Bubble → Plugins → Xodera Offline Files Native dan tempelkan ke licensing_api_key. Simpan sekali; kemudian gunakan tindakan di bawah ini. Setiap plugin di setiap proyek memiliki kunci masing‑masing.

Gunakan aplikasi native dengan akses ke file yang dipilih. Tetapkan document_context yang stabil untuk akun atau laporan agar file yang disimpan tetap dikelompokkan dengan benar.

Konfigurasi sekali saja
  1. Buat atau pilih proyek aplikasi Bubble Anda di BestPlugins → Dashboard → Plugins.
  2. Pilih plugin ini dan salin kunci proyeknya.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Tambahkan elemen, pilih data aplikasi Anda, dan bangun alur kerja di bawah ini.
  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.
Instalasi dan langganan

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.

Simpan hasil di aplikasi Anda

Contoh LocalAttachment: pemilik, document_context, ID file yang disimpan, display_name, mime_type, dan size_bytes. ID ini hanya berfungsi pada perangkat yang sama dan untuk akun atau laporan yang sama. Untuk lampiran daring, unggah file dengan alur kerja terpisah dan simpan referensi file daring yang dikembalikan.

Kegagalan, pembatalan, dan pemulihan

Pemilih yang dibatalkan mengembalikan operation_cancelled; tidak mengirimkan formulir. Selama native_pending=yes, tunggu hingga pemilih file atau menu berbagi tertutup sebelum membuka yang lain. Clear session menghapus pilihan saat ini tetapi mempertahankan salinan yang disimpan. Jika file tidak ada, izinkan pengguna memilihnya kembali.

Kemampuan dan batasan

Pilih file 1–20 sekaligus. Batas per file: 1 byte–256 MiB, dengan batas lebih rendah jika Anda memilih. Filter tipe file tidak memeriksa virus. ID file dan jalur perangkat tidak berfungsi sebagai tautan unduhan cloud. Salinan lokal bukan penyimpanan terenkripsi dan dapat hilang jika data aplikasi dihapus.

Pengaturan, tindakan, dan hasil

Gunakan nama-nama ini di Bubble. Fitur yang direncanakan ditandai secara terpisah.

Pengaturan beta yang tersedia

Pengaturan elemen

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

Status

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 (daftar)file_uris · text (daftar)file_names · text (daftar)file_mime_types · text (daftar)file_sizes · number (daftar)files_json · textsaved_count · numbersaved_file_ids · text (daftar)saved_file_uris · text (daftar)saved_file_names · text (daftar)saved_file_mime_types · text (daftar)saved_file_sizes · number (daftar)saved_files_json · textinvalid_saved_count · numbershare_status · texterror_code · text

Acara

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

Tindakan dan inputnya

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
Pengaturan elemen · 16
source_uritext · Bawaan: ""
Nilai contohfile:///app-cache/report.pdf
Contoh ekspresi BubblePhoto Editor's output_uri
Lokasi berkas yang dapat dibaca di perangkat ini, dikembalikan oleh pemilih Anda atau plugin lain.
display_nametext · Bawaan: ""
Nilai contohreport-photo.jpg
Contoh ekspresi BubbleSelected Attachment's display_name
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
mime_typetext · Bawaan: ""
Nilai contohimage/jpeg
Contoh ekspresi BubblePhoto Editor's output_mime
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
document_contexttext · Bawaan: "default"
Nilai contoh<current-user-id>
Contoh ekspresi BubbleCurrent User's unique id
Nilai stabil untuk akun atau catatan ini. Gunakan nilai yang sama saat memulihkan file atau draf yang disimpan.
selected_file_idtext · Bawaan: ""
Nilai contoh<returned saved file ID>
Contoh ekspresi BubbleSelected LocalAttachment's local_file_id
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
accepted_mime_types_jsontext · Bawaan: "[\"*/*\"]"
Nilai contoh["image/*","application/pdf"]
Contoh ekspresi BubbleReport Settings' accepted_mime_types_json
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
multipleyes_no · Bawaan: false
Nilai contohyes
Contoh ekspresi BubbleReport Settings' allow_multiple_attachments
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
copy_to_cacheyes_no · Bawaan: true
Nilai contohyes
Contoh ekspresi BubbleReport Settings' copy_to_cache
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
max_filesnumber · Bawaan: 20
Nilai contoh5
Contoh ekspresi BubbleReport Settings' attachment_limit
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
max_file_bytesnumber · Bawaan: 268435456
Nilai contoh10485760
Contoh ekspresi BubbleReport Settings' max_attachment_bytes
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
is_activeyes_no · Bawaan: true
Nilai contohyes
Contoh ekspresi BubbleGuideHost's view_is_active (your yes/no custom state)
Setel ya saat tampilan ini terbuka. Setel tidak saat keluar, sehingga pemutaran atau pekerjaan saat ini dapat berhenti.
disabledyes_no · Bawaan: false
Nilai contohno
Contoh ekspresi BubbleGuideHost's is_busy (your yes/no custom state)
Nonaktifkan elemen saat aplikasi Anda sibuk atau tindakan ini tidak tersedia.
show_controlsyes_no · Bawaan: true
Nilai contohyes
Contoh ekspresi BubbleApp Settings' show_editor_controls
Tampilkan atau sembunyikan kontrol bawaan.
languagetext · Bawaan: "auto"
Nilai contohuk
Contoh ekspresi BubbleCurrent User's preferred_language
Set language=auto untuk mengikuti perangkat atau bahasa peramban yang didukung. Masukkan kode bahasa yang didukung untuk memilihnya secara eksplisit.
ui_text_jsontext · Bawaan: ""
Nilai contoh{}
Contoh ekspresi BubbleApp Settings' player_labels_json (supported keys only)
JSON opsional dengan label tombol yang didukung. Biarkan kosong untuk menggunakan teks bawaan.
titletext · Bawaan: ""
Nilai contohLesson 4 — review
Contoh ekspresi BubbleSelected Lesson's name
Teks aplikasi yang terlihat; kosong akan menggunakan salinan terlokalisasi bawaan bila didukung. Tanpa kredensial.
Tindakan dan inputnya · 10
Pick files

Tidak ada parameter aksi

Load local source
source_uritext · Bawaan: —
Nilai contohfile:///app-cache/report.pdf
Contoh ekspresi BubblePhoto Editor's output_uri
Lokasi berkas yang dapat dibaca di perangkat ini, dikembalikan oleh pemilih Anda atau plugin lain.
display_nametext · Bawaan: —
Nilai contohreport-photo.jpg
Contoh ekspresi BubbleSelected Attachment's display_name
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
mime_typetext · Bawaan: —
Nilai contohimage/jpeg
Contoh ekspresi BubblePhoto Editor's output_mime
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
Select picked file
indexnumber · Bawaan: —
Nilai contoh0
Contoh ekspresi BubbleSelected row's current_source_index
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
Save selection locally

Tidak ada parameter aksi

List saved files

Tidak ada parameter aksi

Restore saved file
file_idtext · Bawaan: —
Nilai contoh<returned saved file ID>
Contoh ekspresi BubbleSelected LocalAttachment's local_file_id
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
Delete saved copy
file_idtext · Bawaan: —
Nilai contoh<returned saved file ID>
Contoh ekspresi BubbleSelected LocalAttachment's local_file_id
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
confirmyes_no · Bawaan: —
Nilai contohyes — explicit confirmation only
Contoh ekspresi BubbleConfirm Checkbox is checked
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
Share selected file
dialog_titletext · Bawaan: —
Nilai contohShare attachment
Contoh ekspresi BubbleSelected Report's share_title
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
utitext · Bawaan: —
Nilai contoh""
Contoh ekspresi BubbleEmpty unless your iOS integration supplies a proven UTI
Gunakan nilai catatan bisnis saat ini; validasi terhadap batas di bawah.
Cancel operation

Tidak ada parameter aksi

Clear session

Tidak ada parameter aksi

Status dan peristiwa

Status

status · text

Hasil saat ini dari tindakan ini. Gunakan peristiwa penyelesaian yang cocok sebelum menyimpan keberhasilan.

is_busy · yes_no

Pekerjaan masih dalam proses. Tunggu sebelum memulai tindakan lain.

native_pending · yes_no

Pekerjaan masih dalam proses. Tunggu sebelum memulai tindakan lain.

operation · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

selection_count · number

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

selected_index · number

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

file_id · text

Pengidentifikasi untuk item atau tindakan ini. Simpan bersama catatan aplikasi yang cocok. Gunakan pengidentifikasi permintaan yang sama saat mencoba kembali hasil yang tidak pasti.

local_uri · text

Lokasi file di perangkat ini. Simpan atau unggah file secara terpisah jika harus disimpan secara daring.

display_name · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

mime_type · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

mime_source · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

size_bytes · number

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

is_saved_locally · yes_no

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

file_ids · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

file_uris · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

file_names · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

file_mime_types · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

file_sizes · number (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

files_json · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

saved_count · number

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

saved_file_ids · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

saved_file_uris · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

saved_file_names · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

saved_file_mime_types · text (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

saved_file_sizes · number (daftar)

Daftar untuk berkas yang dipilih. Item pada indeks yang sama di daftar berkas lainnya merujuk pada berkas yang sama.

saved_files_json · text

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

invalid_saved_count · number

Nilai saat ini untuk item yang dipilih. Baca setelah peristiwa terkait.

share_status · text

Hasil saat ini dari tindakan ini. Gunakan peristiwa penyelesaian yang cocok sebelum menyimpan keberhasilan.

error_code · text

Informasi error untuk tindakan terakhir. Tampilkan pesan yang membantu dan tawarkan percobaan ulang yang relevan.

Acara

selection_changed

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

files_saved

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

list_loaded

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

file_restored

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

file_deleted

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

share_sheet_closed

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

operation_cancelled

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

files_error

Saat peristiwa ini terjadi, baca status terkait dari elemen yang sama.

Pertanyaan yang diajukan pengembang

Apakah Share berarti “terkirim”?

Tidak. OS tidak menyediakan bukti keberhasilan penerima yang dapat diandalkan di sini. Tampilkan “share sheet closed”.

Bagaimana cara kerja langganan?

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.

Panduan terkait

Untuk bantuan, beri tahu kami plugin dan perangkat yang Anda gunakan, tindakan yang Anda coba, dan apa yang terjadi. Gunakan contoh tanpa data pribadi. Jangan pernah membagikan kunci atau file pribadi Anda.