SSTRACK

์ฝ˜ํ…์ธ  ๋“ฑ๊ธ‰
์ „์ฒด์ด์šฉ๊ฐ€
10+
๋‹ค์šด๋กœ๋“œ
์ฝ˜ํ…์ธ  ๋“ฑ๊ธ‰
์ „์ฒด์ด์šฉ๊ฐ€
์œ„์น˜๋ฅผ ๊ณต์œ ํ•จ
์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€
์Šคํฌ๋ฆฐ์ƒท ์ด๋ฏธ์ง€

์•ฑ ์ •๋ณด

๊ฐœ์š”
์ด ๋ฌธ์„œ์—์„œ๋Š” ์‚ฌ์šฉ์ž ์œ„์น˜, ์‹œ๊ฐ„ ๋ฐ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ์ถ”์ ์„ ์‹œ์ž‘ ๋ฐ ์ค‘์ง€ํ•˜๊ณ , API๋ฅผ ํ†ตํ•ด ์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฃผ๊ธฐ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ , ์ถ”์ ์ด ํ™œ์„ฑํ™”๋  ๋•Œ ์ •๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ง‘๋˜๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


ํŒจํ‚ค์ง€
์ตœ์ข… ํŒจํ‚ค์ง€ ๋ชฉ๋ก:
@react-native-async-storage/async-storage
@react-native-community/์œ„์น˜์ •๋ณด
@react-native-masked-view/masked-view
@react-navigation/ํ•˜๋‹จ ํƒญ
@react-navigation/native
@react-navigation/๋„ค์ดํ‹ฐ๋ธŒ-์Šคํƒ
@๋ฐ˜์‘ ํƒ์ƒ‰/์Šคํƒ
ํ•˜๋ฒ„์‹ 
jwt-๋””์ฝ”๋“œ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฐ๊ฒฝ ์ž‘์—…
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฐ๊ฒฝ ํƒ€์ด๋จธ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ-base64
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ฐจํŠธ ํ‚คํŠธ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ˆœํ™˜ ์ง„ํ–‰ ํ‘œ์‹œ๊ธฐ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์˜ค์ฝ”๋”ฉ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์œ„์น˜ ์ •๋ณด ์„œ๋น„์Šค
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ œ์Šค์ฒ˜ ํ•ธ๋“ค๋Ÿฌ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์˜์žฌ ์ฐจํŠธ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์ด๋ฏธ์ง€ ์„ ํƒ๊ธฐ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋งต
๋ฐ˜์‘ ๊ธฐ๋ณธ ๊ถŒํ•œ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์žฌํ™œ์„ฑํ™”
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ํ™”๋ฉด
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ์„ผ์„œ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ํ”๋“ค๊ธฐ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ-svg-๋ณ€ํ™˜๊ธฐ
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฒกํ„ฐ ์•„์ด์ฝ˜
๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ ๋น„์ „ ์นด๋ฉ”๋ผ


์—”์ง„
Node.js
๋ฒ„์ „: >=18
์„ค๋ช…: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” Node.js ๋ฒ„์ „ 18 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ


ํ™ˆ ํ™”๋ฉด
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™ˆ ํ™”๋ฉด์€ ์œ„์น˜ ์ถ”์  ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ถ”์  ์‹œ์ž‘ ๋ฐ ์ค‘์ง€, ์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ง€๋„์— ํ‘œ์‹œ, ์„ธ์…˜ ์ค‘ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ๋ฐ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋Šฅ
์ฝ๊ธฐ๋ฐ์ดํ„ฐ
์„ค๋ช…: ์ธ์ฆ์„ ์œ„ํ•ด AsyncStorage์—์„œ ์‚ฌ์šฉ์ž ํ† ํฐ์„ ์ฝ์Šต๋‹ˆ๋‹ค.
ํ•ธ๋“ค ์‹œ์ž‘ ์ถ”์ ๊ธฐ
์„ค๋ช…: ์‚ฌ์šฉ์ž ์œ„์น˜ ์ถ”์ ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ์—”๋“œ API์— POST ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ์ถ”์  ์„ธ์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
HandlePauseTracker
์„ค๋ช…: ์‚ฌ์šฉ์ž ์œ„์น˜ ์ถ”์ ์„ ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ์—”๋“œ API์— POST ์š”์ฒญ์„ ๋ณด๋‚ด ์ถ”์  ์„ธ์…˜์„ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ•ธ๋“ค ์—…๋ฐ์ดํŠธ ์œ„์น˜
์„ค๋ช…: ์—…๋ฐ์ดํŠธ๋œ ์œ„๋„, ๊ฒฝ๋„ ๋ฐ ์œ„์น˜ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ API์— POST ์š”์ฒญ์„ ๋ณด๋‚ด ์‚ฌ์šฉ์ž์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
๊ณ„์‚ฐ๊ฑฐ๋ฆฌ
์„ค๋ช…: Haversine ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ์ง€๋ฆฌ์  ์ขŒํ‘œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
startForegroundLocationUpdates
์„ค๋ช…: ์žฅ์น˜์˜ ์ง€๋ฆฌ์  ์œ„์น˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ธฐ์ ์œผ๋กœ ์ „๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
stopForegroundLocation์—…๋ฐ์ดํŠธ
์„ค๋ช…: ์ „๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์œ„์น˜ ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ์„ค์ •๋œ ๊ฐ„๊ฒฉ์„ ์ง€์›๋‹ˆ๋‹ค.
์‹œ์ž‘์œ„์น˜์ถ”์ 
์„ค๋ช…: ์ „๊ฒฝ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ์ถ”์ ํ•˜๋Š” ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•˜์—ฌ ์œ„์น˜ ์ถ”์ ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ค‘์ง€์œ„์น˜ ์ถ”์ 
์„ค๋ช…: ์ „๊ฒฝ ์œ„์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ค‘์ง€ํ•˜๊ณ , ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , ์ตœ์ข… ์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฑ์—”๋“œ API๋กœ ์ „์†กํ•˜์—ฌ ์œ„์น˜ ์ถ”์ ์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.




