[React] 리액트 SNS 공유하기 기능 개발하기 (Web Share API란?)

2024. 11. 14. 20:00·Front-End/React

Web Share API 동작 화면

 

요즘 멋있는 웹에는 위와 같은 SNS 공유 기능이 꼭 들어있는데요.

Web Share API를 사용하면 간단하게 구현할 수 있습니다.

 

웹 표준 기술인 Web Share API는

웹 애플리케이션에서 URL, 텍스트, 이미지 등을

다른 앱으로 공유할 수 있게 해줍니다.

 

기기의 네이티브 공유 인터페이스와 연동되어

별도로 개발하지 않아도 사용자의 기기에서 친숙한

UI를 제공할 수 있는 장점도 있습니다.

 

사용방법 함께 알아봅시다. 😀

 


📝 공식문서

https://developer.mozilla.org/en-US/docs/Web/API/Web_Share_API

 

Web Share API - Web APIs | MDN

The Web Share API provides a mechanism for sharing text, links, files, and other content to an arbitrary share target selected by the user.

developer.mozilla.org

✔ MDN에서 Web Share API의 정보를 확인할 수 있습니다.

 

⦁ 개념

웹 사이트에서 운영체제의 공유 메커니즘을 활용하여 텍스트, 링크, 파일 및 기타 콘텐츠를

시용자가 선택한 앱에 공유할 수 있습니다.

 

⦁ 사용방법

Web Share API에는 2가지 메서드가 존재합니다.

공유를 할 수 있는지 확인하는 canShare()와, 공유하는 share()입니다.

// 사용자의 기기에서 특정 데이터를 공유할 수 있는지 여부를 확인합니다.
// 주로 파일 공유 등 지원 환경이 제한적일 경우 사용됩니다.
navigator.canShare()

// 공유 !
navigator.share()

 

⦁ 데모 보기

https://mdn.github.io/dom-examples/web-share/

Mac 크롬 브라우저 동작 화면


해당 사이트에서 코드가 적용된 예시를 확인할 수 있습니다.

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
'Front-End/React' 카테고리의 다른 글
  • [React] 리액트 QR 코드 스캔하기 (react-qr-reader)
  • [React] 리액트 QR 코드 생성하기 (qrcode.react)
  • [React] Zustand란? 사용하는 이유! (상태 관리 라이브러리, 사용 방법 예시)
  • [React] 리액트 CSS 초기화란? (CSS Reset, 여백 제거)
현기
현기
  • 현기
    현기의 개발블로그
    현기
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • Front-End (39)
        • Next (5)
        • React (8)
        • React Native (11)
        • Flutter (0)
        • Vue (1)
        • JSP (9)
        • HTML, CSS, JS (5)
      • Back-End (16)
        • Node.js (3)
        • Spring (8)
        • Flask (1)
        • AWS (4)
      • DB (5)
        • Oracle (4)
        • MySQL (1)
      • Python (7)
      • Java (27)
        • 자바 이론 (17)
        • 코딩테스트 연습 & 실습 (10)
      • 자료구조 & 알고리즘 (7)
        • 코딩테스트 (6)
        • 알고리즘 (1)
      • 블록체인 (0)
      • 프롬프트 엔지니어링 (0)
      • CS 지식 (5)
      • IT뉴스 (0)
      • 일상 (3)
      • etc (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    서블릿
    Express
    티스토리챌린지
    상속
    react
    next-intl
    DI
    React Native
    스택
    Spring
    오블완
    node.js
    Python
    파이썬
    큐
    리액트 네이티브
    오라클
    JSP
    포스트맨
    Java
    그리디
    react-native-chart-kit
    자바스크립트
    자바 스프링
    React Native Chart
    JDBC
    쓰레드
    IS-A
    자바
    REST API
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
현기
[React] 리액트 SNS 공유하기 기능 개발하기 (Web Share API란?)
상단으로

티스토리툴바