Giao diện Offline Files.
Giao diện Offline Files.
← Tất cả hướng dẫn gốc

Xodera Plugins · Bubble Native

Xodera Offline Files Native

Giữ các tệp đính kèm báo cáo và các tệp đã chọn trên thiết bị, khôi phục chúng sau này và cho phép người dùng chia sẻ một bản sao đã chọn.

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.

Tài liệu được rà soát ngày 6 tháng mười một năm 2026

Ví dụ thực tế

Chuẩn bị một vài tệp đính kèm cục bộ trước khi gửi báo cáo.

Một biểu mẫu cần hiển thị các tệp đã được chọn và cho phép người dùng giữ một bản sao được quản lý trước khi gửi lên đám mây.

`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; đặt `max_files`, `max_file_bytes` và một tài khoản/báo cáo `document_context`.

Pick files → kiểm tra các tên/kích thước đã chọn → Save selection locally. Biểu mẫu của bạn giữ lại các ID tệp kết quả cho đến khi quy trình làm việc Submit riêng biệt tải lên các tệp đã được phê duyệt.

Sử dụng `selection_count`, `file_names`, `file_sizes` và `saved_file_ids` để hiển thị danh sách tệp cần kiểm tra. Bản sao được quản lý đã lưu giữ nguyên tệp gốc do mã gọi cung cấp.

Bộ chọn bị hủy không phải là báo cáo đã gửi. Trên `files_error`, giữ các ID cục bộ đã được chấp nhận và hiển thị `error_code`; không bao giờ tạo tệp đính kèm đám mây chỉ từ URI cục bộ.

Các tệp sẽ ở trên thiết bị này cho đến khi được chia sẻ hoặc tải lên riêng biệt.

Giữ đầu ra của trình chỉnh sửa ảnh hoặc trình ghi để sử dụng sau.

Tệp cục bộ được tạo có thể nằm ở vị trí tạm thời; ứng dụng cần một bản sao quản lý rõ ràng.

`source_uri = the local output of a separately accepted editor/recorder`; liên kết `display_name` và `mime_type` thực tế của nó; sử dụng `document_context` của cùng chủ sở hữu.

Load local source → kiểm tra siêu dữ liệu → Save selection locally. Lưu ID tệp trả về chỉ trong thiết bị/bối cảnh phù hợp, sau đó Restore saved file bằng ID chính xác đó khi cần.

Sử dụng `file_id`, `local_uri`, `size_bytes` và `is_saved_locally`; sử dụng `file_restored` để phân biệt việc khôi phục hoàn thành với chỉ yêu cầu khôi phục.

Từ chối URL HTTP từ xa như là nguồn cục bộ. Nếu nguồn biến mất hoặc khôi phục thất bại, hiển thị `error_code` và giữ bản ghi gốc của ứng dụng để phục hồi.

Các tệp sẽ ở trên thiết bị này cho đến khi được chia sẻ hoặc tải lên riêng biệt.

Cho phép người dùng chia sẻ biên nhận cục bộ do ứng dụng tạo hoặc tệp xuất.

Ứng dụng nên chuyển tệp cục bộ đã chọn cho bảng chia sẻ của thiết bị thay vì tạo URL công cộng.

`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; tên và MIME của nó mô tả tệp cục bộ thực tế.

List saved files → Restore saved file → Share selected file sau khi người dùng nhấn Chia sẻ. Giữ bản sao đã lưu cho đến khi họ chọn rõ ràng Delete saved copy.

Sử dụng `share_status` và `share_sheet_closed` để cập nhật giao diện sau khi bảng đóng. Giữ lại ID tệp cho lần chia sẻ có chủ đích khác.

Việc đóng bảng chia sẻ không chứng minh email/tin nhắn đã đến người nhận. Khi xử lý hủy và `files_error`, không được báo rằng người nhận đã nhận thành công.

Các tệp sẽ ở trên thiết bị này cho đến khi được chia sẻ hoặc tải lên riêng biệt.

Những gì hiện đang hoạt động

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.

Xây dựng quy trình làm việc

Sử dụng các hành động beta có sẵn bên dưới và kiểm tra kết quả trên thiết bị mục tiêu của bạn.

