Offline Files 인터페이스.
Offline Files 인터페이스.
← 전체 네이티브 가이드

Xodera Plugins · Bubble Native

Xodera Offline Files Native

보고서 첨부 파일과 선택한 파일을 기기에 보관하고, 나중에 복원하며, 사용자가 선택한 복사본을 공유하도록 합니다.

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.

문서 검토일: 2026년 11월 6일

실용적인 예시

보고서를 제출하기 전에 여러 로컬 첨부 파일을 준비하십시오.

양식은 선택된 파일을 표시하고 사용자가 클라우드 제출 전에 관리된 복사본을 보관하도록 해야 합니다.

`accepted_mime_types_json = your allowed MIME list`; `multiple = yes`; `max_files`, `max_file_bytes` 및 계정/보고서 `document_context`를 설정하십시오.

Pick files → 선택된 이름/크기를 검사 → Save selection locally. 양식은 승인된 파일이 별도의 제출 워크플로우에 업로드될 때까지 결과 파일 ID를 보관합니다.

`selection_count`, `file_names`, `file_sizes` 및 `saved_file_ids`를 사용하여 리뷰 목록을 표시합니다. 저장된 관리 복사본은 호출자의 원본을 보존합니다.

취소된 선택기는 제출된 보고서가 아닙니다. `files_error`에서 이미 수락된 로컬 ID를 유지하고 `error_code`를 표시하십시오; 로컬 URI만으로 클라우드 첨부 파일을 만들지 마세요.

파일은 공유하거나 별도로 업로드할 때까지 이 기기에 남아 있습니다.

사진 편집기 또는 녹음기 출력물을 나중에 사용할 수 있도록 보관하십시오

생성된 로컬 파일은 임시 위치에 존재할 수 있으며, 앱은 명시적인 관리 복사본이 필요합니다.

`source_uri = the local output of a separately accepted editor/recorder`; 실제 `display_name`와 `mime_type`를 바인딩하고 동일한 소유자의 `document_context`를 사용하십시오.

Load local source → 메타데이터 검사 → Save selection locally. 반환된 파일 ID를 일치하는 기기/컨텍스트에만 저장하고, 필요할 때 정확히 해당 ID로 Restore saved file하십시오.

`file_id`, `local_uri`, `size_bytes` 및 `is_saved_locally`를 사용하고, `file_restored`를 사용하여 복원이 완료된 경우와 단순히 요청한 경우를 구분하십시오.

원격 HTTP URL을 로컬 소스로 거부합니다. 소스가 사라지거나 복원이 실패하면 `error_code`를 표시하고 복구를 위해 원본 앱 레코드를 보존하십시오.

파일은 공유하거나 별도로 업로드할 때까지 이 기기에 남아 있습니다.

사용자가 앱에서 생성된 로컬 영수증이나 내보내기를 공유하도록 허용하십시오

앱은 선택된 로컬 파일을 장치 공유 시트에 전달해야 하며, 공개 URL을 만들지 않아야 합니다.

`selected_file_id = the exact managed copy chosen from your app’s saved-file list`; 그 이름과 MIME가 실제 로컬 파일을 설명합니다.

List saved files → Restore saved file → 사용자가 Share를 탭하면 Share selected file 실행. 사용자가 명시적으로 Delete saved copy를 선택할 때까지 저장된 복사본을 유지하세요.

시트가 닫힌 후 UI를 업데이트하려면 `share_status`와 `share_sheet_closed`를 사용하십시오. 다른 의도적인 공유를 위해 파일 ID를 보존하십시오.

닫힌 공유 시트는 이메일/메시지가 전달되었다는 증거가 아닙니다. 취소와 `files_error`를 처리하되 수신자에게 성공을 보고하지 마십시오.

파일은 공유하거나 별도로 업로드할 때까지 이 기기에 남아 있습니다.

현재 작동 중인 항목

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.

워크플로우 만들기

아래 제공된 베타 액션을 사용하고 대상 디바이스에서 결과를 테스트하십시오.

