๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS/iOS49

[iOS] Code Snippet ์‚ฌ์šฉํ•ด๋ณด๊ธฐ(feat. ์ฝ”๋“œ ์ž๋™์™„์„ฑ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Xcode์—์„œ ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‹จ์ถ•์–ด๋งŒ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์™„์„ฑํ•ด์ฃผ๋Š” Code snippet์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Code Snippet์ด๋ž€? ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ ์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ๋“ค์„ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•ด๋‘๊ณ  ๋‹จ์ถ•์–ด๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ‰์†Œ์— guard๋ฌธ์ด๋‚˜,switch๋ฌธ์„ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œจ๋Š”๊ฑธ ๋งŽ์ด ๋ณด์…จ์„๊ฑฐ์—์š”. Guard Statement,Switch Statement๋ฅผ ์—”ํ„ฐ๋ฅผ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ž…๋‹ˆ๋‹ค. Code Snippet ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์ด ๋งŽ์ง€๋งŒ ์ž์ฃผ ์“ฐ๋Š” ์ฝ”๋“œ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด์ž–์•„์š”? ์ด์ œ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ์ปค์Šคํ…€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ.. 2021. 8. 17.
[iOS] ํ‘ธ์‰ฌ ์•Œ๋ฆผ ํƒญํ–ˆ์„ ๋•Œ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ(How to handle Push Notification?) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์œ ์ €๊ฐ€ ํ‘ธ์‰ฌ ์•Œ๋ฆผ๋ฐ”๋ฅผ ํƒญํ–ˆ์„ ๋•Œ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview AppDelegate ๋จผ์ € UserNotifications๋ฅผ import ํ•ด์ค๋‹ˆ๋‹ค. import UserNotifications ์•„๋ž˜์™€ ๊ฐ™์ด userNotificationCenter๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. let userNotificationCenter = UNUserNotificationCenter.current() didFinishLaunchingWithOptions ๋ฉ”์„œ๋“œ์— ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ userNotificationCenter์˜ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ self๋กœ ํ•ด์ค๋‹ˆ๋‹ค. application.registerForRemoteNotifications()๋„ ์ž‘์„ฑํ•ด.. 2021. 8. 9.
[iOS] iOS ์•ฑ ์ถœ์‹œํ•˜๋Š” ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•ฑ์„ ์ถœ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode Xcode ์ƒ๋‹จ ํƒญ์—์„œ Product-Archive๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. (๋””๋ฐ”์ด์Šค๋Š” ์‹ค์ œ ๋””๋ฐ”์ด์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ Any iOS Device๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”) Archive๊ฐ€ ๋ชจ๋‘ ๋๋‚ฌ๋‹ค๋ฉด Distribute App์„ ๋ˆŒ๋Ÿฌ์„œ ๋ฐฐํฌํ•ด์ค๋‹ˆ๋‹ค. (Archive๋Š” ์•ฑ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ํ•œ 10๋ถ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด๋„ค์š”. App Store Connect๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ์•ฑ์Šคํ† ์–ด ์ปค๋„ฅํŠธ์— Upload ํ•ด์ฃผ์„ธ์š”! ๋ฐฐํฌ ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š”๋ฐ ๋‘ ๊ฐœ ๋‹ค ์„ ํƒํ•ด์ฃผ์„ธ์š”! ์•ฑ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฌผ์–ด๋ณด๋„ค์š”. Automatically manage signing์„ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค. ์•ฑ์— .. 2021. 7. 29.
[iOS] TestFlight ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž ์ดˆ๋Œ€ํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€์—์„œ ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”. ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ์‹ฌ์‚ฌ๋ฅผ ๊ฑฐ์น˜๊ณ  ํ•œ ๋ช‡์‹œ๊ฐ„ ๋’ค? ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ์— ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์‚ฌ์šฉ์ž๋ฅผ ์ดˆ๋Œ€ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋… ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. App Store Connect ์•ฑ์Šคํ† ์–ด ์ปค๋„ฅํŠธ๋กœ ์ด๋™ํ•˜์‹œ๋ฉด ํ†ต๊ณผ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด "ํ…Œ์ŠคํŠธ ์ค€๋น„ ์™„๋ฃŒ" ๋ผ๊ณ  ์จ์ ธ์žˆ์„๊ฑฐ์—์š”. ํ…Œ์ŠคํŠธ ๊ธฐ๊ฐ„์€ 90์ผ์ด ์ฃผ์–ด์ง€๋„ค์š”. ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„  App Store Connect์˜ ์‚ฌ์šฉ์ž ๋ฐ ์•ก์„ธ์Šค๋กœ ๊ฐ€์ค๋‹ˆ๋‹ค. ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๊ณ  ์ดˆ๋Œ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ์ดˆ๋Œ€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž์— ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๊ฐ€ ๋˜๊ณ  ์ดˆ๋Œ€ ์žฌ์ „์†ก์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋ณด์ผ๊ฑฐ์—์š”. ํ•ด๋‹น ์ด๋ฉ”์ผ๋กœ ์ด๋™ํ•˜์…”์„œ.. 2021. 7. 22.
[iOS] TestFlight ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•ฑ์„ ์ถœ์‹œํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ…Œ์ŠคํŠธํ”Œ๋ผ์ดํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค. Any iOS Device(arm64)๋กœ ๋งž์ถฐ์ฃผ์‹œ๊ณ  Xcode ์œ—์ชฝ ํƒญ์˜ Product - Archive๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. (Archiveํ•˜๋Š”๋ฐ ๋ช‡๋ถ„์ •๋„ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค..) ๋ฒ„์ „๊ณผ ์ตœ์†Œ๋ฒ„์ „์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ํ™•์ธํ•˜๊ณ  ์•„์นด์ด๋ธŒ๋ฅผ ํ•ด์ฃผ์„ธ์š”! ์•„์นด์ด๋ธŒ ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ฐฝ์ด ๋œฐํ…๋ฐ Distribute App์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. (No suitable application records were found. ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค๋ฉด App Store Connect์— ํ•ด๋‹น ์•ฑ์ด ๋“ฑ๋ก๋˜์ง€.. 2021. 7. 21.
[iOS] Unit Test์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Xcode์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ๋‹›ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ „๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์€ ์ •๋ง ๊ฐ•์กฐ๋˜์—ˆ๊ณ  ์ €๋„ ํ•ด์•ผ์ง€...ํ•ด์•ผ์ง€.. ํ•˜๋ฉด์„œ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์ด์ œ์•ผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Unit Test Bundle ๋งŒ๋“ค๊ธฐ ๋จผ์ € ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ์— Include Tests ์ฒดํฌํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ์ด๊ฑฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋ฏธ ๋งŒ๋“ค์–ด๋ฒ„๋ ธ๋‹ค๋ฉด Project - General ํƒญ์œผ๋กœ ์ด๋™ํ•˜์‹ ๋’ค ์™ผ์ชฝ ํ•˜๋‹จ ๋ถ€๋ถ„์— + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ๊ทธ ๋‹ค์Œ Unit์„ ๊ฒ€์ƒ‰ํ•˜์‹œ๋ฉด Unit Testing Bundle์ด ์žˆ์„๊ฑฐ์—์š” ์ด๊ฑธ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. Unit Test ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ UnitTest Exam.. 2021. 7. 19.
[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.
[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] ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํ™”๋ฉด ๋…นํ™”ํ•˜๊ณ  GIFํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ๋ธ”๋กœ๊ทธ ๊ธ€์ด๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ๊ฐœํ• ๋•Œ ์•ฑ ์‹คํ–‰ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ƒ์—์„œ ํ™”๋ฉด์„ ๋…นํ™”ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Simulator ๋จผ์ € ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์ผœ์ค๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณค ์™ผ์ชฝ ์ƒ๋‹จ์— ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ File์—์„œ Record Screen์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ์•„๋ž˜์™€ ๊ฐ™์ด ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋ฉด ๋…นํ™”๊ฐ€ ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋…นํ™”๋ฅผ ๊ทธ๋งŒ๋‘๊ณ  ์‹ถ์„๋• ์œ„์˜ ๋นจ๊ฐ„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋˜๋Š”๋ฐ ์•„๋ฌด๋Ÿฐ ์„ค์ •์—†์ด ์ €์žฅํ•˜๋ฉด .mp4 ํŒŒ์ผ๋กœ ์ €์žฅ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. GIF ๋นจ๊ฐ„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์€ ํ™”๋ฉด์œผ๋กœ ๋„์›Œ์ง€๋Š”๋ฐ ๊ฑฐ๊ธฐ์— ์˜ค๋ฅธ์ชฝ ๋งˆ์šฐ์Šค๋ฅผ ํด๋ฆญํ•˜๋ฉด GIFํŒŒ์ผ๋กœ ์ €์žฅํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. GIF ์‹คํ–‰ํ™”๋ฉด Preferences ๋˜ํ•œ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ.. 2021. 5. 3.
[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.
[iOS ๋ฉด์ ‘์งˆ๋ฌธ] ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ (ViewController Life Cycle) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— ์•ฑ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃฌ ์ ์ด ์žˆ๋Š”๋ฐ์š”. (ํ˜น์‹œ ์•ˆ๋ณด์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!) ์˜ค๋Š˜์€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ViewController Life Cycle ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด 6๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์ „์— ํ•œ๋ฒˆ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋˜๋Š”์ง€ ๋ด๋ณผ๊นŒ์š”? ViewController ๋จผ์ € ์ฒซ๋ฒˆ์งธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค ์ถœ๋ ฅ์„ ํ•˜๊ฒŒ๋” ๋งŒ๋“ค์–ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค. import UIKit class ViewController: UIViewController { override func loadView() { super.loadView() print("๋ทฐ ๋กœ๋“œ์ค‘~") } override.. 2021. 3. 22.
728x90
๋ฐ˜์‘ํ˜•