Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กโš ๏ธ deprecated โš ๏ธ/๊ผผ๊ผผํ•œ ์žฌ์€์”จ(์‹ค์ „) (37)

lgvv98

[iOS14] Touch ID ์‚ฌ์šฉ๋ฒ•

ํ„ฐ์น˜ ์•„์ด๋””๋Š” iOS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ์•„์ด๋”” ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋˜๋˜ ๋กœ์ปฌ ์ธ์ฆ์„ ์ง€๋ฌธ ์ธ์‹๋งŒ์œผ๋กœ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ๊ธฐ๋Šฅ iOS7๋ถ€ํ„ฐ ์ผ๋ถ€ ์ž์ฒด์•ฑ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๊ณต๊ฐœํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ, ํŠนํžˆ ์•ฑ์Šคํ† ์–ด๋‚˜ ์•„์ดํด๋ผ์šฐ๋“œ ๋“ฑ์—์„œ๋Š” ์ตœ์ดˆ 1ํšŒ๋งŒ ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ๋กœ ๋กœ๊ทธ์ธ ํ•˜๊ณ  ๋‚˜๋ฉด ์ดํ›„ ๋ถ€ํ„ฐ๋Š” ํ„ฐ์น˜ ์•„์ด๋””๋ฅผ ํ†ตํ•ด ์ธ์ฆํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. iOS8๋ถ€ํ„ฐ๋Š” ์ผ๋ฐ˜ ์•ฑ์—์„œ๋„ ํ„ฐ์น˜ ์•„์ด๋”” API๋ฅผ ์ด์šฉํ•œ ๋กœ์ปฌ ์ธ์ฆ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ„ฐ์น˜ ์•„์ด๋””์˜ API๋Š” LocalAuthentication์ด๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋œ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€๋ฌธ ์ธ์‹์—์„œ ํ”ํžˆ ๋ณด๊ฒŒ ๋˜๋Š”, ์•„์ดํฐ ๋ฒ„ํŠผ์— ์†๊ฐ€๋ฝ ๋Œ€๊ณ  ์Šค์บ”ํ•˜๊ธฐ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ™”๋ฉด์„ ์ œ๊ณตํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง€๋ฌธ ์ธ์‹์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๊ธฐ๋Šฅ์„..

ํ† ํฐ ๊ฐฑ์‹ ๊ณผ OAuth 2.0 ์ธ์ฆ

ํ† ํฐ์—๋Š” ํฌ๊ฒŒ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค. ์•ก์„ธ์Šค ํ† ํฐ์€ API ํ˜ธ์ถœ ์‹œ ์ธ์ฆ์„ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ณ , ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์€ ์•ค์„ธ์Šค ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ ๊ฐฑ์‹ ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ๋Œ€์‹  ๋กœ๊ทธ์ธ ์ฐฝ์„ ๋„์›Œ ์ƒˆ๋กœ ๋กœ๊ทธ์ธํ•˜๋„๋ก ์ฒ˜๋ฆฌํ•˜๋ฉด ๋„์ง€ ์•Š๋ƒ๊ณ  ๋ฐ˜๋ฌธํ• ์ง€๋„ ใ…๋ฅด์ง€๋งŒ, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋งค๋ฒˆ ๋กœ๊ทธ์ธ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์ฒ™ ํ”ผ๊ณคํ•œ ์ผ์ด๋‹ค. OAuth 2.0 ์ธ์ฆ ํ‘œ์ค€ ์—ญ์‹œ ๋ชจ๋ฐ”์ผ์—์„œ์˜ ๋ถˆํŽธํ•จ์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ€๊ธ‰์  ๋กœ๊ทธ์ธ ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ค„์ด๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ธ์ฆ์— ๊ผญ ํ•„์š”ํ•˜์ง€๋งŒ ์ˆ˜๋ช…์ด ์งง์€ ์•ก์„ธ์Šค ํ† ํฐ๊ณผ ์•ก์„ธ์Šค ํ† ํฐ์„ ๊ฐฑ์‹ ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š์ง€๋งŒ ์ˆ˜๋ช…์ด ๊ธด ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค. ํ† ํฐ ๊ด€๊ณ„๋ฅผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด์ž๋ฉด 1. ์•ก์„ธ์Šค ํ† ํฐ์€ ..

