๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
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.
728x90
๋ฐ˜์‘ํ˜•