Các ví dụ này sử dụng các bản ghi ứng dụng như Lesson, Message và Order. Hãy thay thế chúng bằng các kiểu dữ liệu và tên phần tử của bạn. Các địa chỉ phương tiện mẫu phải được thay thế bằng các tệp của bạn.

  1. Đặt document_context = Current User's unique id, hoặc một giá trị ổn định cho tài khoản và báo cáo. Chọn accepted_mime_types_json, max_files và max_file_bytes.

  2. Chạy Pick files, hoặc sử dụng Load local source cho tệp có thể đọc được được tạo bởi Trình chỉnh sửa Ảnh hoặc Trình ghi. Sau selection_changed, đọc danh sách tệp phù hợp; Select picked file chọn một chỉ mục.

  3. Chạy Save selection locally. Sau files_saved, giữ saved_file_ids trong bản ghi đính kèm cục bộ của ứng dụng. List saved files hiển thị các bản sao đã lưu; Restore saved file mở ID đã lưu đã chọn.

  4. Share selected file mở menu chia sẻ hệ thống. share_sheet_closed chỉ có nghĩa là menu đã đóng. Delete saved copy cần ID đã chọn và confirm=yes.

Sơ đồ quy trình làm việc — không phải ảnh chụp màn hình ứng dụng

Cấu hình một lần

Tạo hoặc chọn dự án ứng dụng Bubble của bạn trong BestPlugins → Dashboard → Plugins. Chọn Xodera Offline Files Native, sao chép khóa của nó, sau đó mở Bubble → Plugins → Xodera Offline Files Native và dán vào licensing_api_key. Lưu một lần; sau đó sử dụng các hành động bên dưới. Mỗi plugin trong mỗi dự án có khóa riêng của nó.

Sử dụng ứng dụng gốc có quyền truy cập vào các tệp đã chọn. Đặt một document_context ổn định cho tài khoản hoặc báo cáo để các tệp đã lưu được nhóm đúng cách.

Cấu hình một lần
  1. Tạo hoặc chọn dự án ứng dụng Bubble của bạn tại BestPlugins → Dashboard → Plugins.
  2. Chọn plugin này và sao chép khóa dự án của nó.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. Thêm phần tử, chọn dữ liệu ứng dụng của bạn và xây dựng quy trình làm việc bên dưới.
  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.
Cài đặt và đăng ký

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.

Lưu kết quả vào ứng dụng của bạn

Ví dụ LocalAttachment: chủ sở hữu, document_context, ID tệp đã lưu, display_name, mime_type và size_bytes. ID này chỉ hoạt động trên cùng một thiết bị và cho cùng một tài khoản hoặc báo cáo. Đối với tệp đính kèm trực tuyến, tải tệp lên bằng quy trình riêng và lưu tham chiếu tệp trực tuyến được trả về.

Lỗi, hủy và khôi phục

Trình chọn bị hủy trả về operation_cancelled; nó không gửi biểu mẫu. Khi native_pending=yes, chờ trình chọn tệp hoặc menu chia sẻ đóng lại trước khi mở trình chọn khác. Clear session xóa lựa chọn hiện tại nhưng giữ lại các bản sao đã lưu. Nếu tệp bị thiếu, cho phép người dùng chọn lại.

Khả năng và giới hạn

Chọn các tệp 1–20 cùng một lúc. Giới hạn mỗi tệp: 1 byte–256 MiB, có thể có giới hạn thấp hơn nếu bạn chọn. Bộ lọc loại tệp không kiểm tra virus cho các tệp. ID và đường dẫn tệp trên thiết bị không hoạt động như liên kết tải xuống đám mây. Bản sao cục bộ không phải là lưu trữ được mã hóa và có thể bị mất nếu dữ liệu ứng dụng bị xóa.

Cài đặt, hành động và kết quả

Sử dụng các tên này trong Bubble. Các tính năng dự kiến được đánh dấu riêng.

Cài đặt beta khả dụng

Cài đặt phần tử

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

Trạng thái

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

Sự kiện

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