ํƒ€์ž„๋ผ์ธ ํ™”๋ฉด
๊ธฐ๋Šฅ
์ฝ๊ธฐ ๋ฐ์ดํ„ฐ
์„ค๋ช…: ์ธ์ฆ์„ ์œ„ํ•ด AsyncStorage์—์„œ ์‚ฌ์šฉ์ž ํ† ํฐ์„ ์ฝ์Šต๋‹ˆ๋‹ค.
๊ณ„์‚ฐ์ด๊ฑฐ๋ฆฌ
์„ค๋ช…: ์ถ”์  ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋™ํ•œ ์ด ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉํšจ๊ณผ
์„ค๋ช…: ์ถ”์  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๊ตฌ์„ฑ ์š”์†Œ ๋งˆ์šดํŠธ์—์„œ readData ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.




ํ™œ๋™ ํ™”๋ฉด
๊ธฐ๋Šฅ

ํ† ๊ธ€์‡ผ1
์„ค๋ช…: ์—ฐ๋„ ์„ ํƒ์„ ์œ„ํ•œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ† ๊ธ€์‡ผ2
์„ค๋ช…: ์›” ์„ ํƒ์„ ์œ„ํ•œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ† ๊ธ€์‡ผ3
์„ค๋ช…: ๋‚ ์งœ ์„ ํƒ์„ ์œ„ํ•œ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์˜ ํ‘œ์‹œ ์—ฌ๋ถ€๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์„ธํŠธ๋ฐ์ด
์„ค๋ช…: ํ™œ๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
setMonth
์„ค๋ช…: ํ™œ๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ๋‹ฌ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์„ธํŠธ์—ฐ๋„
์„ค๋ช…: ํ™œ๋™ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์„ ํƒํ•œ ์—ฐ๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.


ํ”„๋กœํ•„ ํ™”๋ฉด
๊ธฐ๋Šฅ
getToken
์„ค๋ช…: AsyncStorage์—์„œ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ํ† ํฐ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
ํ† ๊ธ€Is๋กœ๊ทธ์ธ
์„ค๋ช…: ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ† ๊ธ€์‚ฌ์šฉ์ž๋กœ๊ทธ์ธ์ƒํƒœ
์„ค๋ช…: ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ์ด์— ๋”ฐ๋ผ AsyncStorage๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
์—…๋ฐ์ดํŠธ ๋‚ ์งœ
2026. 3. 4.

๋ฐ์ดํ„ฐ ๋ณด์•ˆ

๋ณด์•ˆ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ ๋ฐ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ์‹์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ณด์•ˆ ๊ด€ํ–‰์€ ์‚ฌ์šฉ์ž์˜ ์•ฑ ์‚ฌ์šฉ, ์ง€์—ญ, ์—ฐ๋ น์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ •๋ณด์ด๋ฉฐ ์ถ”ํ›„ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ œ3์ž์™€ ๊ณต์œ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์—†์Œ
๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ณต์œ ๋ฅผ ์„ ์–ธํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ์ˆ˜์ง‘์„ ์„ ์–ธํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.
์ „์†ก ์ค‘ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋จ
๋ฐ์ดํ„ฐ ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ

UI Improvements & Bug Fixes.
์ฝ˜ํ…์ธ  ๋“ฑ๊ธ‰
์ „์ฒด์ด์šฉ๊ฐ€
์œ„์น˜๋ฅผ ๊ณต์œ ํ•จ
์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

์•ฑ ์ง€์›

์ „ํ™”๋ฒˆํ˜ธ
+16479300988
๊ฐœ๋ฐœ์ž ์†Œ๊ฐœ
I8IS Inc
support@sstrack.io
4370 Steeles Ave W Unit 204 Woodbridge, ON L4L 4Y4 Canada
+92 334 0370181