이 예제들은 Lesson, Message 및 Order와 같은 앱 레코드를 사용합니다. 이를 귀하의 데이터 유형 및 요소 이름으로 교체하십시오. 예시 미디어 주소는 귀하의 파일로 교체해야 합니다.

  1. document_context = Current User's unique id를 설정하거나 계정 및 보고서에 대한 안정적인 값을 지정하세요. accepted_mime_types_json, max_files 및 max_file_bytes를 선택하세요.

  2. Pick files를 실행하거나 Photo Editor 또는 Recorder가 만든 읽을 수 있는 파일에 대해 Load local source를 사용하세요. selection_changed 후에 일치하는 파일 목록을 읽고; Select picked file가 인덱스를 선택합니다.

  3. Save selection locally를 실행합니다. files_saved 후에, saved_file_ids를 앱의 로컬 첨부 기록에 보관하십시오. List saved files는 저장된 복사본을 표시하고; Restore saved file는 선택된 저장된 ID를 엽니다.

  4. Share selected file는 시스템 공유 메뉴를 엽니다. share_sheet_closed는 메뉴가 닫혔음을 의미합니다. Delete saved copy는 선택된 ID와 confirm=yes가 필요합니다.

워크플로우 다이어그램 — 앱 스크린샷이 아님

한 번만 설정

BestPlugins → Dashboard → Plugins에서 Bubble 앱 프로젝트를 만들거나 선택하십시오. Xodera Offline Files Native를 선택하고 키를 복사한 다음 Bubble → Plugins → Xodera Offline Files Native를 열어 licensing_api_key에 붙여넣으세요. 한 번 저장한 후 아래 액션을 사용하십시오. 각 프로젝트의 각 플러그인마다 고유한 키가 있습니다.

선택한 파일에 접근할 수 있는 네이티브 앱을 사용하세요. 계정 또는 보고서에 안정적인 document_context를 설정하여 저장된 파일이 올바르게 그룹화되도록 합니다.

한 번만 설정
  1. BestPlugins → Dashboard → Plugins에서 Bubble 앱 프로젝트를 만들거나 선택하십시오.
  2. 이 플러그인을 선택하고 프로젝트 키를 복사하십시오.
  3. Open Bubble → Plugins → this plugin. Paste its project key into licensing_api_key and save.
  4. 요소를 추가하고 앱 데이터를 선택한 뒤 아래 워크플로우를 구축하십시오.
  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.
설치 및 구독

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.

결과를 앱에 저장

예시 LocalAttachment: 소유자, document_context, 저장된 파일 ID, display_name, mime_type 및 size_bytes. 이 ID는 동일한 디바이스와 동일한 계정 또는 보고서에서만 작동합니다. 온라인 첨부 파일의 경우 별도의 워크플로우로 파일을 업로드하고 반환된 온라인 파일 참조를 저장하세요.

실패, 취소 및 복구

취소된 선택기는 operation_cancelled를 반환하며, 양식을 제출하지 않습니다. native_pending=yes 중에는 다른 선택기를 열기 전에 파일 선택기 또는 공유 메뉴가 닫히기를 기다리세요. Clear session는 현재 선택을 초기화하지만 저장된 복사본은 유지합니다. 파일이 누락된 경우 사용자가 다시 선택하도록 합니다.

기능 및 제한

1–20 파일을 한 번에 선택하세요. 파일당 제한: 1 바이트–256 MiB, 선택 시 더 낮은 제한을 적용할 수 있습니다. 파일 유형 필터는 바이러스 검사를 수행하지 않습니다. 디바이스 파일 ID와 경로는 클라우드 다운로드 링크로 작동하지 않습니다. 로컬 복사본은 암호화된 저장소가 아니며 앱 데이터가 삭제되면 손실될 수 있습니다.

설정, 액션 및 결과

Bubble에서 이러한 이름을 사용하세요. 예정 기능은 별도로 표시됩니다.

사용 가능한 베타 설정

