react & typescript를 이용해 모바일 사이즈로 앱을 개발중인데 아래 사진과 같은 공유 및 이미지 저장 기능을 구현해야 하는 상황
일단 공유는 navigator.share를 이용해 간단하게 구현이 가능한데 "이미지 저장"이 아예 뜨지 않았다.
if (navigator.share) {
navigator.share({
title: '제목',
text: '공유내용',
url: 'https://aaa.com',
});
}else{
alert("공유하기가 지원되지 않는 환경 입니다.")
}
(기본적인 navigator.share)
위와 같은 코드는 "이미지 저장"이 뜨지 않는다.
if (navigator.share ) {
navigator.share({
title: '제목',
text: '공유 내용',
files: [file],
});
}else{
alert("공유하기가 지원되지 않는 환경 입니다.")
}
let arr:string[] = dataurl.split(','),
// @ts-ignore
mime = arr[0].match(/:(.*?);/)[1],
bstr = window.atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
const file = new File([u8arr], imgName, {type:mime});
export const share = (dataurl:string, imgName:string) =>{
///url -> file 변경하는 코드
let arr:string[] = dataurl.split(','),
// @ts-ignore
mime = arr[0].match(/:(.*?);/)[1],
bstr = window.atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
const file = new File([u8arr], imgName, {type:mime});
if (navigator.share ) {
navigator.share({
title: '제목',
text: '공유 내용',
files: [file],
});
}else{
alert("공유하기가 지원되지 않는 환경 입니다.")
}
}