728x90 ๋ฐ์ํ ios39 [iOS] Unit Test์ ๋ํด์ ๊ฐ๋จํ ์์๋ณด๊ธฐ ์๋ ํ์ธ์ Foma๐ ์ ๋๋ค! ์ค๋์ Xcode์์ ํ ์คํธ๋ฅผ ํ ์ ์๋ ์ ๋ํ ์คํธ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ์์ ๋ถํฐ ํ ์คํธ์ ๋ํ ์ค์์ฑ์ ์ ๋ง ๊ฐ์กฐ๋์๊ณ ์ ๋ ํด์ผ์ง...ํด์ผ์ง.. ํ๋ฉด์ ๋ฏธ๋ฃจ๋ค๊ฐ ์ด์ ์ผ ์ ๋๋ก ์ฌ์ฉํด๋ณด๊ณ ๊ณต๋ถํ ๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Unit Test Bundle ๋ง๋ค๊ธฐ ๋จผ์ ์ ๋ํ ์คํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ด ํ๋ก์ ํธ ์์ฑ์์ Include Tests ์ฒดํฌํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ๋ง์ฝ์ ์ด๊ฑฐ ํ๋ก์ ํธ๋ฅผ ์ด๋ฏธ ๋ง๋ค์ด๋ฒ๋ ธ๋ค๋ฉด Project - General ํญ์ผ๋ก ์ด๋ํ์ ๋ค ์ผ์ชฝ ํ๋จ ๋ถ๋ถ์ + ๋ฒํผ์ ๋๋ฌ์ฃผ์ธ์. ๊ทธ ๋ค์ Unit์ ๊ฒ์ํ์๋ฉด Unit Testing Bundle์ด ์์๊ฑฐ์์ ์ด๊ฑธ ์ถ๊ฐํด์ค๋๋ค. Unit Test ํ์ผ ๋ง๋ค๊ธฐ UnitTest Exam.. 2021. 7. 19. [iOS/UI] ์ปฌ๋ ์ ๋ทฐ์ ์๋์ผ๋ก ํฌ๊ธฐ ์กฐ์ ํ๊ณ ์ผ์ชฝ ์ ๋ ฌํ๊ธฐ (CollectionViewCell Automaticsize & LeftAlign) ์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค. ์ค๋์ ์ ์ ์ผ์ชฝ์ผ๋ก ์ ๋ ฌ์ํค๊ณ ์ ์์ ์๋ ํ ์คํธ์ ๋ฐ๋ผ์ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ ๊ฒ์ ์์๋ณด๋๋ก ํ ๊ฒ์! (์ผ๋ฐ์ ์ผ๋ก ์ปฌ๋ ์ ๋ทฐ์ ์ ๋ง๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ ๊ฑฐ์์!) ์ค๋์ ์๋์ ๊ฐ์ด ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ StoryBoard ์คํ ๋ฆฌ๋ณด๋๋ ์๋์ ๊ฐ์ด ์ค์ ํด์ฃผ์ธ์. CollectionViewCell ์ปฌ๋ ์ ๋ทฐ์ ์ ๋ ์ด๋ธ์ ์ฐ๊ฒฐํด์ค๋๋ค. class CollectionViewCell: UICollectionViewCell { @IBOutlet weak var label: UILabel! } ViewController ๋ทฐ์ปจํธ๋กค๋ฌ์ ์ปฌ๋ ์ ๋ทฐ๋ฅผ ์ฐ๊ฒฐํด์ค๋๋ค. @IBOutlet weak var collection: UICollectionView! ์ปฌ๋ ์ ๋ทฐ ๋๋ฆฌ๊ฒ์ดํธ.. 2021. 6. 29. [iOS] ํค๋ณด๋๊ฐ ํ ์คํธํ๋๋ฅผ ๊ฐ๋ฆด๋ ํด๊ฒฐ๋ฒ(When the keyboard covers text field) ์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค! ์ค๋์ ํ ์คํธํ๋๋ฅผ ๋ง๋ค๋ค๋ณด๋ฉด ์ ๋ง ์์ฃผ ๋ง๋๋ ํค๋ณด๋ ๋ฌธ์ ์ ๋ํด์ ๋ค๋ค๋ณด๋ ค๊ณ ํด์. ์๋ฎฌ๋ ์ดํฐ๋ก ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ํค๋ณด๋์ ์์น๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ง๋ค๊ฐ ํค๋ณด๋๊ฐ ์ฌ๋ผ์ค๋ ์๊ฐ ํค๋ณด๋ ์๋์ ์๋ ํ ์คํธํ๋๋ ๋ฒํผ๋ค์ด ๊ฐ๋ ค์ง๊ณค ํ๋๋ฐ์. ์ค๋์ ์ด๊ฒ์ ๋ํ ํด๊ฒฐ๋ฒ์ ์ ๋ฆฌํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์! Preview Storyboard ์๋ ํ๋ฉด๊ณผ ๊ฐ์ด ํ ์คํธํ๋์ ๋ฒํผ์ด ๋น๊ต์ ์๋์ ์๋๋ก ๋ง๋ค์ด ์ฃผ๊ฒ ์ต๋๋ค. View์๋ Tap Gesture Recognizer๋ฅผ ๋ฌ์๋๊ฒ ์ต๋๋ค. ViewController ์คํ ๋ฆฌ๋ณด๋์์ ๋ง๋ค์ด์ค ํ ์คํธํ๋์ ๋ฒํผ์ ์ฐ๊ฒฐํด์ค๋๋ค. @IBOutlet weak var textField: UITextField! @IBOutlet weak va.. 2021. 6. 16. [iOS] ๊ฑด๊ฐ ๋ฐ์ดํฐ ์ฌ์ฉํด๋ณด๊ธฐ(feat.HealthKit) ์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค! ์ค๋์ ๋ด ์์ดํฐ์ ์๋ ๋์ ๊ฑด๊ฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์๋ณด๊ณ ๋ ๊ธฐ๋กํด๋ณด๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ Info.plist ์๋์ ๊ฐ์ด ๋ ์์ฒญ์ ๋ฃ์ด์ค๋๋ค. NSHealthShareUsageDescription ๋ ์๋ก์ด ๊ฑด๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋ NSHealthUpdateUsageDescription ๋ ๊ธฐ์กด์ ๊ฑด๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ฌ ๋ ํ์ํด์. NSHealthShareUsageDescription ๊ฑด๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ ํ์ํด์. NSHealthUpdateUsageDescription ๊ฑด๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋๋ฐ ํ์ํด์. Signing & Capability ์ฑ์ Targets์ Signing & Capbility์์ ์๋์ ๊ฐ์ด HealthKit์ ์ถ๊ฐํด์ฃผ์ธ์! ๋ฐ.. 2021. 6. 8. [iOS] ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ ์ด๋ธ๋ทฐ ๋ฐ์ดํฐ์์ค ๋ง๋ค๊ธฐ(Reusable TableView DataSource) ์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค! ์ค๋์ ํ ์ด๋ธ๋ทฐ ๋ฐ์ดํฐ์์ค๋ฅผ ์ ๋๋ฆญํ๊ฒ ๋ง๋ค์ด์ ๋ชจ๋ ๋ทฐ์ปจํธ๋กค๋ฌ์์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํ๊ฒ ์ต๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ StoryBoard ์คํ ๋ฆฌ๋ณด๋๋ ์๋์ ๊ฐ์ด ํ ์ด๋ธ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ง๋ค์ด์ฃผ์๊ณ ์ ์ ์ด๋ฆ์ ํ์ํ ๋ ์ด๋ธ์ ์ถ๊ฐํด์คฌ์ต๋๋ค. ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ ์ ํด๋์ค ์ด๋ฆ์ NameTableViewCell๋ก ํด์ฃผ์ธ์! ( ๋์ค์ ๋ง๋ค์ด์ค๊ฑฐ์์!) identifier๋ ์ ์ด๋ฆ๊ณผ ๋๊ฐ์ด ํด์ฃผ๊ฒ ์ต๋๋ค. NameTableVIewCell ์๋์ ๊ฐ์ด ๋ ์ด๋ธ์ ์ฐ๊ฒฐํด์ฃผ์ธ์. import UIKit class NameTableViewCell: UITableViewCell { @IBOutlet weak var name: UILabel! } Tabl.. 2021. 6. 3. [OS] ๋๊ธฐ์ ๋น๋๊ธฐ ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌ๊ณผ ๋์๋ ๋ฌด์์ผ๊น?(Sync vs Async & Serial vs Concurrent) ์๋ ํ์ธ์ Foma๐ ์ ๋๋ค! ์ค๋ ์ฐ๋ ๋๋ฅผ ๊ณ ์(?)์ฒ๋ผ ์ด์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์ง์์ธ ๋๊ธฐ์ ๋น๋๊ธฐ ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌ๊ณผ ๋์์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ Sync(๋๊ธฐ) ๋๊ธฐ์ ๋ป์ ๋ง ๊ทธ๋๋ก ๋์์ ์ผ์ด๋๋ค๋ ๋ป์ ๋๋ค. ์ด ๋ป ๋๋ฌธ์ ๋ ํท๊ฐ๋ฆฌ๊ธฐ๋ ํ๋๋ฐ์. ๋๊ธฐ๋ก ์์ ์ ํ์๋ ๋์์ ์ผ์ด๋์ง ์๊ณ ์ฐจ๋ก๋๋ก ์ผ์ด๋์ฃ ? ๊ทธ๋ฌ๋ฉด ๋๋์ฒด ๋ญ๊ฐ ๋์์ ์ผ์ด๋๋ค๋ ๊ฒ์ผ๊น์? ๋ฐ๋ก ์์ฒญ๊ณผ ์๋ต์ ๋๋ค. ๊ทธ๋ฌ๋๊น "๋ด๊ฐ ์ด๊ฑฐ ํ๋ผ๊ณ ์ง์ํ์ผ๋ฉด ๋๋ผ๋๊น์ง ์๋ฌด๊ฒ๋ ํ์ง๋ง! ์์ฒญ์ ํ์ผ๋ฉด ๋์์ ์๋ตํด!" ์ด๋ฐ ๋ป์ด์ฃ .. ์ผ๋ฐ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ๋ฉด ์์ฑํ ์์๋๋ก ํธ์ถ๋์ฃ ? ์๋ฌด๋ฐ ์ธํ ์ ํด๋์ง ์์ ๊ฒฝ์ฐ ๋ณดํต ๋๊ธฐ๋ก ์์ ์ด ์งํ๋ฉ๋๋ค. func ์์ 1() { print("์์ 1 ์์") Thread... 2021. 5. 31. [iOS] ๋๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋ค๊ธฐ(feat. CocoaPods) ์๋ ํ์ธ์ Foma ๐์ ๋๋ค! ํ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ธ์ ๊ฐ ๋๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์จ๋ด์ผ์งํ๋๋ฐ ๋๋์ด ๊ทธ๋ฐ ๋ ์ด ์ค๋ค์... ๊ทธ๋์ ์ค๋์ ์๊ธฐ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํด๋ณด๋ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ Terminal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ๊ฒฝ๋ก๋ก ์ด๋ํ์ ๋ค ์๋์ ๊ฐ์ด ์ ๋ ฅํ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์! pod lib create ์ํ๋์ด๋ฆ ์ด๋ ๊ฒ ํ๋ฉด ์ด 5๊ฐ์ง ์ง๋ฌธ์ด ๋์ฌ๊ฑฐ์์. 1. ์ด๋ค ํ๋ซํผ์ ์ฌ์ฉํ๊ฑฐ๋? iOS /macOS -> iOS 2. ์ด๋ค ์ธ์ด๋ฅผ ์ฌ์ฉํ ๊ฑฐ๋? Swift/Objc -> Swift 3. ๋ ๋ฐ๋ชจ์ฑ ํฌํจํ ๊ฑฐ์ผ? -> Yes 4. ํ ์คํธ๋ ๋ญ๋ก ํ ๊ฑฐ์ผ? Quick/None -> None 5. ๋ทฐ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ ํ ๊ฑฐ์ผ? No ์ด๋ ๊ฒ ์ ๋ ฅํ์๋ฉด.. 2021. 5. 30. [iOS/API] Agora๋ก ์ค์๊ฐ ์์ฑ์ฑํ ๊ตฌํํ๊ธฐ(feat.ํด๋ฝํ์ฐ์ค) - 2 ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ์ ๋ฒ ๊ธ์์ Agora ํ๋ก์ ํธ ์ธํ ํ๋ ๋ฒ์ ์ด์ด์ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑ์ฑํ ์ ๊ตฌํํ๋ ๋ฒ์ ๋ํด์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! (ํน์๋ผ๋ ํ๋ก์ ํธ ์ค์ ๋ฒ์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด๊ณ ์์ฃผ์ธ์!) Preview Pod Podfile์ ์๋์ ๊ฐ์ด AgoraRtc๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์! (๋ฒ์ ์ ๋ฐ๋์๋ ์์ผ๋ ํ์ธํด์ ์ถ๊ฐํด์ฃผ์ธ์.) pod ‘AgoraRtcEngine_iOS’, ‘~> 3.1.0’ Info.plist ๋ง์ดํฌ ์ฌ์ฉ ๊ถํ์ ์ค์ ํด์ฃผ์ธ์! NSMicrophoneUsageDescription ๋ง์ดํฌ ์ข ์ธ๊ฒ? StoryBoard AgoraViewController ๋จผ์ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ฅผ Embed ํด์ฃผ์๊ณ ์ด๋ฆ์ ์ ๋ ํ ์คํธํ๋์ ์ ์ฅํ ์ ์๋ ๋ฒํผ์ ๋ง๋ค์ด ๋์์ต.. 2021. 5. 11. [iOS/API] Agora ํ๋ก์ ํธ ์ธํ ํ๊ธฐ (feat.ํด๋ฝํ์ฐ์ค) - 1 ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ๋ฐ๋ก "ํด๋ฝํ์ฐ์ค" ์์ ์ค์๊ฐ ์์ฑ์ฑํ ์ ์ํด ์ฌ์ฉ๋ ์๋น์ค์ธ Agora ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค! Agora Agora๋? ๊ณต์ ํํ์ด์ง์๋ ์ด๋ ๊ฒ ์๊ฐํ๊ณ ์์ด์. "์ค์๊ฐ ๋น๋์ค, ์์ฑ๋ํ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ๋ด์ฅ๋ ์์ฑ ๋ฐ ๋น๋์ค ์ฑํ , ์ค์๊ฐ ๋ น์, ๋ํ ํ ๋ผ์ด๋ธ ์คํธ๋ฆฌ๋ฐ ๋ฐ ์ค์๊ฐ ๋ฉ์์ง์ ํฌํจํ์ฌ ํ๋ถํ ์ธ์ฑ ๊ฒฝํ์ ์ ๊ณต ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค." ์ฆ, ์ค์๊ฐ์ผ๋ก ํ์,์์ฑ ์ฑํ API๋ฅผ ์ ๊ณตํ๋ ์๋น์ค ํ์ฌ์ ๋๋ค. Agora.io ๊ฐ์ฅ ๋จผ์ ํด์ผํ ๊ฒ์ Agora ํํ์ด์ง๋ก ์ด๋ํด ํ์๊ฐ์ ์ ํด์ผํฉ๋๋ค. Agora.io Real-Time Voice and Video Engagement The Real-Time Engagement Platf.. 2021. 5. 10. [ํด๊ฒฐ๋ฒ ํฌํจ] Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 87 named com.apple.commcenter.coretelephony.xpc was invalidated from this process." ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋ ๋ง๋ ์๋ฌ๋ Agora๋ก ์์ฑ์ฑํ ์๋น์ค๋ฅผ ๋ง๋ค๋ค๊ฐ ๋ง๋๊ฒ ๋์๋๋ฐ์. ์๋ฌดํผ ์์ฑ ์ฑ๋์ ๋ง๋ค์ด์ ์ ์ฅํ๋ฉด ์๋์ ๊ฐ์ด ๊ณ์ํด์ ๋ก๊ทธ๊ฐ ๋จ๋๋ผ๊ตฌ์... ์ ์ด๋ฐ ๋ก๊ทธ๊ฐ ๋จ๋๊ฑด์ง๋ ์์ธํ ์์ง ๋ชปํ์ง๋ง ์ด๋ฌํ ๋ก๊ทธ๋ฅผ ์จ๊ธฐ๋ ํด๊ฒฐ๋ฒ์ ์ฐพ์์ต๋๋ค. ๋จผ์ Xcode์์ ์คํ๋ฒํผ ์ผ์ชฝ ํ๋ก์ ํธ ๋ชจ์์ ๋๋ฌ์ Edit Scheme์ ๋๋ฌ์ฃผ์ธ์. ๊ทธ ๋ค์ Info ์์ Arguments ํญ์ ๋๋ฅด์๊ณ Enviroment Variables์ ์๋์ ๊ฐ์ด ์ด๋ฆ๊ณผ ๊ฐ์ ๋ฃ์ด์ฃผ์ธ์! //name OS_ACTIVITY_MODE //value false ์ด๋ ๊ฒ ์ถ๊ฐํ์๋ฉด ๊ทธ ๋ค์๋ถํฐ๋ ์๋ฌ ๋ก๊ทธ๊ฐ ์๋์ค๊ฒ ๋ฉ๋๋ค! ํน์๋ผ๋ ์ด ์๋ฌ๊ฐ ๋ฌด์์ธ์ง ์์๋ ๋ถ์ ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์ ใ 2021. 5. 6. [iOS/API] Algolia API๋ฅผ ์ด์ฉํด์ C.R.U.D ๊ตฌํํด๋ณด๊ธฐ ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ Algoria๋ผ๋ API์ ๋ํด์ ์์๋ณด๊ณ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ๋ ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ ์๊ณ ๋ฆฌ์๋?๐ ์๊ณ ๋ฆฌ์๋ SaaS(Search as a Service) ํ๋ซํผ์ผ๋ก ์ฆ, ๊ฒ์ ์๋น์ค ํ๋ซํผ์ ๋๋ค. ๋ฐฑ์๋,ํ๋ก ํธ์๋,API ํด๋ผ์ด์ธํธ ๋ฑ ๋ค์ํ ํ๊ฒฝ์ผ๋ก API๊ฐ ์ ๊ณต๋ฉ๋๋ค. ๊ฒ์ ์๋น์ค๋ฟ๋ง ์๋๋ผ AI,Analytics ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๊ฒฉ์ 1000๋ฒ ๊ฒ์์ 1๋ฌ๋ฌ์ ๋๋ค. (๊ฒ์ 1๋ฒ์ 1์์ด๋... ์ข ๋น์ผ๊ฑฐ ๊ฐ๋ค์...) ์๊ณ ๋ฆฌ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ๊ฒ์ด ์ข์๊น์?๐ค 1. ์๋์์ฑ ๊ฒ์๊ธฐ๋ฅ ์๊ณ ๋ฆฌ์๋ ๊ฒ์ ํ ์คํธ์ ๋ฐ๋ผ์ ๊ด๋ จ์๋ ํ ์คํธ๋ฅผ ํฌํจํ๊ฑฐ๋ ๊ด๋ จ์๋ ๋ฐ์ดํฐ๋ค์ ๋น ๋ฅด๊ฒ ์ ๊ณตํ์ฌ ์ฌ์ฉ์์๊ฒ ์ข์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. 2.. 2021. 4. 21. [iOS] Callkit๊ณผ PushKit์ ์ด์ฉํด์ ์ ํ ํธ์ฌํ๊ธฐ ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ Callkit์ ์ด์ฉํด์ ์ ํ์ค๋ ํ๋ฉด์ ๋์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ Xcode ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด์ฃผ์ ๋ค Signing & Capabitities ๋ก ์ด๋ํ์ ์ Background modes๋ฅผ ์ถ๊ฐํด์ฃผ์๊ณ Voice over IP๋ฅผ ์ฒดํฌํด์ฃผ์ธ์! ViewController ์๋์ ๊ฐ์ด ๋ถ์ฌ๋ฃ์ผ์ ๋ค ์คํ์์ผ์ฃผ์ธ์. (์ค์ ๋๋ฐ์ด์ค๋ก ์คํ์์ผ์ผ ํฉ๋๋ค!) import UIKit import CallKit class ViewController: UIViewController, CXProviderDelegate { override func viewDidLoad() { let provider = CXProvider(configuration: CXProviderCo.. 2021. 4. 12. ์ด์ 1 2 3 4 ๋ค์ 728x90 ๋ฐ์ํ