본문으로 건너뛰기
Unveilydocs

공유 & 저장

콘텐츠를 네이티브 공유 시트로 내보내거나, 갤러리·다운로드 폴더에 저장합니다.

개요

웹에서 만든 이미지·파일·텍스트·URL을 네이티브 공유 시트로 다른 앱에 보내거나, 갤러리(사진)·다운로드 폴더에 저장합니다. openFileSelector가 콘텐츠를 가져오는(input) 브릿지라면, 이 브릿지는 콘텐츠를 내보내는(output) 짝입니다.

메서드지원 타입AndroidiOS
shareimage · file · text · url
saveToDeviceimage · file

지원 플랜: Basic 이상

unveilyBridge는 WebView에 자동 주입됩니다. 별도 초기화 없이 즉시 사용할 수 있습니다.

사전 준비

Android

  • share: 추가 권한이 필요 없습니다.
  • saveToDevice: Android 10(API 29) 이상은 권한이 필요 없습니다. Android 9(API 28) 이하에서만 WRITE_EXTERNAL_STORAGE가 필요하며, SDK가 실행 시점에 자동으로 권한을 요청합니다.

iOS

  • share: 추가 권한이 필요 없습니다.
  • saveToDevice(image): 사진 앨범에 저장하므로 Info.plist에 다음 설명이 필요합니다.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>생성한 콘텐츠를 사진 앨범에 저장합니다.</string>
  • saveToDevice(file): 파일 앱(Files)에 저장하며 별도 권한이 필요 없습니다.

공유하기 — share

콘텐츠를 네이티브 공유 시트로 넘깁니다. 옵션은 객체로 전달합니다.

// 텍스트 / URL 공유
window.unveilyBridge.share({
  type: "url",
  data: "https://example.com/article/42",
  callback: "onShareResult"
});

// 이미지 공유 (base64 또는 로컬 경로/URI)
window.unveilyBridge.share({
  type: "image",
  data: base64OrPath,       // "data:image/png;base64,..." 또는 "/path", "content://..."
  mimeType: "image/png",
  filename: "receipt.png",
  callback: "onShareResult"
});
옵션타입설명
typestring'image' · 'file' · 'text' · 'url'
datastringtext·url → 문자열. image·file → base64(원문 또는 data URI) 또는 로컬 경로/URI (/…, file://…, content://…)
mimeTypestring(선택) 예: image/png, application/pdf
filenamestring(선택) 공유 파일 이름
callbackstring결과를 받을 전역 함수 이름. 생략 시 'onShareResult'

용량이 큰 이미지·파일은 base64 대신 로컬 경로/URI로 전달하세요. base64는 크기가 약 33% 커져 큰 미디어에서 메모리 문제가 생길 수 있습니다.


디바이스에 저장 — saveToDevice

이미지는 갤러리(사진), 파일은 다운로드 폴더Unveily 하위 폴더에 저장합니다.

// 이미지를 갤러리에 저장
window.unveilyBridge.saveToDevice({
  type: "image",
  data: base64OrPath,
  mimeType: "image/png",
  filename: "chart.png",
  callback: "onSaveResult"
});

// 파일을 다운로드에 저장
window.unveilyBridge.saveToDevice({
  type: "file",
  data: base64OrPath,
  mimeType: "application/pdf",
  filename: "invoice.pdf",
  callback: "onSaveResult"
});
옵션타입설명
typestring'image' · 'file'
datastringbase64(원문 또는 data URI) 또는 로컬 경로/URI
mimeTypestring(선택) 기본값: 이미지 image/png, 파일 application/octet-stream
filenamestring(선택) 저장 파일 이름
callbackstring결과를 받을 전역 함수 이름. 생략 시 'onSaveResult'

콜백 결과

callback으로 지정한 전역 함수가 결과 객체를 인자로 호출됩니다.

function onShareResult(result) {
  if (result.success) {
    // 완료
  } else if (result.canceled) {
    // 사용자가 취소함 (iOS)
  } else {
    console.log("실패:", result.error);
  }
}
결과의미
{ success: true }성공
{ success: false, canceled: true }사용자가 취소함
{ success: false, error: "<코드>" }실패 (예: invalid_data, unsupported_type)

플랫폼 차이 — Android 공유 시트는 사용자가 어떤 앱을 선택했는지·취소했는지를 안정적으로 알려주지 못하므로, sharesuccess는 "공유 시트가 열렸음"을 의미합니다. iOS는 완료/취소를 구분해 canceled를 보고합니다. saveToDevice는 양 플랫폼 모두 실제 저장 성공/실패를 정확히 보고합니다.

On this page