요소 설정

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

이벤트

selection_changedfiles_savedlist_loadedfile_restoredfile_deletedshare_sheet_closedoperation_cancelledfiles_error

액션 및 입력값

Pick filesLoad local sourceSelect picked fileSave selection locallyList saved filesRestore saved fileDelete saved copyShare selected fileCancel operationClear session
요소 설정 · 16
source_uritext · 기본값: ""
예시 값file:///app-cache/report.pdf
예시 Bubble 표현Photo Editor's output_uri
선택기 또는 다른 플러그인이 반환한 이 기기에서 읽을 수 있는 파일 위치.
display_nametext · 기본값: ""
예시 값report-photo.jpg
예시 Bubble 표현Selected Attachment's display_name
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
mime_typetext · 기본값: ""
예시 값image/jpeg
예시 Bubble 표현Photo Editor's output_mime
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
document_contexttext · 기본값: "default"
예시 값<current-user-id>
예시 Bubble 표현Current User's unique id
이 계정 또는 레코드에 대한 안정적인 값입니다. 저장된 파일이나 초안을 복원할 때 동일한 값을 사용하십시오.
selected_file_idtext · 기본값: ""
예시 값<returned saved file ID>
예시 Bubble 표현Selected LocalAttachment's local_file_id
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
accepted_mime_types_jsontext · 기본값: "[\"*/*\"]"
예시 값["image/*","application/pdf"]
예시 Bubble 표현Report Settings' accepted_mime_types_json
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
multipleyes_no · 기본값: false
예시 값yes
예시 Bubble 표현Report Settings' allow_multiple_attachments
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
copy_to_cacheyes_no · 기본값: true
예시 값yes
예시 Bubble 표현Report Settings' copy_to_cache
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
max_filesnumber · 기본값: 20
예시 값5
예시 Bubble 표현Report Settings' attachment_limit
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
max_file_bytesnumber · 기본값: 268435456
예시 값10485760
예시 Bubble 표현Report Settings' max_attachment_bytes
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
is_activeyes_no · 기본값: true
예시 값yes
예시 Bubble 표현GuideHost's view_is_active (your yes/no custom state)
이 뷰가 열려 있는 동안 yes로 설정하고, 떠날 때 no로 설정하여 재생 또는 현재 작업이 중지될 수 있게 합니다.
disabledyes_no · 기본값: false
예시 값no
예시 Bubble 표현GuideHost's is_busy (your yes/no custom state)
앱이 바쁘거나 이 작업을 사용할 수 없을 때 요소를 비활성화합니다.
show_controlsyes_no · 기본값: true
예시 값yes
예시 Bubble 표현App Settings' show_editor_controls
내장 컨트롤을 표시하거나 숨깁니다.
languagetext · 기본값: "auto"
예시 값uk
예시 Bubble 표현Current User's preferred_language
language=auto로 설정하면 기기 또는 브라우저의 언어가 지원되는 경우 해당 언어를 따릅니다. 특정 언어를 직접 선택하려면 지원되는 언어 코드를 입력하세요.
ui_text_jsontext · 기본값: ""
예시 값{}
예시 Bubble 표현App Settings' player_labels_json (supported keys only)
지원되는 버튼 레이블이 포함된 선택적 JSON. 비워 두면 내장 텍스트를 사용합니다.
titletext · 기본값: ""
예시 값Lesson 4 — review
예시 Bubble 표현Selected Lesson's name
보이는 앱 텍스트; 비워 두면 지원되는 경우 내장된 현지화된 복사본을 사용합니다. 자격 증명 없음.
액션 및 입력값 · 10
Pick files

동작 매개변수 없음

