요즘 멋있는 웹에는 위와 같은 SNS 공유 기능이 꼭 들어있는데요.
Web Share API를 사용하면 간단하게 구현할 수 있습니다.
웹 표준 기술인 Web Share API는
웹 애플리케이션에서 URL, 텍스트, 이미지 등을
다른 앱으로 공유할 수 있게 해줍니다.
기기의 네이티브 공유 인터페이스와 연동되어
별도로 개발하지 않아도 사용자의 기기에서 친숙한
UI를 제공할 수 있는 장점도 있습니다.
사용방법 함께 알아봅시다. 😀
📝 공식문서
https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_API
✔ MDN에서 Web Share API의 정보를 확인할 수 있습니다.
⦁ 개념
웹 사이트에서 운영체제의 공유 메커니즘을 활용하여 텍스트, 링크, 파일 및 기타 콘텐츠를
시용자가 선택한 앱에 공유할 수 있습니다.
⦁ 사용방법
Web Share API에는 2가지 메서드가 존재합니다.
공유를 할 수 있는지 확인하는 canShare()와, 공유하는 share()입니다.
// 사용자의 기기에서 특정 데이터를 공유할 수 있는지 여부를 확인합니다.
// 주로 파일 공유 등 지원 환경이 제한적일 경우 사용됩니다.
navigator.canShare()
// 공유 !
navigator.share()
⦁ 데모 보기
https://mdn.github.io/dom-examples/web-share/
해당 사이트에서 코드가 적용된 예시를 확인할 수 있습니다.
Mac의 크롬브라우저에서도 잘 동작하네요.
⦁ 브라우저 호환성
브라우저 호환성이 가장 중요한 부분입니다. 개발하시기 전에 꼭 확인하세요!
조금 더 디테일한 지원 범위를 확인하고 싶다면 Caniuse 사이트를 방문해 보세요.
⦁ 보안 사항
1. Web Share API는 HTTPS로 제공되어야 합니다.
하지만 로컬 개발 환경에서도 사용할 수 있도록 웹 사이트가 localhost라면 잘 동작합니다.
2. 부정 사용을 막기 위해 사용자의 입력 동작(click 이벤트 등)에만 반응하도록 설계되어 있습니다.
⦁ 사용 주의사항
모든 브라우저에서 지원하는 것은 아니기 때문에,
지원하지 않는 경우에 대한 예외 처리를 꼭 추가해야 합니다.
예를들어, 클립보드에 복사한다거나 직접 만든 Modal을 띄운다 등이 있습니다. 😀
⦁ 소스코드
// 공유 기능
const handleShare = async link => {
// Web Share API 지원 여부 판별
if (!navigator.share) {
// 지원하지 않을 시 실행할 대안
handleCopyClipBoard(link);
} else {
try {
await navigator.share({ url: link });
} catch (err) {
console.error('Share failed:', err);
}
}
};
// 대안(클립보드 복사 등)
const handleCopyClipBoard = async link => {
try {
await navigator.clipboard.writeText(link);
} catch (err) {
console.error('Copy to clipboard failed:', err);
}
};
참고 문헌 :
https://developer.mozilla.org/ko/docs/Web/API/Navigator/share
'Front-End > React' 카테고리의 다른 글
[React] 리액트 QR 코드 스캔하기 (react-qr-reader) (6) | 2024.10.31 |
---|---|
[React] 리액트 QR 코드 생성하기 (qrcode.react) (7) | 2024.10.29 |
[React] Zustand란? 사용하는 이유! (상태 관리 라이브러리, 사용 방법 예시) (3) | 2024.03.14 |
[React] 리액트 CSS 초기화란? (CSS Reset, 여백 제거) (2) | 2023.10.12 |
[React & Vue] 조건부 렌더링이란? (사용 예시, 사용 목적) (2) | 2023.07.14 |