์๋๋ก์ด๋ ์ ๊ธฐ์ข ๋ฑ ํน์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ์ค ์ธ์ฑ ๋ธ๋ผ์ฐ์ ์์๋ navigator.share ๊ฐ ์๋ ๋๊ฐ ์์ต๋๋ค.
์ด๋ด๋ ์ฌ์ฉ์๋ฅผ ์ธ์ฑ๋ธ๋ผ์ฐ์ ์์ ์์ ํ๊ฒจ๋ฒ๋ฆฌ๋ ๋ฐฉ๋ฒ์ธ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
๋ฐฉ๋ฒ์ ๊ทธ๋ฅ ์๋ ์ฝ๋๋ฅผ App.tsx ํน์ Root ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ์ ๋ฃ์ผ๋ฉด ๋ฉ๋๋ค.
// ์๋๋ก์ด๋ ์น๋ทฐ์์ navigator.share๊ฐ ์ง์๋์ง ์์ ๋ ๋์ฒด ๊ณต์ ๋ฐฉ๋ฒ
const handleShareIntent = () => {
const currentUrl = window.location.href; // ํ์ฌ ํ์ด์ง URL
const hostname = window.location.hostname; // ํ์ฌ ํธ์คํธ๋ช
// Intent URL ์์ฑ - ๋์ ํธ์คํธ๋ช
์ฌ์ฉ ๋ฐ HTTPS ์คํด ์ ์ฉ
const intentUrl = `intent://${hostname}/#Intent;scheme=https;S.browser_fallback_url=${encodeURIComponent(currentUrl)};end;`;
// ์๋๋ก์ด๋ ํ๊ฒฝ์์๋ง ๋์, ํน์ ์ฑ์ผ๋ก ์ธํ
ํธ ํธ์ถ
window.location.href = intentUrl;
};
useEffect(() => {
// navigator.share API๊ฐ ์๋ ๊ฒฝ์ฐ intent ๋ฐฉ์ ์ฌ์ฉ
if (!navigator.share) {
handleShareIntent();
}
}, []);
๊ทธ๋ ์ง๋ง ๋ ํฐ ๋ฌธ์ ๋ ์ด๊ฒ์ด ์๋๋์ง ์ค์ ๋ก ํ ์คํธํด ๋ณผ ๋ ๋ฐ์ํฉ๋๋ค.
ํ ์คํธ์ ์๋ฆฌ๋ ์ด๋ฌํฉ๋๋ค. ๋ฆฌ์กํธ๋ ๋ญ๋ ์ฑ์ ๋ก์ปฌ์์ ๋์ฐ๋๋ฐ https ๋ก ๋์์ผ ํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ฐพ์ผ๋ฉด ๋ง์ด ๋์ค๊ณ ์ด๋ ต๋ค๊ธฐ ๋ณด๋จ ๊ท์ฐฎ์๋ฐ
์ด๋ ๊ฒ ๋์๋ ์ธ์ฆ์ ๋ฌธ์ ๋ก ์ธํด ์ค์ ๊ธฐ๊ธฐ์์ ํ ์คํธ๊ฐ ์ฌ์ค์ ์๋ฉ๋๋ค.
์ธ์คํ๊ทธ๋จ ํํ์์ ํ ์คํธ์ฉ ๋งํฌ๋ฅผ ์์๋ก ๋ฃ๊ณ ๋ค์ด๊ฐ ๋ด๋ ์ธ์ฆ์ ๋ฌธ์ ๋ก ์๋ฌด๊ฒ๋ ๋จ์ง ์์ต๋๋ค.
์ด๋ด๋ ngrok ์ ์ฐ๋ฉด ํธ๋ฆฌํ๊ฒ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ์ต๋๋ค.
brew install ngrok
ngrok ์ค์นํ ๋ธ๋ผ์ฐ์ ์์ ๋ก๊ทธ์ธ ํํ์
ngrok config add-authtoken YOUR_NGROK_AUTH_TOKEN
์ ํ ํฐ ๋ถ๋ถ์ ๋ฐ๊ธ๋ฐ์ ํ ํฐ์ ๋ฃ์ด ์ค๋๋ค.
ngrok http 192.168.0.xx:5173
๋ง์ฝ 5173 ์ผ๋ก ์คํ๋๊ณ ์๋ ์ฑ์ ํฌ์๋ฉํ๊ณ ์ถ๋ค๋ฉด, ๋จผ์ ๋ก์ปฌ์์ ๋์ด ๋ค ์์ฒ๋ผ ํ๋ฉด ๋์ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด์ฉ๊ตฌ์ ์ฉ๊ตฌ.ngrok-free.app ๊ฐ์ ํํ๋ก ์ฃผ์๋ฅผ ์๋ ค์ค๋๋ค.
์ด ์ฃผ์๋ฅผ ์ด์ฉํด์ ํ ์คํธ ํ๋ฉด ๋ ์ ๋๋ค.