ProfileDrop - Team-HGD/SniffMEET GitHub Wiki
๊ฐ์
๐Name Drop ๊ธฐ๋ฅ์ฒ๋ผ ๋์ํ๋ ์ฐ๋ฆฌ๋ง์ ProfileDrop ๊ธฐ๋ฅ ๊ตฌํ
๋์
NameDrop ํํ์ ๊ธฐ๋ฅ์ ๋ฉ์ดํธ ์ฐ๊ฒฐ ์์ ์ ์ ์ฉํ์ฌ ์ ํ๋ฒํธ ๋์ ํ๋กํ ์นด๋๋ฅผ ๊ณต์ ํ๋๋ก ํ๊ณ ์ถ์๋ค.
NameDrop ๊ธฐ๋ฅ์ ๋ฐ๋ก ์ ๊ณต๋๋ api๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น์ทํ๊ฒ ๋์ํ๋๋ก ์ง์ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ๋ค.
๋ถ์
์ด๊ธฐ์๋ MultipeerConnectivity(MPC) ์ด์ฉํด ์ฃผ๋ณ ์ฌ์ฉ์๋ฅผ ํ์ํ๊ณ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉด ๋๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
ํ์ง๋ง MPC๋ ์์ดํ์ด๋ ๋ธ๋ฃจํฌ์ค๋ฅผ ์ด์ฉํด ๊ธฐ๊ธฐ๋ฅผ ํ์ํ๊ณ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ ์ ์ฉํ ๊ธฐ์ ์ด์ง๋ง, ๊ธฐ๊ธฐ ๊ฐ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ธ๋ฐํ๊ฒ ๋ค๋ฃจ์ง๋ ์์ ๊ทธ์ ๋ฒ์ ๋ด ์กด์ฌ ์ฌ๋ถ๋ง ํ์ ํ๊ณ ๊ทผ์ ์ ์ด์ ํ๋จํ ์๋ ์์์ต๋๋ค.
NameDrop ํํ์ ๋์์ ๊ธฐ๊ธฐ ๊ฐ ์์น ํ์ ์ด ์ค์ํ๋ค๊ณ ์๊ฐํด ์ถ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ๋ค๊ณ ๊ฒฐ๋ก ๋ด๋ ธ๊ณ , ํ์์ UWB๋ฅผ ์ฌ์ฉํด๋ณด๋๊ฑด ์ด๋จ๊น ํ๋ ์๊ฒฌ์ด ๋์ ํด๋น ํค์๋๋ฅผ ์ค์ฌ์ผ๋ก ์ฐพ์๋ณด๊ฒ ๋์์ต๋๋ค. ์ ํ์์ ์ง์ํ๋ NearbyInteraction๊ณผ NFC ์ด์ฉํ ๊ธฐ์ ์ด ์ ์ฉ ๊ฐ๋ฅํด๋ณด์๋๋ฐ NFC๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ด ์ ์ฝ ์ฌํญ์ผ๋ก ๋๊ปด์ก์ต๋๋ค. ์ข ๋ NameDrop๊ณผ ์ ์ฌํ๊ฒ ๊ตฌํํ ์ ์๋ ๊ฒ์ด๋ผ ํ๋จํด NI๋ฅผ ์ถ๊ฐ ์ ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
NI ๊ธฐ์ ์ ๊ธฐ๊ธฐ ๊ฐ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์ธก์ ํ๋ ๊ธฐ์ ์ด์ง๋ง, ๊ธฐ๊ธฐ ๊ฐ ๋ฐ์ดํฐ๋ ๊ณต์ ์์ผ์ฃผ์ง ์์ต๋๋ค. ํ์ง๋ง NI ์ธ์ ์ฐ๊ฒฐ์ ์ํด์๋ DiscoveryToken์ ๊ธฐ๊ธฐ๋ผ๋ฆฌ ๊ณต์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ MPC + NI ํํ๋ก ์ ํฌ๋ง์ ProfileDrop ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค.
์ฌ์ฉ
MPC + NI ํ๋ฆ ์ค๊ณ
- ๊ธฐ๊ธฐ๋ค์ ๊ฐ๊ฐ NISession๊ณผ MPCSession์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ํฉ๋๋ค.
- ๊ฐ ๊ธฐ๊ธฐ๋ค์ MPCSession์ ํตํด Advertising / Browsing ์์ ์ ์ํํฉ๋๋ค.
- ๊ธฐ๊ธฐ๊ฐ ๋ฐ๊ฒฌ๋๋ค๋ฉด Invite ํ๊ณ ์ธ์ ์ ์ฐ๊ฒฐํฉ๋๋ค.
- NISession์ ์์๋๋ฉด ์๋์ผ๋ก ๊ธฐ๊ธฐ๋ง๋ค DiscoveryToken์ ์์ฑํฉ๋๋ค.
- DiscoveryToken์ ๊ธฐ๊ธฐ๋ผ๋ฆฌ ๊ตํํ๊ธฐ ์ํด์ MPCSession์ ์ด์ฉํฉ๋๋ค.
- DiscoveryToken์ด ์ ์์ ์ผ๋ก ๊ตํ๋๋ฉด NISession์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ๊ธฐ๊ธฐ์ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ํ์ ํ ์ ์์ต๋๋ค.
- ์ดํ, ํด๋นํ๋ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์๋ ๊ธฐ๊ธฐ์ MPCSession์ ํตํด ๋ฐ์ดํฐ(ํ๋กํ ์นด๋)๋ฅผ ๊ตํํ๊ฒ ๋ฉ๋๋ค.
- ๋ ํผ์ด๊ฐ์ ๋ฐ์ดํฐ ๊ตํ์ด ๋ง์น๊ฒ ๋๋ฉด NI, MPC Session ๋ชจ๋ ์ข ๋ฃ๋ฉ๋๋ค.
ํธ๋ฌ๋ธ์ํ
์ด๊ธฐ ๊ตฌ์ ํ๋ก์ฐ์์ ์ฐจ์ด
๊ธฐ์กด์๋ ์ค์ NameDrop์ฒ๋ผ ๋์ํ๋๋ก ํ๊ธฐ ์ํด ๋น์ฐํ ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ๊ธฐ๋ฅ์ด ๋์๊ฐ์ผ ํ์ต๋๋ค.
ํ์ง๋ง MultipeerConnectivity๋ ํฌ๊ทธ๋ผ์ด๋์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ CoreBluetooth๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํด์ผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์๊น์ง ๊ฐ๋ฅํ์ต๋๋ค. ํ๋ก์ ํธ ๊ธฐ๊ฐ์ ์ ํ์ด ์์ด ์ฐ์ MPC ์ด์ฉํ ๊ตฌํ๋ง ์งํํ๊ธฐ๋ก ํ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด์ ํฌ๊ทธ๋ผ์ด๋ ์ง์ ์์ ์๋ง ๋์ํ๊ฒ ๋์์ต๋๋ค. ํฌ๊ทธ๋ผ์ด๋ ์ํ์์ ๊ณ์ํด์ ์ธ์ ์ฐ๊ฒฐ์ ์๋ํ๊ณ ์ ์งํ๋ ๊ณผ์ ์์ ๋ฆฌ์์ค ์ฌ์ฉ์ด ๊ณ์ ์ฆ๊ฐํ๋ ๊ฒ์ ํ์ธํ๊ณ ๋ฒํผ์ ๋๋ ์ ๊ฒฝ์ฐ๋ง ProfileDrop์ด ์คํ๋๋๋ก ํ๋ก์ฐ๋ฅผ ๋ณ๊ฒฝํ์์ต๋๋ค.
์ค๋ณต ์ฐ๊ฒฐ ๋ฌธ์
startAdvertising
์ผ๋ก ๊ธฐ๊ธฐ ์กด์ฌ๋ฅผ ๊ด๊ณ ํ๊ณ startBrowsing
์ผ๋ก ๊ธฐ๊ธฐ๋ฅผ ํ์ํด์ invite๋ฅผ ๋ณด๋ด๋ ๊ณผ์ ์์, ์์ชฝ ๊ธฐ๊ธฐ ๋ชจ๋ advertising, browsing, invite๋ฅผ ์งํํด ์๋ฐฉํฅ ์ฐ๊ฒฐ ํํ๋ก ๊ตฌํ๋์๊ณ ์ฐ๊ฒฐ ๋ถ์์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. PassthroughSubject
์ด์ฉํด invite ๋ฐ์๋์ง๋ฅผ ํ์
ํ๊ณ ๋ฐ์๊ฒฝ์ฐ ๋์ด์ invite๋ฅผ ๋ณด๋ด์ง ์๋๋ก stopbrowsing
ํ์ฌ ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ์ต๋๋ค.
์ฐ๊ฒฐ์ฑ ๋ฌธ์
PeerConnection connectedHandler (advertiser side) - error [Unable to connect].
PeerConnection connectedHandler remoteServiceName is nil.
[GCKSession] Not in connected state, so giving up for participant [1C22D602] on channel [0].ll
์์ ๊ฐ์ ์ค๋ฅ๋ค์ด ๋ฐ์ํ๋ฉฐ MPCSession
์ด Connected ์ํ๊ฐ ๋ ์ดํ ๋ฐ๋ก Disconnected๋๋ ์ํฉ์ด ๋ฐ์ํ์ต๋๋ค.
์ฒ์์๋ ์ฐ๊ฒฐ ์ฑ๊ณต์ด ๋๋ค์ผ๋ก ๋ฐ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง, ์ฌ๋ฌ๊ฐ์ง ํ๊ฒฝ ํต์ ๋ฐฉ์์ ๋น๋ ํ ์คํธ๋ฅผ ํตํด p2p wifi ์ฐ๊ฒฐ ์ํ์์๋ง ๋ถ์์ ํ๊ณ ์ผ๋ฐ wifi ์ฐ๊ฒฐ ์ํ์์๋ ์ฐ๊ฒฐ์ด ์์ ์ ์ธ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ํ ์คํธ๋ฅผ ํด๋ด๋ ์ฝ๋ ์์ ๋ฌธ์ ๋ ์์ด ๋ณด์๊ณ , ๋์ผํ ์ฝ๋์์ ์์ดํ์ด ์ข ๋ฅ์ ๋ฐ๋ผ ์ฐ๊ฒฐ ์ํ๊ฐ ๋ค๋ฅผ ์ ์์ ๊ฒ์ด๋ผ ์๊ฐํด ์ฝ๋ ์ธ์ ์ธ ๋ถ๋ถ์ ์ดํ๊ณ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค. p2p ์์ดํ์ด ์ฐ๊ฒฐ์ ์ํด์๋ ๋ก์ปฌ ๋คํธ์ํฌ ๊ถํ์ด ๋ฐ๋์ ํ์ํ๋ฐ, ์ด๊ธฐ ์ ํ ๊ณผ์ ์์ ์ถ๊ฐํ ๊ถํ์ด PR ์ถฉ๋ ํด๊ฒฐ๊ณผ์ ์์ ๋๋ฝ๋๋ฉฐ ๊ถํ์กฐ๊ฑด์ด ์ฌ๋ผ์ง ์ํ์์ต๋๋ค. ๊ถํ ๋ค์ ์ถ๊ฐํ์๊ณ ์ฐ๊ฒฐ ์ํ๊ฐ ๋ชจ๋ ์ ์์์ ํ์ธํ ์ ์์์ต๋๋ค.
๊ธฐ๊ธฐ ๊ฐ ๋ฐฉํฅ ํ์ ๋ฌธ์
NI ์ด์ฉํด ๊ธฐ๊ธฐ ๊ฐ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์ธก์ ํ๋ ์์ ์์ ๋ ๊ธฐ๊ธฐ ์ค ํ ๊ธฐ๊ธฐ์์ ๋ฐฉํฅ๋ง ์ธก์ ์ด ์๋๋ ์ํ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
๋์ผํ ๋ฉ์๋์์ ๊ฑฐ๋ฆฌ์ ๋ฐฉํฅ์ ์ธก์ ํ๊ฒ ๋๋๋ฐ, ๋ฐฉํฅ๋ง ์ธก์ ๋์ง ์๋๋ค๋ ์ ์์ ๊ธฐ๊ธฐ ๋ฌธ์ ๋ฅผ ๋ ์ฌ๋ ธ๊ณ , ๋ค๋ฅธ ๊ธฐ๊ธฐ์ ๊ต์ฐจ๊ฒ์ฆ์ ์๋ํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ 1๊ฐ์ ๊ธฐ๊ธฐ์์๋ง ๋ฐฉํฅ์ด ์ธก์ ๋์ง ์๋๊ฒ์ ํ์ธํ ์ ์์๊ณ , ๊ธฐ๊ธฐ ๋ฌธ์ ๋ก ๊ฒฐ๋ก ๋ด๋ ธ์ต๋๋ค. NI๋ฅผ ์ํด์๋ U1์นฉ์ด ํ์ํ๋ฐ, ๊ธฐ๊ธฐ์์ ๊ทธ ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์๋ํด๋ณผ ์ ์๋ ๊ธฐ๊ธฐ์ ์๊ฐ ํ์ ์ ์ด์๊ธฐ ๋๋ฌธ์ 100ํผ์ผํธ์ ํ์ ์ ํ ์๋ ์๋ ์ํ์ ๋๋ค.