그래프 이미지를 저장하는 기능을 html2canvas와 file-saver로 구현했다.
그런데 카톡에서 링크를 열어서 그래프를 그리고 저장 버튼을 누르면.. 아무일도 일어나지 않는다!
아이폰 기준 사파리에서는 잘 되는데 ㅠㅡㅠ
찾아보니 이 문제로 이미 많은 개발자들이 고통받고 있었다.
방법을 찾다가 카카오톡 브라우저에 대한 문제 제기해주신 글을 봤다.
위 글을 읽다가 여기서 솔루션을 찾을 수 있었다!
카카오톡/라인 인앱브라우저에서 외부브라우저 띄우기 (2023.09.21 최신 - inapp browser bypassing)
이전부터 카카오톡 등과 같은 메신저에서 인앱브라우저를 강제하는 불합리한 조치를 우회하기위해 다양한 방법을 이 블로그에 포스팅해왔었다. ftp프로토콜을 활용한 우회방법 : https://burndogfath
burndogfather.com
이 코드를 참조해서 사이트 접속 시 첫 페이지에서 아래 코드를 추가해주었다.
useEffect(() => {
const userAgent = navigator.userAgent.toLowerCase();
const isKakaoInApp = userAgent.includes("kakaotalk");
// 카카오톡 인앱 브라우저일 경우에만 실행
if (isKakaoInApp) {
const targetUrl = "https://life-graph.vercel.app/";
window.location.replace(`kakaotalk://web/openExternal?url=${encodeURIComponent(targetUrl)}`);
}
}, []);
브라우저의 정보가 담긴 navigator 객체의 userAgent 속성이 kakaotalk을 포함하는지 여부를 통해 외부 브라우저로 리다이렉트 해준다.
Do it 자바스크립트에서 배운 BOM 내용이어서 반가운 ㅎ
Navigator 객체는 렌더링 엔진의 이름을 보고 웹브라우저 종류를 구별한다.
잘 작동되는것을 확인했다!
다음으로 해결할 부분은 이미지 복사.. 이건 사파리에서도 안된다.
'개발개발 > LifeGraph_인생그래프' 카테고리의 다른 글
[인생 그래프] 텍스트가 그래프 밖으로 튀어나온다 (0) | 2025.02.14 |
---|---|
[인생 그래프] 아이폰 safari에서 이미지 복사가 안됨 - 해결 과정 (0) | 2025.02.13 |
[인생 그래프] SCSS 반응형 디자인 구현하기 (0) | 2025.02.12 |
[인생 그래프] 이모지 피커를 추가하자 (0) | 2025.02.11 |
[인생 그래프] 이미지 저장하기 (html2canvas + file-saver) (0) | 2025.02.11 |