Load local source
source_uritext · 기본값: —
예시 값file:///app-cache/report.pdf
예시 Bubble 표현Photo Editor's output_uri
선택기 또는 다른 플러그인이 반환한 이 기기에서 읽을 수 있는 파일 위치.
display_nametext · 기본값: —
예시 값report-photo.jpg
예시 Bubble 표현Selected Attachment's display_name
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
mime_typetext · 기본값: —
예시 값image/jpeg
예시 Bubble 표현Photo Editor's output_mime
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
Select picked file
indexnumber · 기본값: —
예시 값0
예시 Bubble 표현Selected row's current_source_index
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
Save selection locally

동작 매개변수 없음

List saved files

동작 매개변수 없음

Restore saved file
file_idtext · 기본값: —
예시 값<returned saved file ID>
예시 Bubble 표현Selected LocalAttachment's local_file_id
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
Delete saved copy
file_idtext · 기본값: —
예시 값<returned saved file ID>
예시 Bubble 표현Selected LocalAttachment's local_file_id
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
confirmyes_no · 기본값: —
예시 값yes — explicit confirmation only
예시 Bubble 표현Confirm Checkbox is checked
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
Share selected file
dialog_titletext · 기본값: —
예시 값Share attachment
예시 Bubble 표현Selected Report's share_title
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
utitext · 기본값: —
예시 값""
예시 Bubble 표현Empty unless your iOS integration supplies a proven UTI
현재 비즈니스 레코드의 값을 사용하고, 아래 제한과 비교해 검증하십시오.
Cancel operation

동작 매개변수 없음

Clear session

동작 매개변수 없음

상태 및 이벤트

상태

status · text

이 작업의 현재 결과입니다. 성공을 저장하기 전에 일치하는 완료 이벤트를 사용하십시오.

is_busy · yes_no

작업이 진행 중입니다. 다른 작업을 시작하기 전에 기다리세요.

native_pending · yes_no

작업이 진행 중입니다. 다른 작업을 시작하기 전에 기다리세요.

operation · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

selection_count · number

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

selected_index · number

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

file_id · text

이 항목 또는 작업의 식별자. 일치하는 앱 기록과 함께 보관하십시오. 불확실한 결과를 재시도할 때 동일한 요청 식별자를 사용하십시오.

local_uri · text

이 장치의 파일 위치입니다. 파일을 온라인에 유지해야 하면 별도로 저장하거나 업로드하십시오.

display_name · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

mime_type · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

mime_source · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

size_bytes · number

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

is_saved_locally · yes_no

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

file_ids · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

file_uris · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

file_names · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

file_mime_types · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

file_sizes · number (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

files_json · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

saved_count · number

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

saved_file_ids · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

saved_file_uris · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

saved_file_names · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

saved_file_mime_types · text (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

saved_file_sizes · number (목록)

선택된 파일들의 목록입니다. 다른 파일 목록에서 동일한 인덱스에 있는 항목은 같은 파일을 가리킵니다.

saved_files_json · text

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

invalid_saved_count · number

선택된 항목의 현재 값입니다. 관련 이벤트 후에 읽으십시오.

share_status · text

이 작업의 현재 결과입니다. 성공을 저장하기 전에 일치하는 완료 이벤트를 사용하십시오.

error_code · text

마지막 작업에 대한 오류 정보입니다. 도움이 되는 메시지를 표시하고 관련 재시도를 제공하십시오.

이벤트

selection_changed

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

files_saved

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

list_loaded

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

file_restored

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

file_deleted

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

share_sheet_closed

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

operation_cancelled

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

files_error

이 이벤트가 발생하면 동일한 요소에서 관련 상태를 읽습니다.

개발자가 묻는 질문

공유는 “보낸”을 의미합니까?

아니요. 운영 체제는 여기서 수신자에게 성공적으로 전달되었다는 신뢰할 만한 확인을 제공하지 않습니다. “공유 시트 닫힘”를 표시하세요.

구독은 어떻게 작동합니까?

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.

관련 가이드

도움을 받으려면 사용 중인 플러그인과 기기, 시도한 작업 및 발생한 상황을 알려 주세요. 개인 데이터가 없는 예시를 사용하십시오. 키나 개인 파일을 절대 공유하지 마세요.