이 글의 성격은 무엇인가요?
질문 / 문제 해결
내용을 설명해주세요
안녕하세요. 미니앱 ‘냥톡’(appName: nyangtalk)을 WebView SDK로 개발 중입니다.
앱에서 canvas로 만든 PNG 이미지를 File.saveBase64로 기기에 저장하는 기능이 있습니다. 저장 자체는 정상적으로 됩니다. 다만 저장 과정에서 시스템 공유/저장 시트가 한 번 뜨고, 사용자가 거기서 한 번 더 선택해야 합니다.
■ 환경
- @apps-in-toss/web-framework 3.0.2 (WebView 방식)
- 안드로이드 (삼성), 토스 앱 버전: (여기에 적어주세요)
- 실기기 테스트 번들에서 재현
■ 호출하는 코드
버튼 핸들러가 File.saveBase64 하나만 호출합니다. Share.sendMessage나 navigator.share는 이 경로에서 호출하지 않습니다.
const sdk = await import(‘@apps-in-toss/web-framework’)
const save = sdk.File?.saveBase64
if (typeof save.isSupported === ‘function’ && !save.isSupported()) {
// 미지원 안내
return
}
await save({
data: base64String, // canvas → PNG → base64 (약 110KB)
fileName: nyangtalk-${Date.now()}.png,
mimeType: ‘image/png’,
})
// 여기 이후로 공유 관련 API 호출 없음
■ 확인해 본 것
- 이 버튼의 코드 경로에 공유 API 호출이 없는 것을 확인했습니다.
- window.__appsInTossConstants / window.ReactNativeWebView 존재 여부로 토스 웹뷰 안임을 확인하고 있고, 브리지 호출이 성공(저장됨)하므로 웹뷰 환경 판정 자체는 정상으로 보입니다.
- 웹(토스 밖) 환경에서는 SDK가 로 내려받는 것을 확인했는데, 이 건은 실기기 토스 앱 안에서 발생합니다.
■ 질문
- 안드로이드에서 File.saveBase64 호출 시 시스템 시트가 노출되는 것이 의도된 동작인가요?
- 사용자가 시트에서 한 번 더 선택해야 저장이 완료되는 흐름이라면, 앱에서 미리 안내하려고 합니다. 권장하시는 안내 문구나 UX 패턴이 있을까요?
- iOS에서도 동일한 흐름인가요? (아직 iOS 실기기 확인을 못 했습니다)
- 시트 없이 바로 앨범에 저장되게 하는 옵션이나 다른 API가 있다면 알려주시면 반영하겠습니다.
감사합니다.
appName (선택)
nyangtalk