Hành động và đầu vào của chúng

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
Cài đặt phần tử · 16
source_uritext · Mặc định: ""
Giá trị ví dụfile:///app-cache/report.pdf
Ví dụ biểu thức BubblePhoto Editor's output_uri
Vị trí tệp có thể đọc được trên thiết bị này, được trả về bởi bộ chọn của bạn hoặc plugin khác.
display_nametext · Mặc định: ""
Giá trị ví dụreport-photo.jpg
Ví dụ biểu thức BubbleSelected Attachment's display_name
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
mime_typetext · Mặc định: ""
Giá trị ví dụimage/jpeg
Ví dụ biểu thức BubblePhoto Editor's output_mime
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
document_contexttext · Mặc định: "default"
Giá trị ví dụ<current-user-id>
Ví dụ biểu thức BubbleCurrent User's unique id
Giá trị ổn định cho tài khoản hoặc bản ghi này. Sử dụng cùng giá trị khi khôi phục các tệp hoặc bản nháp đã lưu của nó.
selected_file_idtext · Mặc định: ""
Giá trị ví dụ<returned saved file ID>
Ví dụ biểu thức BubbleSelected LocalAttachment's local_file_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
accepted_mime_types_jsontext · Mặc định: "[\"*/*\"]"
Giá trị ví dụ["image/*","application/pdf"]
Ví dụ biểu thức BubbleReport Settings' accepted_mime_types_json
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
multipleyes_no · Mặc định: false
Giá trị ví dụyes
Ví dụ biểu thức BubbleReport Settings' allow_multiple_attachments
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
copy_to_cacheyes_no · Mặc định: true
Giá trị ví dụyes
Ví dụ biểu thức BubbleReport Settings' copy_to_cache
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
max_filesnumber · Mặc định: 20
Giá trị ví dụ5
Ví dụ biểu thức BubbleReport Settings' attachment_limit
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
max_file_bytesnumber · Mặc định: 268435456
Giá trị ví dụ10485760
Ví dụ biểu thức BubbleReport Settings' max_attachment_bytes
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
is_activeyes_no · Mặc định: true
Giá trị ví dụyes
Ví dụ biểu thức BubbleGuideHost's view_is_active (your yes/no custom state)
Đặt yes khi chế độ xem này đang mở. Đặt no khi rời khỏi, để có thể dừng việc phát hoặc công việc hiện tại.
disabledyes_no · Mặc định: false
Giá trị ví dụno
Ví dụ biểu thức BubbleGuideHost's is_busy (your yes/no custom state)
Vô hiệu hoá phần tử khi ứng dụng của bạn đang bận hoặc hành động này không khả dụng.
show_controlsyes_no · Mặc định: true
Giá trị ví dụyes
Ví dụ biểu thức BubbleApp Settings' show_editor_controls
Hiển thị hoặc ẩn các điều khiển tích hợp.
languagetext · Mặc định: "auto"
Giá trị ví dụuk
Ví dụ biểu thức BubbleCurrent User's preferred_language
Đặt language=auto để theo dõi ngôn ngữ thiết bị hoặc trình duyệt được hỗ trợ. Nhập mã ngôn ngữ hỗ trợ để chọn một cách rõ ràng.
ui_text_jsontext · Mặc định: ""
Giá trị ví dụ{}
Ví dụ biểu thức BubbleApp Settings' player_labels_json (supported keys only)
JSON tùy chọn với các nhãn nút được hỗ trợ. Để trống để sử dụng văn bản tích hợp.
titletext · Mặc định: ""
Giá trị ví dụLesson 4 — review
Ví dụ biểu thức BubbleSelected Lesson's name
Văn bản hiển thị trong ứng dụng; để trống sẽ dùng văn bản bản địa hóa tích hợp khi được hỗ trợ. Không nhập thông tin xác thực.
Hành động và đầu vào của chúng · 10
Pick files

Không có tham số hành động

Load local source
source_uritext · Mặc định: —
Giá trị ví dụfile:///app-cache/report.pdf
Ví dụ biểu thức BubblePhoto Editor's output_uri
Vị trí tệp có thể đọc được trên thiết bị này, được trả về bởi bộ chọn của bạn hoặc plugin khác.
display_nametext · Mặc định: —
Giá trị ví dụreport-photo.jpg
Ví dụ biểu thức BubbleSelected Attachment's display_name
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
mime_typetext · Mặc định: —
Giá trị ví dụimage/jpeg
Ví dụ biểu thức BubblePhoto Editor's output_mime
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Select picked file
indexnumber · Mặc định: —
Giá trị ví dụ0
Ví dụ biểu thức BubbleSelected row's current_source_index
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Save selection locally

