saveBase64Data 함수 호출 시 이미지가 갤러리에 저장되지 않고 OS 공유 시트가 표시되는 현상의 원인과 해결 방법 문의

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

안녕하세요, 토스 개발자 님.

앱인토스 미니앱 “탑승전” 개발자입니다.

문제 상황
@apps-in-toss/web-framework의 saveBase64Data 함수를 사용하여 이미지를 기기 갤러리에 저장하려고 합니다. 그런데 함수 호출 시 이미지가 갤러리에 저장되지 않고, 카카오톡 등 앱을 선택하는 OS 공유 시트가 표시됩니다.

즉, 사용자가 “이미지 저장” 버튼을 누르면 기대하는 동작(갤러리 저장)이 아닌 외부 앱으로 공유하는 화면으로 이동합니다.

현재 코드
import { saveBase64Data } from “@apps-in-toss/web-framework”;
await saveBase64Data({
data: base64ImageData,
fileName: “before_boarding_lockscreen.png”,
mimeType: “image/png”,
});
확인한 사항
검수 승인 완료: 해당 앱은 토스 검수를 통과하여 정책 위반은 아님을 확인했습니다.
웹 다운로드 방식 테스트: saveBase64Data를 스킵하고 웹 다운로드 방식()을 사용하면 공유 시트가 표시되지 않으나, 토스 앱 환경에서는 이미지 저장 자체가 되지 않습니다.
navigate 제거 테스트: 저장 후 페이지 이동 코드를 제거해도 동일한 현상이 발생합니다.
질문
saveBase64Data 함수가 이미지를 갤러리에 저장하는 것이 아니라 OS 공유 시트를 표시하는 것이 의도된 동작인가요?

만약 의도된 동작이 아니라면, 이미지를 갤러리에 직접 저장할 수 있는 올바른 사용법이나 대안 API가 있을까요?

함수명이 saveBase64Data인데 실제 동작이 "공유"라면, 갤러리 저장만 수행하는 별도 API(예: saveToGallery, downloadFile 등)가 있는지 안내 부탁드립니다.

기대하는 동작
이미지 저장 버튼 클릭
→ saveBase64Data 호출
→ 이미지가 갤러리에 저장됨
→ 완료 메시지 표시
실제 동작
이미지 저장 버튼 클릭
→ saveBase64Data 호출
→ OS 공유 시트 표시 (카카오톡, 메시지 등 앱 선택 화면)
→ 사용자가 앱 선택 또는 취소해야 함
환경 정보
SDK 버전: @apps-in-toss/web-framework (최신)
테스트 환경: 토스 샌드박스 앱
OS: iOS / Android 모두 동일 현상
답변 부탁드립니다. 감사합니다.

안녕하세요 :slight_smile:
share() 함수를 호출하지 않았는데, os 공유 시트가 뜨셨을까요 ?!

안녕하세요,.

말씀하신 대로 share() 함수는 호출하지 않았습니다.

현재 코드에서는 saveBase64Data만 호출하고 있습니다:

import { saveBase64Data } from "@apps-in-toss/web-framework";

await saveBase64Data({

data: base64ImageData,

fileName: "before_boarding_lockscreen.png",

mimeType: "image/png",

});

그런데 위 함수를 실행하면 이미지가 갤러리에 저장되는 것이 아니라 **OS 공유 시트(카카오톡, 메시지 등 앱 선택 화면)**가 표시됩니다.

추가로 확인한 사항:

  • saveBase64Data 호출을 주석 처리하면 공유 시트가 표시되지 않습니다.

  • 웹 다운로드 방식(<a download>)으로 대체하면 공유 시트가 표시되지 않으나, 토스 앱 환경에서는 이미지 저장 자체가 동작하지 않습니다.

혹시 saveBase64Data 함수의 내부 동작이 OS 공유 시트를 통해 저장하는 방식인가요? 아니면 제가 사용법을 잘못 이해하고 있는 것일까요?

갤러리에 직접 저장하는 방법이 있다면 안내 부탁드립니다.

아하 :slight_smile: ,
saveBase64Data 함수 내부 동작이 OS 공유시트를 통한 저장 방식이 맞습니다.

답변 감사합니다.

saveBase64Data 함수가 OS 공유 시트를 통한 저장 방식이라는 것을 이해했습니다.

추가로 문의드립니다:

  1. OS 공유 시트를 거치지 않고 이미지를 갤러리에 직접 저장할 수 있는 별도의 SDK 함수가 있을까요? (예: saveToGallery, downloadToDevice 등)

  2. 만약 직접 저장 방법이 없다면, 현재 saveBase64Data유일한 이미지 저장 방식인 것으로 이해해도 될까요?

  3. 혹시 향후 갤러리 직접 저장 기능이 추가될 계획이 있는지도 궁금합니다.

현재 이미지를 저장할 수 있는 다른 SDK 함수는 제공되고 있지 않으며,
갤러리로 직접 저장하는 기능에 대한 논의는 진행된 바가 없습니다 :cry: