iOS - Getting Started

์ค€๋น„ ์‚ฌํ•ญ

  • Xcode ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • iOS 10.0 ์ด์ƒ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ค์ •

Xcode์—์„œ Swift๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„ Build Settings์—์„œ Enable Bitcode์— ๋Œ€ํ•˜์—ฌ No๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Bitcode

Objc ํ™˜๊ฒฝ์ด๋ผ๋ฉด ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES ๊ฐ’์„ Yes๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

๋˜ํ•œ Info.plist์—์„œ ๋‹ค์Œ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ถ”๊ฐ€ ํ˜น์€ ๋ณ€๊ฒฝ์„ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Privacy: Bluetooth, Microphone, Camera

Settings

SDK ์„ค์น˜ - Cocoapods

SDK ์„ค์น˜๋ฅผ ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜ Podfile์— pod 'RemoteMonster', '~> 2.6.11'์„ ์ถ”๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค

. ๊ทธ๋ฆฌ๊ณ  ํ„ฐ๋ฏธ๋„์—์„œ pod install ๋ฅผ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ pod install ์ด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฉด pod update๋ฅผ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ cocoapods์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ๋ฅผ ๋จผ์ € ์—…๋ฐ์ดํŠธ ํ›„ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

SDK ์„ค์น˜ - ์ง์ ‘ import

์šฐ์„  ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ํ†ตํ•ด iOS SDK์˜ ๋งˆ์ง€๋ง‰ ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ๋ฐ›์€ RemoteMonster iOS SDK๋ฅผ ํด๋”์—๋Š” 3๊ฐœ์˜ ๊ด€๋ จ Framework์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ Framework์„ Finder์—์„œ ๋Œ์–ด๋‹ค ํ”„๋กœ์ ํŠธ ํŠธ๋ฆฌ์ฐฝ์— ๋†“์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด RemoteMonster SDK๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Framework

Build Phases์— copy file ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ ํ•˜๊ณ , ์œ„ ๋‹จ๊ณ„์—์„œ ์ถ”๊ฐ€ํ•œ Frameworks๋ฅผ ๋ณต์‚ฌ ๋Œ€์ƒ์œผ๋กœ ์ถ”๊ฐ€ ํ•˜์—ฌ ์ค๋‹ˆ๋‹ค.

Copy Frameworks

Remon ์„ค์ • ๋ฐ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ

์ธํ„ฐํŽ˜์ด์Šค๋นŒ

RemonCast, RemonCall ๊ฐ์ฒด๋Š” RemonClient(sdk 2.6.9 ์ดํ•˜ ๋ฒ„์ „์€ RemonIBController) ๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด์ด๋ฉฐ, RemonClient๋Š” InterfaceBuilder๋ฅผ ์ด์šฉํ•œ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํ† ๋ฆฌ๋ณด๋“œ์— RemonClient์˜ ํ•˜์œ„๊ฐ์ฒด์ธ RemonCall ๋˜๋Š” RemonCast๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    • RemonCall๋ฅผ 1:1 ํ†ต์‹ ์„ ์ง€์› ํ•˜๋ฉฐ RemonCast๋Š” 1:N ๋ฐฉ์†ก์„ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค.

    • xcode์˜ ํ•œ๊ณ„์ƒ ์ง์ ‘ RemonCall์ด๋‚˜ RemonCast๋ฅผ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ RemonCall์ด๋‚˜ RemonCast ๊ฐ์ฒด๋ฅผ Designer์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Library์—์„œ Object ์ปดํฌ๋„ŒํŠธ๋กœ ๋จผ์ € ์‚ฝ์ž…ํ›„ ํ•ด๋‹น Object์˜ class๋ฅผ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ง์ ‘ ์ˆ˜์ •ํ•ด ์ฃผ์„ธ์š”. module์€ RemoteMonster๋กœ ์„ค์ •ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    • InterfaceBuilder์—์„œ Utilities ๋ทฐ๋ฅผ ์ด์šฉํ•˜์—ฌ RemonCall์„ ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค.

  • ServiceID์™€ Service Key๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งŒ์•ฝ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์›ํ•œ๋‹ค๋ฉด ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

    • ์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ์„ธ์š”.

Service Key
  • ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์›ํ•˜๋Š” Scene์—์„œ ์›ํ•˜๋Š” ์œ„์น˜์— Veiw๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  RemonClient(sdk 2.6.9 ์ดํ•˜๋Š” RemonIBController)์˜ remoteView์™€ localView์— ๋ฐ”์ธ๋”ฉ ํ•˜์—ฌ ์ค๋‹ˆ๋‹ค.

  • Remon๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ViewContoller์— RemoteMonster SDK๋ฅผ ์ž„ํฌํŠธ ํ•˜๊ณ , RemonClient(sdk 2.6.9 ์ดํ•˜๋Š” RemonIBController)๊ฐ์ฒด๋ฅผ ์•„์›ƒ๋ › ๋ณ€์ˆ˜์— ๋ฐ”์ธ๋”ฉ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์—์„œ ์ง์ ‘ ๊ตฌํ˜„

๊ฐœ๋ฐœ

์ด์ œ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋ฅผ ํ†ตํ•ด ์„ธ๋ถ€์ ์ธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์„ธ์š”.

๋ฐฉ์†ก

RemonCast๋กœ ๋ฐฉ์†ก ๊ธฐ๋Šฅ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ์†ก ์†ก์ถœ

๋ฐฉ์†ก ์‹œ์ฒญ

ํ˜น์€ ์ข€๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Livecast

ํ†ต์‹ 

RemonCall๋กœ ํ†ต์‹  ๊ธฐ๋Šฅ์„ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜น์€ ์ข€๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Communication

๊ทธ ์™ธ ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋“ค

remonCall์ด๋‚˜ remonCast๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋Š” ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • close() : ๋ฐฉ์†ก์ด๋‚˜ ํ†ตํ™”๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž์›์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. close ํ›„์— ๋‹ค์‹œ RemonCall์ด๋‚˜ RemonCast๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฉ์†ก/ํ†ตํ™”๋ฅผ ์žฌ๊ฐœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • showLocalVideo(): ๋ฐฉ์†ก์ด๋‚˜ ํ†ตํ™” ์‹œ์ž‘ ์ „์— ์ž์‹ ์˜ ์นด๋ฉ”๋ผ ํ™”๋ฉด์„ ๋ฏธ๋ฆฌ ๋ณด๊ณ  ์‹ถ์„๋•Œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • pauseLocalVideo(true): ๋ฐฉ์†ก์ด๋‚˜ ํ†ตํ™” ์ค‘ ์ž์‹ ์˜ ์นด๋ฉ”๋ผ ํ™”๋ฉด์„ ์ค‘์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • switchCamera(): ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์นด๋ฉ”๋ผ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์Šค์œ„์นญํ•ด์„œ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • fetchCalls, fetchCasts: ์ฑ„๋„ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

Callback์— ๋Œ€ํ•˜์—ฌ

๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • onInit(): ๋ฐฉ์†ก(RemonCast), ํ†ตํ™”(RemonCall) ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ธ์ฆ์ ˆ์ฐจ๋“ฑ์„ ๊ฑฐ์ณ์„œ ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋งˆ๋ฌด๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž˜ ๋งˆ๋ฌด๋ฆฌ๋˜๋ฉด onInit๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต onInit์˜ ์ธ์ž๋กœ ์ธ์ฆ์˜ ๊ฒฐ๊ณผ์ธ token๊ฐ’์ด ๊ฐ™์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

  • onConnect(): ํ†ตํ™”(RemonCall)๋ฅผ ์œ„ํ•œ ์ฑ„๋„์ด ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ์ฑ„๋„๋ช…(์ฑ„๋„ID)๊ฐ€ ์ „๋‹ฌ๋˜๋ฉฐ, ๋™์ผํ•œ ์ฑ„๋„์— ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๊ฐ„ Peer ์—ฐ๊ฒฐ์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • onComplete : ํ†ตํ™”(RemonCall) ๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€์˜ Peer ์—ฐ๊ฒฐ์ด ์™„๋ฃŒ๋œ ์ดํ›„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • onCreate(): ๋ฐฉ์†ก(RemonCast) ์„ ์˜จ์ „ํžˆ ์†ก์ถœํ•˜๊ฒŒ ๋  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ž๊ฐ’์œผ๋กœ ๋ฐฉ์†ก๋ฃธ์˜ ID๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

  • onJoin(): ๋ฐฉ์†ก(RemonCast) ์‹œ์ฒญ์ด ์˜จ์ „ํžˆ ์ด๋ฃจ์–ด์งˆ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • onClose(): ๋ฐฉ์†ก(RemonCast)๊ณผ ํ†ตํ™”(RemonCall)๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ธ์ž๊ฐ’์œผ๋กœ CloseType์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • onError(): ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋‘ ์ด onError๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

  • onStat(): ํ˜„์žฌ ๋ฐฉ์†ก, ํ†ตํ™” ํ’ˆ์งˆ์„ 3์ดˆ๋งˆ๋‹ค ์ฃผ๊ธฐ๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

Callbacks

Last updated