2025 . ์˜ค์€

repo

์ธ์•ฑ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ž ํŠ•๊ฒจ๋ฒ„๋ฆฌ๊ธฐ

๐Ÿ˜‚ ๋ฌธ์ œ) ํŠน์ • ๊ธฐ๊ธฐ + ์ธ์•ฑ์—์„œ navigator์•ˆ๋จ

์•ˆ๋“œ๋กœ์ด๋“œ ์˜› ๊ธฐ์ข… ๋“ฑ ํŠน์ • ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ ์ค‘ ์ธ์•ฑ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” 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 ์„ ์“ฐ๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ngrok ์„ค์น˜ && ํ† ํฐ

brew install ngrok

ngrok ์„ค์น˜ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋กœ๊ทธ์ธ ํ•œํ›„์—

ngrok config add-authtoken YOUR_NGROK_AUTH_TOKEN

์ € ํ† ํฐ ๋ถ€๋ถ„์— ๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ์„ ๋„ฃ์–ด ์ค๋‹ˆ๋‹ค.

2๏ธโƒฃ ํฌ์›Œ๋”ฉ

ngrok http 192.168.0.xx:5173

๋งŒ์•ฝ 5173 ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์•ฑ์„ ํฌ์›Œ๋”ฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋จผ์ € ๋กœ์ปฌ์—์„œ ๋„์šด ๋’ค ์œ„์ฒ˜๋Ÿผ ํ•˜๋ฉด ๋์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์–ด์ฉŒ๊ตฌ์ €์ฉŒ๊ตฌ.ngrok-free.app ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์ด ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•˜๋ฉด ๋ ์ž…๋‹ˆ๋‹ค.