Home - Team-HGD/SniffMEET GitHub Wiki
ํ์ฌ ๋ฐฐํฌ(1.7v) ๊ธฐ์ค ์๋น์ค
๊ฐ๋ตํ ๊ธฐ๋ฅ ์ค๋ช ๐ฑ
- ์จ๋ณด๋ฉ ํ๋ฉด์ผ๋ก ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฐ๋ ค๊ฒฌ ์ ๋ณด๋ง ๊ธฐ์ ํด ์ต๋ช ๋ก๊ทธ์ธ์ด ํ ์ ์์ต๋๋ค.
- ๋๋ฉด์ผ๋ก 5-10cm ์ ๋ ๊ธฐ๊ธฐ๊ฐ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์ ์งํ๋ฉด ์๋ก์ ๋ฐ๋ ค๊ฒฌ ํ๋กํ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ๋ฐ๋ ค๊ฒฌ ํ๋กํ์ ๊ณต์ ํ ์๋ฝํ๋ฉด ๋ฉ์ดํธ ๊ด๊ณ๊ฐ ํ์ฑ๋ฉ๋๋ค.
- ๋ฉ์ดํธ์๊ฒ ์ฐ์ฑ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋ ์ง๋์์ ๋ง๋ ์ฅ์๋ฅผ ์ ํํ๊ณ ๋ฉ์ธ์ง์ ํจ๊ป ์์ฒญ์ ๋ณด๋ ๋๋ค.
- ์ฐ์ฑ ์์ฒญ์ ๋ํด์ ์๋ฝ, ๊ฑฐ์ ์๋ต์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ฐ์ฑ ์์ฒญ์๋ 1๋ถ ๋ต๋ณ ์ ํ์๊ฐ์ด ์์ต๋๋ค. ์ ํ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ๊ฑฐ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์ฐ์ฑ ์์ฒญ, ์๋ฝ, ๊ฑฐ์ ์ ๋ํ ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
์์ฐ ์์ ๐ฅ
| ์จ๋ณด๋ฉ๊ณผ ๋ก๊ทธ์ธ | ๋ฉ์ดํธ ๋งบ๊ธฐ | ์ฐ์ฑ ์์ฒญ | ์ ๋ณด ์์ |
|---|---|---|---|
๋ฉ์ดํธ ๋งบ๊ธฐ ์์ ์ ํ๋กํ๋๋ ๋์
๊ธฐ์ ์ ํฌํจํ ๊ธฐ๋ฅ ์ค๋ช ๐ก
1๏ธโฃ Profile Drop ๊ธฐ๋ฅ
NameDrop ํํ์ ๋ฐฉ์์ผ๋ก ๊ธฐ๊ธฐ๊ฐ ํน์ ์ก์ ์ ๋ํ ๋ฐ์์ผ๋ก ๋ฐ๋ ค๊ฒฌ ํ๋กํ ์นด๋๋ฅผ ๊ณต์ ํ ์ ์๋ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฌ๋์ด ๋๋ฉด์ผ๋ก ๋ง๋ ์๋ก์ ๋ฐ๋ ค๊ฒฌ ํ๋กํ์ ๊ณต์ ํด์ผํฉ๋๋ค.
๋ฐ๋ผ์ ํน์ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ํ๋จํ ์ ์๋ NearbyInteraction๊ณผ ํผ์ด ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๋ฅผ ์งํํ ์ ์๋ MultipeerConnectivity ๊ธฐ์ ์ ์ ํํ์ต๋๋ค.
์๋๋ ๋์ ๋ฐฉ์์ ๋ํ ํ๋ก์ฐ์ ๋๋ค.
- ๊ธฐ๊ธฐ๋ค์ ๊ฐ๊ฐ NISession๊ณผ MPCSession์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ํฉ๋๋ค.
- ๊ฐ ๊ธฐ๊ธฐ๋ค์ MPCSession์ ํตํด Advertising / Browsing ์์ ์ ์ํํฉ๋๋ค.
- ๊ธฐ๊ธฐ๊ฐ ๋ฐ๊ฒฌ๋๋ค๋ฉด Invite ํ๊ณ ์ธ์ ์ ์ฐ๊ฒฐํฉ๋๋ค.
- NISession์ ์์๋๋ฉด ์๋์ผ๋ก ๊ธฐ๊ธฐ๋ง๋ค DiscoveryToken์ ์์ฑํฉ๋๋ค.
- DiscoveryToken์ ๊ธฐ๊ธฐ๋ผ๋ฆฌ ๊ตํํ๊ธฐ ์ํด์ MPCSession์ ์ด์ฉํฉ๋๋ค.
- DiscoveryToken์ด ์ ์์ ์ผ๋ก ๊ตํ๋๋ฉด NISession์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ๊ธฐ๊ธฐ์ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ํ์ ํ ์ ์์ต๋๋ค.
- ์ดํ, ํด๋นํ๋ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์๋ ๊ธฐ๊ธฐ์ MPCSession์ ํตํด ๋ฐ์ดํฐ(ํ๋กํ ์นด๋)๋ฅผ ๊ตํํ๊ฒ ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ตํ์ด ๋ง์น๋ฉด ํ๋กํ ๊ณต์ ๊ฐ ๋์๋ค๋ ๋ฐ์ดํฐ๋ฅผ ์๋๋ฐฉ์๊ฒ ์ ๋ฌํฉ๋๋ค.
- ์๋๋ฐฉ์๊ฒ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๋์๋ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์์ ๋ ์๋๋ฐฉ์ ํ๋กํ์ ๋ฐ์๋ค๋ฉด NI, MPC Session ๋ชจ๋ ์ข ๋ฃ๋ฉ๋๋ค.
2๏ธโฃ Supabase ์๋ฒ ํต์
SniffMEET์ ์๋ฒ ํ๋ก๋ฐ์ด๋๋ก Supabase๋ฅผ ์ ํํ์ต๋๋ค.
-
์ต๋ช ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ์ฌ์ฉ
์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํ ๋ฆฌ์ง์ ์ ๊ทผํ๋ ค๋ฉด ์ธ์ฆ๋ ์ฌ์ฉ์์ด์ด์ผ ํฉ๋๋ค. ํ์ง๋ง ํ์๊ฐ์ ์ ํ์ง ์์๋ ์ฐ๋ฆฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๊ธฐ ์ํด ์ต๋ช ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค.
์ฌ์ฉ์๋ ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ์ ํ์ง ์์๋ ์ด๊ธฐ ์ ๋ณด ์ ๋ ฅ๋ง ํ๋ค๋ฉด ์ธ์ฆ์ ๋ฐ์ ์ ์๋๋ก ๊ตฌํํ์์ต๋๋ค.
-
์ง์ HTTP REST API ํต์ ์ผ๋ก ์๋ฒ์ ํต์
์ ํฌ HGD ํ์ third-party ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ๋ง์๋ ๋ฃฐ์ด ์์์ต๋๋ค. ๋ฐ๋ผ์ Supabase SDK ๋ํ ์ฌ์ฉํ์ง ์์์ผ๋ฉฐ ์ด์ ์ง์ HTTP REST API๋ก ์๋ฒ์ ํต์ ํฉ๋๋ค.
-
Supabase Network Layer SniffMEET์ Supabase์์ ํต์ ๋ ์ด์ด๋ ํฌ๊ฒ AuthManager, DatabaseManager, StorageManager, SessionManager๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๊ฐ Manager๋ค์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
-
AuthManager๋ ์ฌ์ฉ์์ ์ธ์ฆ์ ๋ด๋นํฉ๋๋ค.
์๋ฒ์ ์ต๋ช ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํ๊ณ ์ธ์ ์ ๋ฐ์์ค๋ฉฐ, ์ฑ์ด ๋ค์ ์คํ๋์์ ๋ ์ธ์ ์ ๋ณต์ํ๊ณ , ์ธ์ ์ด ๋ง๋ฃ๋์์ ๋ ์ธ์ ์ ๊ฐฑ์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
-
DatabaseManager๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
url, ํค๋, ์ฟผ๋ฆฌ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ๊ณ Supabase ์๋ฒ์ ํต์ ํ์ฌ ์๋ฒ์ ํ ์ด๋ธ์ ์ฝ์ /๊ฐฑ์ /์์ฒญ ์์ ์ ํ๊ฒ ๋ฉ๋๋ค.
-
StorageManager๋ ์๋ฒ์ ์คํ ๋ฆฌ์ง์ ์ ๊ทผํ์ฌ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋/๋ค์ด๋ก๋ ํ๋ ์ญํ ์ ํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก url, ํค๋, ์ฟผ๋ฆฌ์ ๋ํ ์ ๋ณด๋ฅผ ํตํด Supabase ์๋ฒ์ ํต์ ํ๊ฒ ๋ฉ๋๋ค.
-
Supabase์ ๋ชจ๋ ํต์ ์์ ์ SessionManager๊ฐ ๊ด๋ฆฌํ๋ ์ธ์ ์ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
SessionManager๋ ํ์ฌ ์ธ์ ์ ๋ง๋ฃ ์๊ฐ์ ํ์ธํ๊ณ , ๊ฐฑ์ ์ด ํ์ํ๋ฉด ๊ฐฑ์ ์ ์์ฒญํ๋ ์ญํ ์ ํฉ๋๋ค.
-
-
Supabase ์ ์ ์ธ์ฆ ๊ณผ์
Supabase์ ์ ์ ์ธ์ฆ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์
anon-key์ ์ ์ ์ JWT ํ ํฐ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.์๋ฒ์์ ์ธ์ ์ ๋ฐ์์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ฑ๊ณผ ์ธ์ ๊ฐฑ์ ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ ๋ก์ง์ผ๋ก ์ด๋ฃจ์ด ์ง๋๋ค.
| ์ต๋ช ๋ก๊ทธ์ธ | ์ธ์ ๊ฐฑ์ |
|---|---|
-
์ ์ ์์ฑ
๊ณต๊ฐ ํค์ธ anon-key๋ฅผ ์ด์ฉํ์ฌ ์์ ์๋ก์ด ์ ์ ์ ๋ํ ์ธ์ ์ ๋ฐ์์ค๋ ์์ ์ ํฉ๋๋ค.
์๋ฒ์ auth ํ ์ด๋ธ์ ์๋ก์ด ์ ์ ๊ฐ ์์ฑ๋๊ฒ ๋๋ฉฐ, ์๋ต์ผ๋ก JWT, ๋ฆฌํ๋ ์ ํ ํฐ, ์ ์ ์ ๋ณด์ ๊ฐ์ด ์ธ์ ์ ๊ตฌ์ฑํ๋ ์ ๋ณด๊ฐ ์ค๊ฒ ๋ฉ๋๋ค. AuthManager๋ ์ด ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ Session์ ๋ง๋ค์ด SessionManager์ ์ ๋ฌํฉ๋๋ค.
-
์ธ์ ๊ฐฑ์
Refresh Token์ ์ด์ฉํ์ฌ ํ์ฌ ์ ์ ์ ์ธ์ ์ ๊ฐฑ์ ํ๋ ์์ ์ ํ๊ฒ ๋ฉ๋๋ค.
์๋ฒ์ Refresh Token์ ์ด์ฉํ์ฌ ์์ฒญ์ ํ๊ฒ ๋๋ฉด, ์ธ์ ์ด ๋ง๋ฃ๋ ์ ์ ์ ์๋ก์ด JWT, ๋ฆฌํ๋ ์ ํ ํฐ, ์ ์ ์ ๋ณด๋ฅผ ๊ฐฑ์ ๋ฐ์ ์ฌ ์ ์์ผ๋ฉฐ, ์ต๋ช ๋ก๊ทธ์ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก AuthManager๊ฐ ์ด ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ Session์ ์๋ก ๋ง๋ค์ด SessionManager๋ก ์ ๋ฌํฉ๋๋ค.
3๏ธโฃ ์ฐ์ฑ ์์ฒญ/์๋ฝ ๊ธฐ๋ฅ
| ์ฐ์ฑ ์์ฒญ ํ๋ฉด | ์ํ๋ ์ฅ์ ์ ํ | ์ฅ์์ ๋ฉ์ธ์ง ์ ๋ ฅ ํ ์ฐ์ฑ ์์ฒญ |
|---|---|---|
- ๋ฉ์ดํธ ๊ด๊ณ์ธ ์ ์ ์๊ฒ๋ง ์ฐ์ฑ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
- ์ฐ์ฑ ์์ฒญ์ ๋ง๋ ์ฅ์๋ฅผ ์ ํํ๊ณ ๊ฐ๋จํ ๋ฉ์ธ์ง์ ํจ๊ป ๋ณด๋ผ ์ ์์ต๋๋ค.
- ์ฐ์ฑ ์ฅ์๋ฅผ ์ ํํ๋ ๊ธฐ๋ฅ์ MapKit๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ์ฌ์ฉ์์ ํ์ฌ ์์น ๊ถํ์ ๋ฐ๊ณ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉ์์ ์์น๋ฅผ ์ง๋์ ๋ณด์ด๋๋ก ๊ตฌํํ์์ต๋๋ค.
| ์ฐ์ฑ ์๋ต ์๋ฆผ | ์ฐ์ฑ ์์ฒญ ์๋ต ํ์ธ | ์๋ฝ ํน์ ์๋ต | ์ ํ ์๊ฐ ์ด๊ณผ์ ์๋ ๊ฑฐ์ ์ฒ๋ฆฌ |
|---|---|---|---|
- ์๋๋ฐฉ์ด ์ฐ์ฑ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ตํ ์ ์์ต๋๋ค.
- ์ฐ์ฑ ์์ฒญ์ ๋ํ ์์น๋ ํ์ธํ ์ ์์ต๋๋ค.
- ์๋ต์๋ ์ ํ์๊ฐ์ด ์์ด ์ฐ์ฑ
์์ฒญ ๋ณด๋ด๋ ์๊ฐ๋ถํฐ 1๋ถ ์์ ์๋ตํ์ง ์์ผ๋ฉด ์๋ ๊ฑฐ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- ์ ํ์๊ฐ์ 1์ด ๋ง๋ค ๊ฐ์์ํค๊ธฐ ์ํด
Just๋ฅผ ์ด์ฉํ์ฌ ์ฆ์ ์ฒซ ๊ฐ์ ๋ฐํ ํ, 1์ด ๋ง๋ค publishํ๋ฉด ์ ํ ์๊ฐ์ด ์ด๊ณผ๋ ๊ฒฝ์ฐ์๋ ์๋ ๊ฑฐ์ ์ฒ๋ฆฌํ๋๋ก ๊ตฌํํ์ต๋๋ค.
- ์ ํ์๊ฐ์ 1์ด ๋ง๋ค ๊ฐ์์ํค๊ธฐ ์ํด
4๏ธโฃ ์๋ฆผ ๊ธฐ๋ฅ
์๋ฆผ ์๋ฒ์ ์ฐ์ฑ ์์ฒญ์ postํ๋ฉด ์๋์ ๊ฐ์ ํ๋ก์ฐ๋ก ๋ฉ์ดํธ์๊ฒ ์๋ฆผ์ ์ ์กํฉ๋๋ค.
- receiver์ id ๊ฐ์ ํตํด Supabase DB์์ device token์ ๊ฒ์ํฉ๋๋ค.
- device token์ ์ฐพ์ ๊ฒฝ์ฐ notification ํ ์ด๋ธ์ ์๋ฆผ์ ์ถ๊ฐํฉ๋๋ค.
- APNs์ ์๋ฆผ์ ๋ณด๋ ๋๋ค.
๋ฉ์ดํธ๊ฐ 1๋ถ ์์ ์ฐ์ฑ ์์ฒญ์ ๋ํ ์๋ต์ ํ์ง ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์๋ฒ์์ ๊ฑฐ์ ํฉ๋๋ค.
- ์ฐ์ฑ ์์ฒญ์ ๋ฐ์ผ๋ฉด ๊ฑฐ์ ํ๋ Task๋ฅผ 1๋ถ ๋ค ์ค์ผ์ค์ ๋ฑ๋กํฉ๋๋ค.
- 1๋ถ ๋ค, ๊ฑฐ์ ๋ก์ง ์คํ ์ง์ walk_request ํ ์ด๋ธ์ ์กฐํํด ์์ฒญ์ ์ํ๊ฐ pending์ธ์ง ํ์ธํฉ๋๋ค.
- ์์ฒญ์ ์ํ๊ฐ pending์ธ ๊ฒฝ์ฐ ์ฐ์ฑ ์์ฒญ ๊ฑฐ์ ๋ก์ง์ ์ํํฉ๋๋ค.
๐ ๐ ๋ฌธ์
| ํ๋ ธ์ | Wiki | ๋์์ธ | ํ๋ก๋ํธ ๋ฐฑ๋ก๊ทธ |
|---|
๋ง์ง๋ง ์์ ์ผ 2024.12.06.