์์ ์๋ Pagination์ ํด ๋ณธ ๊ฒฝํ์ด ๋ช ๋ฒ ์์์ง๋ง ๋ญ๊ฐ ์์ง ๊ฐ๋
์ด ๋ช
ํํ๊ฒ ์กํ์ง ์์๋ค๋ ์๊ฐ์ ๋ฑ๋
๋ฑ๋
Pagination ์ค์ต์ ์งํํ๊ฒ ๋์๋ค. ๋ด๊ฐ ์ ์ํ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ๋ค. (์ถ์ฒ ๋ด ๋จธ๋ฆฌ) 1. ํ
์คํธ ํํธ์ ํ
์คํธ๋ฅผ ํ ๊ธ์ ์
๋ ฅํ ๋ ๋ง๋ค ๊ฒฐ๊ณผ๊ฐ ๋ก๋๋๋ค. 2. ์
๋ ฅ ํ
์คํธ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ฐ์์จ๋ค. 3. UI๋ image๊ฐ ํ์ค์ 3๊ฐ์ฉ, API 1ํ ํธ์ถ ์ ๋ฐ์ดํฐ๊ฐ 20๊ฐ์ฉ ์ถ๊ฐ๋๋ค. 4. ๊ฐ์ฅ ์๋๋ก ์คํฌ๋กค ํ๋ฉด ๋ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์จ๋ค. 5. ์ด๋ฏธ์ง๋ ์บ์ฑ์ฒ๋ฆฌ๋์ด ์ดํ ํ์ํ ๊ฒฝ์ฐ ์บ์ฑ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Moya๋ก Api ํธ์ถ์ ํ๊ณ , Kingfisher๋ก ์ด๋ฏธ์ง ๋ก๋์ ์บ์ฑ์ ์ฒ๋ฆฌํ๋ค. ์ค์ต์๋ Kakao Search Image API..
์ ์ฒด ๊ธ
๊ต์ฅํ ๋๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์๋ 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 ์ ํ ๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด ์์ ํ๊ฒ ์ ์ฅํด์ผํ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ค๊ณ ..
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)"..
์ด์ ์ ๋ก์ปฌ์์ ๋ณด๋ด๋ ํธ์๋ ๊ตฌํํ ๊ฒฝํ์ด ์์์ง๋ง FCM์ด๋ APNS๋ฅผ ์ฌ์ฉํ ๊ฒฝํ์ด ์์ด ์กฐ๊ธ ์์ํ๊ฒ ๋ค๊ฐ์๋ค. FCM์ ์ฌ์ฉํด๋ ์ ํ ๊ฐ๋ฐ์ ๊ณ์ ์์ APN์ ์ค์ ํด์ ์ธ์ฆ์๋ ํ ํฐ์ ๋ฑ๋กํด์ผํ๋๋ฐ ์ด ๊ณผ์ ์ ํ์ตํด๋ณด๊ณ ์ ํ๋ค. ํธ์ ์ข
๋ฅ 1. ๋ก์ปฌ์์ ์ง์ ๋ณด๋ด๋ ์๋ฆผ 2. ์๋ฒ์์ ๋ณด๋ด๋ ์๋ฆผ ๋ด๊ฐ ์ฌ์ฉํ FCM์ 2๋ฒ์ ์ํ๋ค. APNS๋? Apple Push Notification Service๋ก iOS์์ ํธ์ ์๋ฆผ์ ๋ณด๋ด๊ธฐ ์ํด APNS๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ์๋ฒ์์ ๋ณด๋ด๋ ์๋ฆผ์ ๊ฒฝ์ฐ ๊ผญ ์ด APNS๋ฅผ ๊ฑฐ์ณ์ผํ๋ค. FCM์ ์ฌ์ฉํ ๋ ํ์ด์ด๋ฒ ์ด์ค์์ ์๋ฆผ์ ๋ณด๋ธ๋ค๊ณ ์ฐฉ๊ฐํ ์ ์๋๋ฐ ์ฌ์ค APNS๋ก ์๋ฆผ์ ๋ณด๋ด๋๊ฑฐ๊ณ ์ค์ ์๋ฆผ์ APNS๋ก๋ถํฐ ์ค๊ฒ๋๋ค. ์ฑ์ ์์ํ ๋ ์๋ ์ฝ๋๋ฅผ ํตํด ..
๋๋ฐ์ด์ค์ ๊ณ ์ ํ ๊ฐ์ ํตํด ๋ฌด์ธ๊ฐ๋ฅผ ์๋ณํ๊ธฐ์ํ ๊ณ ์ ํ ๊ฐ์ด ํ์ํ ์ ์๋ค. ์ด๋ ์ฌ์ฉ๋๋ ๊ฐ๋
์ผ๋ก UUID์ UDID๊ฐ ์๋ค. 1. UDID (Unique Device Identifier) ๊ฐ ๊ธฐ๊ธฐ์ ๋ถ์ฌ๋๋ ๊ณ ์ ํ ๋๋ฐ์ด์ค ์๋ณ๊ฐ์ด๋ค. ์ด๋ค ์ฑ์ ์ฌ์ฉํ๋๋ผ๋ ์ด ๊ฐ์ ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ค. iOS5 ์ด์ ์๋ ์ฝ๋๋ก ํ์ธํ ์ ์์์ง๋ง ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ชฉ์ ์ผ๋ก ์ธํด deprecated ๋์๋ค. ์ง๊ธ์ ์ฝ๋๋ก ํ์ธ์ ๋ถ๊ฐ๋ฅํ๋ฉฐ iTunes๋ฅผ ํตํด ํ์ธํ ์ ์๋ค. UDID๊ฐ deprecated ๋๋ฉด์ ์ด๋ฅผ ๋์ฒดํ๊ธฐ ์ํด UDID๋ฅผ ์ฌ์ฉํ ์ ์๋ค. 2. UUID (Universally Unique Identifier) deprecated๋ UDID๋ฅผ ๋์ฒดํ๊ธฐ์ํด UUID๋ฅผ ์ฌ์ฉํ ์ ์๋ค. UI..
์
์ฌ ํ ์ ๊ท ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์๋ค. ๋๋ถ๋ถ ์น๋ทฐ๋ก ๋์ด์๋ ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ์ด๋ ค์ด ํ๋ก์ ํธ๋ ์๋์๋ค. ์กฐ๊ธ ๋ง๋งํ๊ฒ ๋๊ปด์ก๋ ๊ธฐ๋ฅ์ด ์์๋๋ฐ, ์ฑ ๋ด์์ ์ฌ์ง์ ์ดฌ์ํ ํ ๊ทธ ์ฌ์ง์ ๋์์ธ๋ ํฌ๊ธฐ์ ๋ง๊ฒ ์๋ผ ์ธ์ฝ๋ฉ ํ ์น์ผ๋ก ๋ณด๋ด์ฃผ๋ ์์
์ด ํ์ํ๋ค. ์ฌ์ง์ ์๋ฅด๋ ๊ธฐ๋ฅ์๋ ํ์ ๊ธฐ๋ฅ๋ ํฌํจ๋์๊ธฐ ๋๋ฌธ์ ํ์ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๋์ง ๋ง๋งํด ๋ค๋ฅธ ๋ฉ์ง ์ฌ๋๋ค์ด ๋ง๋ค์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ปค์คํ
ํด ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ๋น์ฅ ์ ์๋์ด ์์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๊ผญ ๊ตฌํํด๋ด์ผ๋ง ํ๊ณ ์ข ๋ง๋งํ์ง๋ง.. ํด์ผํ๊ธฐ ๋๋ฌธ์ ์์ง ๋ง์ด ๋จ์์๋ ์๊ฐ์ ๊ฐ์ฌํ๋ฉฐ ๋น ๋ฅด๊ฒ ํ๊ณ ์ ํ์๋ค. ๋จผ์ ๋ด๊ฐ ์ฌ์ฉํ ์ฌ์ง ํธ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๊ฒ์ด๋ค. https://github.com/TimOliver/TOCropView..
์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ์น๋ทฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋์๋ค. ๊ธฐ์กด์ ๋ด๊ฐ ๊ฒฝํํด ๋ดค๋ ์น๋ทฐ๋ ๊ฐ๋จํ๊ฒ ํ๋ฉด์ ๋์์ฃผ๋ ๊ฒ๊ณผ ์น๋ทฐ๋ฅผ ์ด์ฉํ ํจ์ค ์ธ์ฆ๋ง ํด๋ณธ ๊ฒฝํ์ด ์์ด์ ์์ํ ๊ฐ๋
์ผ๋ก ๋ค๊ฐ์๋ค. ํ๋ก์ ํธ๊ฐ ๋๋ถ๋ถ ์น๋ทฐ๋ก ๋์ด์์ด์ ๊ผญ ๋ค์ดํฐ๋ธ๊ฐ ํ์ํ ์์
๋ค(์นด๋ฉ๋ผ, ์๋ฆผ ๋ฑ..)์ ์ ์ธํ๊ณค ๋ชจ๋ ์น๋ทฐ๋ก ๋์ด์์๊ธฐ ๋๋ฌธ์ ํด์ผ ํ ์์
์ด ์ ์์์๋ ํ์คํ์ง๋ง ๊ฐ๋จํ์ง๋ง ์ฒ์ ๊ฒฝํํด ๋ณด๋ ์น๋ทฐ ์ฐ๋์ ๋ง์ ์ํ์ฐฉ์ค๊ฐ ์์๋ค. ๋จผ์ ์ ๋ชฉ์ผ๋ก ์ธ๊ธํ WKWebView ๋ง๊ณ UIWebView, SFSafariView์ ๊ฐ์ ์ข
๋ฅ์ ์น๋ทฐ๊ฐ ์๋ค. 1. UIWebView iOS 2.0์ ์ถ์๋ ๊ต์ฅํ ์ค๋๋ ์น๋ทฐ์ด๋ค. ํ์ฌ deprecate ๋์์ผ๋ฏ๋ก UIWebView๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋์ฒดํ์ฌ ์ฌ์ฉํ๋ค. 2. WKWeb..
๋ค์ดํฐ๋ธ์ ์น๋ทฐ๋ฅผ ์ฐ๋ํ์ฌ ๊ฐ๋ฐ ์ค ํฌ๋กฌ๊ณผ ์ฌํ๋ฆฌ์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ์์๋ ๋ณ๋ค๋ฅธ ์ค์ ์์ด๋ ์๋๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํ์ง๋ง ๋ค์ดํฐ๋ธ๋ก ์ฐ๊ฒฐ๋ WKWebView์์๋ ์๋๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์๋ค. ์ด์ ๋ WKWebView์์๋ ์ฟ ํค ๊ฐ์ ๋ฐ๋ก ์ค์ ํด์ฃผ์ด์ผ๋ง ์๋๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด์๊ณ , ์๋๋ก์ด๋์ ๋์ผํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํด์ ์๋๋ก๊ทธ์ธ์ ์ํด ์ฟ ํค ๊ฐ์ ์ง์ ์ค์ ํด์ฃผ์๋ค. ๋ํ ์ฟ ํค value๊ฐ ๊ธฐ์กด ๊ฐ์ ์ ์งํ์ง ์๊ณ ์๋ก ๋ง๋ค์ด์ฃผ๋ ์ํฉ์ด์๊ธฐ ๋๋ฌธ์ ์๋๋ก๊ทธ์ธ์ด ์ ์์ ์ผ๋ก ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์๋ค. ์ฌํ๋ฆฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ํด๋ํฐ ๋ชจ๋ฐ์ผ ์น ํ์ด์ง๋ฅผ ๊ฐ๋ฐ์ ๋๊ตฌ๋ก ๋๋ฒ๊น
ํ์๋ค. (ํฌ๋กฌ๋ ๋์ผํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ๊ทธ๋ฅ ์ฌํ๋ฆฌ ์จ๋ณธ์ ์ด ์์ด์ ์ฌ์ฉํด๋ณด์๋ค! ์จ๋ณด๋๊น ์ฌํ๋ฆฌ๊ฐ ์ข ๋ ํธํ๊ฒ ..