[iOS14] ํ‚ค ์ฒด์ธ(key Chain)

ํ‚ค ์ฒด์ธ์ด๋ž€ ์• ํ”Œ ๊ณ„์—ด์˜ ์šด์˜์ฒด์ œ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ๊ณ„์ •์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์•”ํ˜ธํšŒ๋œ ์ €์žฅ์†Œ ์•„์ดํด๋ผ์šฐ๋“œ, macOS, watchOS, ์•ฑ ์•„์ด๋””, ์›น์— ์ €์žฅ๋œ ์•„์ด๋””, ์™€์ดํŒŒ์ด ํŒจ์Šค์›Œ๋“œ ๋“ฑ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ด์šฉ๋œ๋‹ค. ํ‚ค ์ฒด์ธ์˜ ํŠน์„ฑ 1. ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ฑ์€ ์ž๊ธฐ ์ž์‹ ์˜ ํ‚ค ์ฒด์ธ์—๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ 2. iOS์—์„œ ํ‚ค ์ฒด์ธ์˜ ์œ„์น˜๋Š” *์ƒŒ๋“œ๋ฐ•์Šค ์™ธ๋ถ€์ด๋ฏ€๋กœ, ์•ฑ์„ ์‚ญ์ œํ•ด๋„ ํ‚ค ์ฒด์ธ์— ์ €์žฅ๋˜๋Š” ์ •๋ณด๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Œ 3. ์•ฑ์˜ ํ”„๋กœ๋น„์ €๋‹ ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ์•ฑ ๊ฐ„์˜ ์‚ฌ์šฉ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ผํ•œ ์• ๋น™๋ผ๋„ ํ”„๋กœ๋น„์ €๋‹ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•ด์„œ ๊ธฐ์กด ์ •๋ณด๋ฅผ ๋” ์ด์ƒ ์กฐํšŒํ•  ์ˆ˜ ์—†๋‹ค. 4. ํ‚ค ์ฒด์ธ ๊ทธ๋ฃน์„ ์‚ฌ์šฉํ•˜์—ฌ, ์„œ๋กœ ๋‹ค๋ฅธ ์•ฑ์—์„œ๋„ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ  ๊ฐ€๋Šฅ 5. ๋น„๋ฒˆ ๋˜๋Š” ๊ฐœ์ธํ‚ค์ฒ˜๋Ÿผ ๋ณดํ˜ธ๊ฐ€ ํ•„์š”ํ•œ ํ•ญ๋ณต์€ ์•”..

[iOS14] Unwind ์„ธ๊ทธ์›จ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ

์ž ์ƒ๊ฐํ•ด๋ณด์ž ๋‚ด๊ฐ€ ํšŒ์›๊ฐ€์ž…ํ•˜๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„์ค‘์ธ๋ฐ, alert๋กœ ํ™•์ธ์„ ํด๋ฆญํ•˜๋ฉด ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต์„ ์ฃผ๊ณ  ๊ทธ ํ™”๋ฉด์— ๋‚จ์•„์žˆ์œผ๋ฉด ๋ฌด์–ธ๊ฐ€ ์ด์ƒํ•˜๊ฒ ์ง€? ๋ญ”๊ฐ€ ๋‹ค์Œ ์ง„ํ–‰๊ณผ์ •์œผ๋กœ ํ๋ฆ„์ด ๊ณ„์† ์ด์–ด์ ธ์•ผ ํ•˜๋Š”๋ฐ ํ”„๋กœํ•„ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”๊ฑฐ, ๊ทผ๋ฐ ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด์„œ ์ด์ „ ํ™”๋ฉด์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด ๋ผ ๊ทธ๋Ÿฌ๋ฉด ํ™•์ธ ๋ˆŒ๋ €์„๋•Œ completion ๋ถ€๋ถ„์— self.navigationController?.popViewController(animate:false) ๋กœ ํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๋˜๊ฒ ์ง€? ๊ทธ๋Ÿฐ๋ฐ show ํƒ€์ž…์œผ๋กœ ์ด๋ฏธ ๋‚˜๋Š” ํ™”๋ฉด ์ „ํ™˜์„ ํ–ˆ์œผ๋‹ˆ ๋Œ์•„๊ฐˆ๋•Œ๋„ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์•ผ๋งŒ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•ด. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ์ƒ์„ธํ•˜๊ฒŒ ์ด์•ผ๊ธฐ ํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๋Š” ์•ฑ์„ ๊ตฌํ˜„ํ•˜๋‹ค ๋ณด๋ฉด์€ ์ด์ „ ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ ๋” ์ด์ „ ํ™”๋ฉด์œผ..

