์ „์ฒด ๊ธ€

๊ต‰์žฅํ•  ๋‚˜
ยท iOS
์˜ˆ์ „์—๋„ Pagination์€ ํ•ด ๋ณธ ๊ฒฝํ—˜์ด ๋ช‡ ๋ฒˆ ์žˆ์—ˆ์ง€๋งŒ ๋ญ”๊ฐ€ ์•„์ง ๊ฐœ๋…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์žกํžˆ์ง€ ์•Š์•˜๋‹ค๋Š” ์ƒ๊ฐ์— ๋šฑ๋•…๋šฑ๋•… Pagination ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‚ด๊ฐ€ ์ •์˜ํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (์ถœ์ฒ˜ ๋‚ด ๋จธ๋ฆฌ) 1. ํ…์ŠคํŠธ ํ•„ํŠธ์— ํ…์ŠคํŠธ๋ฅผ ํ•œ ๊ธ€์ž ์ž…๋ ฅํ•  ๋•Œ ๋งˆ๋‹ค ๊ฒฐ๊ณผ๊ฐ€ ๋กœ๋“œ๋œ๋‹ค. 2. ์ž…๋ ฅ ํ…์ŠคํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ฐ›์•„์˜จ๋‹ค. 3. UI๋Š” image๊ฐ€ ํ•œ์ค„์— 3๊ฐœ์”ฉ, API 1ํšŒ ํ˜ธ์ถœ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ 20๊ฐœ์”ฉ ์ถ”๊ฐ€๋œ๋‹ค. 4. ๊ฐ€์žฅ ์•„๋ž˜๋กœ ์Šคํฌ๋กค ํ•˜๋ฉด ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. 5. ์ด๋ฏธ์ง€๋Š” ์บ์‹ฑ์ฒ˜๋ฆฌ๋˜์–ด ์ดํ›„ ํ•„์š”ํ•  ๊ฒฝ์šฐ ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Moya๋กœ Api ํ˜ธ์ถœ์„ ํ•˜๊ณ , Kingfisher๋กœ ์ด๋ฏธ์ง€ ๋กœ๋“œ์™€ ์บ์‹ฑ์„ ์ฒ˜๋ฆฌํ–ˆ๋‹ค. ์‹ค์Šต์—๋Š” Kakao Search Image API..
ยท iOS
๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” UserDefaults, CoreData, Keychain... ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ๋ฐฉ๋ฒ•๋“ค์˜ ์“ฐ์ž„์ƒˆ๊ฐ€ ๋‹ค๋ฅธ๋ฐ ๋งŽ๊ณ  ๋งŽ์€ ๋ฐฉ๋ฒ• ์ค‘ ํ‚ค์ฒด์ธ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. Keychain(ํ‚ค์ฒด์ธ)์ด๋ž€? https://developer.apple.com/documentation/security/keychain_services Keychain Services | Apple Developer Documentation Securely store small chunks of data on behalf of the user. developer.apple.com ์• ํ”Œ ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ด์•ผํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ ..
ยท iOS
https://developer.apple.com/documentation/uikit/uiimage/orientation UIImage.Orientation | Apple Developer Documentation Constants that specify the intended display orientation for an image. developer.apple.com ์ด๋ฏธ์ง€๋ฅผ ํšŒ์ „ํ•˜๊ณ  ํฌ๋กญํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ orientation์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. orientation์„ ํ†ตํ•ด ์ด๋ฏธ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์‹œ์ ์— ํšŒ์ „ ๋ฐฉํ–ฅ์„ ๊ฒฐ์ •ํ•˜์—ฌ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚œ๋‹ค. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€ orientation๊ฐ’์„ ์ฐ์–ด๋ณด์•˜๋‹ค. print("[orientation] \(image.imageOrientation)"..
ยท iOS
์ด์ „์— ๋กœ์ปฌ์—์„œ ๋ณด๋‚ด๋Š” ํ‘ธ์‹œ๋Š” ๊ตฌํ˜„ํ•œ ๊ฒฝํ—˜์ด ์žˆ์—ˆ์ง€๋งŒ FCM์ด๋‚˜ APNS๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์—†์–ด ์กฐ๊ธˆ ์ƒ์†Œํ•˜๊ฒŒ ๋‹ค๊ฐ€์™”๋‹ค. FCM์„ ์‚ฌ์šฉํ•ด๋„ ์• ํ”Œ ๊ฐœ๋ฐœ์ž ๊ณ„์ •์—์„œ APN์„ ์„ค์ •ํ•ด์„œ ์ธ์ฆ์„œ๋‚˜ ํ† ํฐ์„ ๋“ฑ๋กํ•ด์•ผํ–ˆ๋Š”๋ฐ ์ด ๊ณผ์ •์„ ํ•™์Šตํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ํ‘ธ์‹œ ์ข…๋ฅ˜ 1. ๋กœ์ปฌ์—์„œ ์ง์ ‘ ๋ณด๋‚ด๋Š” ์•Œ๋ฆผ 2. ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด๋Š” ์•Œ๋ฆผ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ FCM์€ 2๋ฒˆ์— ์†ํ•œ๋‹ค. APNS๋ž€? Apple Push Notification Service๋กœ iOS์—์„œ ํ‘ธ์‹œ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด APNS๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด๋Š” ์•Œ๋ฆผ์˜ ๊ฒฝ์šฐ ๊ผญ ์ด APNS๋ฅผ ๊ฑฐ์ณ์•ผํ•œ๋‹ค. FCM์„ ์‚ฌ์šฉํ•  ๋•Œ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์—์„œ ์•Œ๋ฆผ์„ ๋ณด๋‚ธ๋‹ค๊ณ  ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์‚ฌ์‹ค APNS๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š”๊ฑฐ๊ณ  ์‹ค์ œ ์•Œ๋ฆผ์€ APNS๋กœ๋ถ€ํ„ฐ ์˜ค๊ฒŒ๋œ๋‹ค. ์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ..
ยท iOS
๋””๋ฐ”์ด์Šค์˜ ๊ณ ์œ ํ•œ ๊ฐ’์„ ํ†ตํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ์œ„ํ•œ ๊ณ ์œ ํ•œ ๊ฐ’์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์œผ๋กœ UUID์™€ UDID๊ฐ€ ์žˆ๋‹ค. 1. UDID (Unique Device Identifier) ๊ฐ ๊ธฐ๊ธฐ์— ๋ถ€์—ฌ๋˜๋Š” ๊ณ ์œ ํ•œ ๋””๋ฐ”์ด์Šค ์‹๋ณ„๊ฐ’์ด๋‹ค. ์–ด๋–ค ์•ฑ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ด ๊ฐ’์€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. iOS5 ์ด์ „์—๋Š” ์ฝ”๋“œ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ชฉ์ ์œผ๋กœ ์ธํ•ด deprecated ๋˜์—ˆ๋‹ค. ์ง€๊ธˆ์€ ์ฝ”๋“œ๋กœ ํ™•์ธ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ iTunes๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. UDID๊ฐ€ deprecated ๋˜๋ฉด์„œ ์ด๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด UDID๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 2. UUID (Universally Unique Identifier) deprecated๋œ UDID๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ์œ„ํ•ด UUID๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. UI..
ยท Life
์ž…์‚ฌ ํ›„ ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ์›น๋ทฐ๋กœ ๋˜์–ด์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜€๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ์–ด๋ ค์šด ํ”„๋กœ์ ํŠธ๋Š” ์•„๋‹ˆ์˜€๋‹ค. ์กฐ๊ธˆ ๋ง‰๋ง‰ํ•˜๊ฒŒ ๋Š๊ปด์กŒ๋˜ ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์•ฑ ๋‚ด์—์„œ ์‚ฌ์ง„์„ ์ดฌ์˜ํ•œ ํ›„ ๊ทธ ์‚ฌ์ง„์„ ๋””์ž์ธ๋œ ํฌ๊ธฐ์— ๋งž๊ฒŒ ์ž˜๋ผ ์ธ์ฝ”๋”ฉ ํ›„ ์›น์œผ๋กœ ๋ณด๋‚ด์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ–ˆ๋‹ค. ์‚ฌ์ง„์„ ์ž๋ฅด๋Š” ๊ธฐ๋Šฅ์—๋Š” ํšŒ์ „ ๊ธฐ๋Šฅ๋„ ํฌํ•จ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์ „๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ๋ง‰๋ง‰ํ•ด ๋‹ค๋ฅธ ๋ฉ‹์ง„ ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์ปค์Šคํ…€ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๋‹น์žฅ ์„ ์ž„๋‹˜์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๊ผญ ๊ตฌํ˜„ํ•ด๋‚ด์•ผ๋งŒ ํ–ˆ๊ณ  ์ข€ ๋ง‰๋ง‰ํ–ˆ์ง€๋งŒ.. ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์ง ๋งŽ์ด ๋‚จ์•„์žˆ๋˜ ์‹œ๊ฐ„์— ๊ฐ์‚ฌํ•˜๋ฉฐ ๋น ๋ฅด๊ฒŒ ํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค. ๋จผ์ € ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์‚ฌ์ง„ ํŽธ์ง‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด๊ฒƒ์ด๋‹ค. https://github.com/TimOliver/TOCropView..
ยท iOS
์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์›น๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ธฐ์กด์— ๋‚ด๊ฐ€ ๊ฒฝํ—˜ํ•ด ๋ดค๋˜ ์›น๋ทฐ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ™”๋ฉด์„ ๋„์›Œ์ฃผ๋Š” ๊ฒƒ๊ณผ ์›น๋ทฐ๋ฅผ ์ด์šฉํ•œ ํŒจ์Šค ์ธ์ฆ๋งŒ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ ์ƒ์†Œํ•œ ๊ฐœ๋…์œผ๋กœ ๋‹ค๊ฐ€์™”๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์›น๋ทฐ๋กœ ๋˜์–ด์žˆ์–ด์„œ ๊ผญ ๋„ค์ดํ‹ฐ๋ธŒ๊ฐ€ ํ•„์š”ํ•œ ์ž‘์—…๋“ค(์นด๋ฉ”๋ผ, ์•Œ๋ฆผ ๋“ฑ..)์„ ์ œ์™ธํ•˜๊ณค ๋ชจ๋‘ ์›น๋ทฐ๋กœ ๋˜์–ด์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์•ผ ํ•  ์ž‘์—…์ด ์ ์—ˆ์Œ์—๋Š” ํ™•์‹คํ–ˆ์ง€๋งŒ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ฒ˜์Œ ๊ฒฝํ—˜ํ•ด ๋ณด๋Š” ์›น๋ทฐ ์—ฐ๋™์— ๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋จผ์ € ์ œ๋ชฉ์œผ๋กœ ์–ธ๊ธ‰ํ•œ WKWebView ๋ง๊ณ  UIWebView, SFSafariView์™€ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์›น๋ทฐ๊ฐ€ ์žˆ๋‹ค. 1. UIWebView iOS 2.0์— ์ถœ์‹œ๋œ ๊ต‰์žฅํžˆ ์˜ค๋ž˜๋œ ์›น๋ทฐ์ด๋‹ค. ํ˜„์žฌ deprecate ๋˜์—ˆ์œผ๋ฏ€๋กœ UIWebView๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. 2. WKWeb..
ยท iOS
๋„ค์ดํ‹ฐ๋ธŒ์™€ ์›น๋ทฐ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘ ํฌ๋กฌ๊ณผ ์‚ฌํŒŒ๋ฆฌ์™€ ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ์„ค์ • ์—†์ด๋„ ์ž๋™๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ–ˆ์ง€๋งŒ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์—ฐ๊ฒฐ๋œ WKWebView์—์„œ๋Š” ์ž๋™๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. ์ด์œ ๋Š” WKWebView์—์„œ๋Š” ์ฟ ํ‚ค ๊ฐ’์„ ๋”ฐ๋กœ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ๋งŒ ์ž๋™๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด์˜€๊ณ , ์•ˆ๋“œ๋กœ์ด๋“œ์™€ ๋™์ผํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž๋™๋กœ๊ทธ์ธ์„ ์œ„ํ•ด ์ฟ ํ‚ค ๊ฐ’์„ ์ง์ ‘ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. ๋˜ํ•œ ์ฟ ํ‚ค value๊ฐ€ ๊ธฐ์กด ๊ฐ’์„ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ƒํ™ฉ์ด์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™๋กœ๊ทธ์ธ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์‚ฌํŒŒ๋ฆฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ํœด๋Œ€ํฐ ๋ชจ๋ฐ”์ผ ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ๋””๋ฒ„๊น…ํ•˜์˜€๋‹ค. (ํฌ๋กฌ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๋ƒฅ ์‚ฌํŒŒ๋ฆฌ ์จ๋ณธ์ ์ด ์—†์–ด์„œ ์‚ฌ์šฉํ•ด๋ณด์•˜๋‹ค! ์จ๋ณด๋‹ˆ๊นŒ ์‚ฌํŒŒ๋ฆฌ๊ฐ€ ์ข€ ๋” ํŽธํ•œ๊ฒƒ ..
๋ฆด๋ฆฌ๐Ÿฐ
Hi Lily