Multipeer Connectivity - Team-HGD/SniffMEET GitHub Wiki

Multipeer Connectivity Framework iOS 7+

Peer-to-Peer ํ†ต์‹  ๋ฐ ์ฃผ๋ณ€ ์žฅ์น˜ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

WiFi, Bluetooth๋ฅผ ํ†ตํ•ด ๊ธฐ๊ธฐ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์—†์ด๋„ ์ฃผ๋ณ€ ์žฅ์น˜์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์šฉ์ž ๋ฒ”์œ„ ๋‚ด์—์„œ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•œ๋‹ค.

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

  • MCPeerID ๊ฐ ๊ธฐ๊ธฐ์˜ ๊ณ ์œ  ID ํ”ผ์–ด ๊ฐ„์˜ ๊ตฌ๋ถ„์— ์‚ฌ์šฉ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์ด์šฉํ•ด ํ”ผ์–ด ์‹๋ณ„
  • MCSession ์—ฐ๊ฒฐ๋œ ํ”ผ์–ด ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ํ†ต์‹  ๊ด€๋ฆฌ ์„ธ์…˜ ๋‹ค์ˆ˜์˜ ํ”ผ์–ด์™€ ๋™์‹œ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ์†ก์ˆ˜์‹ ์ด๋‚˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  ์ง€์› ์„ธ์…˜ ๊ฐœ์ฒด๋Š” ์„ธ์…˜์— ์—ฐ๊ฒฐ๋œ ํ”ผ์–ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”ผ์–ด ID ๊ฐœ์ฒด ์ง‘ํ•ฉ์„ ์œ ์ง€ ๋ฐ ๊ด€๋ฆฌ
  • MCAdvertiserAssistant ๋กœ์ปฌ ํ”ผ์–ด๊ฐ€ ์„œ๋น„์Šค ์ œ๊ณต์ž ์—ญํ• ์ผ๋•Œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค ๋‹ค๋ฅธ ํ”ผ์–ด๊ฐ€ ํ•ด๋‹น ํ”ผ์–ด์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์•Œ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ ์š”์ฒญ์— ๋Œ€ํ•œ ์ˆ˜๋ฝ๊ณผ ๊ฑฐ์ ˆ ์ง€์›
  • MCNearbyServiceAdvertiser ์•ฑ์ด ์ง€์ •๋œ ์œ ํ˜•์˜ ์„ธ์…˜์— ์ฐธ์—ฌํ•  ์˜ํ–ฅ์ด ์žˆ์Œ์„ ์ฃผ๋ณ€ ํ”ผ์–ด์— ์•Œ๋ฆผ ๋‹จ์ผ ๋กœ์ปฌ ํ”ผ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์žฅ์น˜์™€ ํ•ด๋‹น ์‚ฌ์šฉ์ž ์‹๋ณ„ ์ •๋ณด๋ฅผ ์ฃผ๋ณ€ ๋‹ค๋ฅธ ์žฅ์น˜์— ์ œ๊ณต
  • MCNearbyServiceBrowser ์ฃผ์œ„ ํ”ผ์–ด ํƒ์ƒ‰ํ•ด ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ธฐ MCSession๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ํ”ผ์–ด ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ง€์›
  • MCBrowserViewController ๊ธฐ๋ณธ ์ œ๊ณต ํด๋ž˜์Šค ์ด๋ฅผ ์ด์šฉํ•ด ์ดˆ๋Œ€ํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์€ ํ”ผ์–ด๋ฅผ ์ œ๊ณต

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ

  • ์ฆ‰์„์—์„œ ์‚ฐ์ฑ… ๋ฉ”์ดํŠธ ํ˜•์„ฑ

    ์‚ฐ์ฑ… ์ค‘์— ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์—ด์–ด ๋ธ”๋ฃจํˆฌ์Šค๋ฅผ ํ†ตํ•ด ๊ทผ์ฒ˜ ๋ฐ˜๋ ค๋™๋ฌผ์„ ํƒ์ƒ‰ํ•˜๊ณ , ์‚ฐ์ฑ… ๋ฉ”์ดํŠธ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. MCPeerID๋Š” ๊ฐ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ด๋‚˜ ๋ฐ˜๋ ค๋™๋ฌผ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ•ด, ์ƒ๋Œ€๋ฐฉ์ด ํ”ผ์–ด์˜ ๋ฐ˜๋ ค๋™๋ฌผ ์„ฑํ–ฅ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜๋ฝํ•˜๋ฉด ์‚ฐ์ฑ… ํŒŒํ‹ฐ๋ฅผ ์ฆ‰์„์—์„œ ๋งบ์–ด ์•ฑ ๋‚ด์—์„œ ๋ฐ˜๋ ค๊ฒฌ ์ •๋ณด์™€ ํ•จ๊ป˜ ๊ธฐ๋กํ•œ๋‹ค.

  • ๋ฐ˜๋ ค๋™๋ฌผ ์„ฑํ–ฅ ๊ณต์œ  ๋ฐ ์ผ์น˜๋„ ํ™•์ธ

    MCPeerID์™€ MCAdvertiserAssistant๋ฅผ ์‚ฌ์šฉํ•ด ์ƒ๋Œ€๋ฐฉ์˜ ๋ฐ˜๋ ค๋™๋ฌผ ์„ฑํ–ฅ(์‚ฐ์ฑ… ๋นˆ๋„, ๋‚˜์ด, ํฌ๊ธฐ ๋“ฑ)์„ ๊ณต์œ ํ•˜๊ณ , ์„œ๋กœ์˜ ๋ฐ˜๋ ค๋™๋ฌผ์ด ์–ด์šธ๋ฆด ๊ฐ€๋Šฅ์„ฑ์„ ์ฆ‰์„์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ฃผ๋ณ€ ์‚ฐ์ฑ… ์ค‘์ธ ๋ฉ”์ดํŠธ์˜ ์‹ค์‹œ๊ฐ„ ์œ„์น˜ ๊ณต์œ 

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

์ฐธ๊ณ 

https://developer.apple.com/documentation/multipeerconnectivity

https://medium.com/@cleanrun/communicate-between-multiple-ios-devices-using-the-multipeer-connectivity-framework-468018af1839

https://velog.io/@lawn/iOS-Multipeer-Connectivity

http://yoonbumtae.com/?p=5189

https://bokoo.tistory.com/entry/iOS-NearbyInteraction%EB%9E%80