Không có tham số hành động

List saved files

Không có tham số hành động

Restore saved file
file_idtext · Mặc định: —
Giá trị ví dụ<returned saved file ID>
Ví dụ biểu thức BubbleSelected LocalAttachment's local_file_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Delete saved copy
file_idtext · Mặc định: —
Giá trị ví dụ<returned saved file ID>
Ví dụ biểu thức BubbleSelected LocalAttachment's local_file_id
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
confirmyes_no · Mặc định: —
Giá trị ví dụyes — explicit confirmation only
Ví dụ biểu thức BubbleConfirm Checkbox is checked
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Share selected file
dialog_titletext · Mặc định: —
Giá trị ví dụShare attachment
Ví dụ biểu thức BubbleSelected Report's share_title
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
utitext · Mặc định: —
Giá trị ví dụ""
Ví dụ biểu thức BubbleEmpty unless your iOS integration supplies a proven UTI
Sử dụng giá trị của bản ghi kinh doanh hiện tại; xác thực nó so với các giới hạn bên dưới.
Cancel operation

Không có tham số hành động

Clear session

Không có tham số hành động

Trạng thái và sự kiện

Trạng thái

status · text

Kết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.

is_busy · yes_no

Công việc vẫn đang tiến hành. Vui lòng chờ trước khi bắt đầu hành động khác.

native_pending · yes_no

Công việc vẫn đang tiến hành. Vui lòng chờ trước khi bắt đầu hành động khác.

operation · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

selection_count · number

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

selected_index · number

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

file_id · text

Định danh cho mục hoặc hành động này. Giữ nó cùng bản ghi ứng dụng tương ứng. Sử dụng cùng một định danh yêu cầu khi thử lại kết quả không chắc chắn.

local_uri · text

Vị trí tệp trên thiết bị này. Lưu hoặc tải lên tệp riêng biệt nếu cần giữ trực tuyến.

display_name · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

mime_type · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

mime_source · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

size_bytes · number

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

is_saved_locally · yes_no

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

file_ids · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

file_uris · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

file_names · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

file_mime_types · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

file_sizes · number (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

files_json · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

saved_count · number

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

saved_file_ids · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

saved_file_uris · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

saved_file_names · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

saved_file_mime_types · text (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

saved_file_sizes · number (danh sách)

Danh sách cho các tệp đã chọn. Các mục cùng chỉ mục trong các danh sách tệp khác đề cập đến cùng một tệp.

saved_files_json · text

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

invalid_saved_count · number

Giá trị hiện tại cho mục đã chọn. Đọc nó sau sự kiện liên quan.

share_status · text

Kết quả hiện tại của hành động này. Sử dụng sự kiện hoàn thành tương ứng trước khi lưu thành công.

error_code · text

Thông tin lỗi cho hành động cuối cùng. Hiển thị thông báo hữu ích và đề xuất thử lại liên quan.

Sự kiện

selection_changed

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

files_saved

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

list_loaded

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

file_restored

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

file_deleted

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

share_sheet_closed

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

operation_cancelled

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

files_error

Khi sự kiện này xảy ra, đọc các trạng thái liên quan từ cùng một phần tử.

Câu hỏi mà nhà phát triển đặt ra

Share có nghĩa là “đã gửi” không?

Không. Hệ điều hành không cung cấp biên nhận thành công người nhận đáng tin cậy ở đây. Hiển thị “share sheet closed”.

Đăng ký hoạt động như thế nào?

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.

Hướng dẫn liên quan

Để được trợ giúp, cho chúng tôi biết plugin và thiết bị bạn đang sử dụng, hành động bạn đã thử và những gì đã xảy ra. Sử dụng ví dụ không có dữ liệu cá nhân. Không bao giờ chia sẻ khóa hoặc tệp riêng của bạn.