Alamofire ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ( + CocoaPods ๊ฐœ๋…) ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•

Alamofire๋Š” HTTP ๋„คํŠธ์›Œํ‚น์„ ์œ„ํ•ด ์Šค์œ„ํ”„ํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋œ ๋น„๋™๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, URLRequest + URLSession ๊ฐ์ฒด๋ฅผ ๋ž˜ํ•‘ํ•œ ๊ฐ„๊ฒฐํ•œ ๊ตฌ์„ฑ ๋•๋ถ„์— ๋ชจ๋ฐ”์ผ ์„œ๋ฒ„์™€ HTTPํ†ต์‹ ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ API ํ˜ธ์ถœ ์—ญ์‹œ Alamofire๋ฅผ ์ด์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์žฅ์ ์€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ์š”์ฒญ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ ์„œ๋ฒ„์˜ ์‘๋‹ต ์ปจํ…์ธ  ํƒ€์ž…์— ๋งž์ถ”์–ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์†Œ๋“œ ์ œ๊ณต ์˜ˆ๋ฅผ๋“ค๋ฉด JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ์ „์šฉ ๋ฉ”์†Œ๋“œ๋ผ๋˜๊ฐ€, ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ์œ„ํ•œ ์ „์šฉ ๋ฉ”์†Œ๋“œ, ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›๊ธฐ ์œ„ํ•œ ๋‹ค์šด๋กœ๋“œ ๋ฉ”์†Œ๋“œ ๋“ฑ ํŠนํžˆ JSON ์ „์šฉ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฒฐ๊ณผ๊ฐ’์„ ์†์‰ฝ๊ฒŒ ํŒŒ์‹ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋‹ค์šด๋กœ๋“œ ๋ฉ”์†Œ๋“œ์—์„œ๋Š” ๋‹ค์šด๋กœ๋“œ ..

[iOS14] ATS์™€ ๊ด€๋ จํ•˜์—ฌ

์ด ํ•ญ๋ชฉ์€ ์•ฑ์ด ์„œ๋ฒ„์— ์ „์†กํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณด์•ˆ ์„ค์ •์œผ๋กœ ์ค„์—ฌ์„œ ATS๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์‰ฝ๊ฒŒ ์•ฑ์ด HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์™ธ๋ถ€ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ ์™œ๋ƒํ•˜๋ฉด ์• ํ”Œ ์ •์ฑ…์ƒ HTTPS๋ฅผ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ HTTP ์‚ฌ์šฉ์‹œ ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ( ๊ทธ๋Ÿผ์—๋„ ์‹ค์ œ ์•ฑ ์ถœ์‹œ์—์„œ๋Š” HTTPS๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ฆฌ์ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค ) ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์„œ๋ฒ„๊ฐ€ HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ATS๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. HTTPS ํ”„๋กœํ† ์ฝœ์€ ๋ฐ์ดํ„ฐ ํŒจํ‚ท์„ ๋ชจ๋‘ ์•”ํ˜ธํ™” ํ•˜์—ฌ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ์•ˆ์ „ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋„๋ฉ”์ธ์ด ์•„๋‹Œ IP ๊ธฐ๋ฐ˜์˜ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์œผ๋ฉด ATS ์„ค์ •์ด ํ•„์š” ์—†์ง€๋งŒ, IP ๊ธฐ..