728x90 ๋ฐ์ํ ๐ iOS138 [iOS/API] OneSignal์ผ๋ก ํธ์ฌ์๋ฆผ ๋ณด๋ด๋ณด๊ธฐ(OneSignal Push Notification) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ์์๊ทธ๋์ด๋ผ๋ ์๋น์ค๋ฅผ ์ด์ฉํด ํธ์ฌ์๋ฆผ์ ๊ตฌํํด๋ณผ๊ฒ์! ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค~ KeyChainAccess ๋จผ์ ํค์ฒด์ธ ์ ๊ทผ์ผ๋ก ๊ฐ์ ์ธ์ฆ ๊ธฐ๊ด์์ ์ธ์ฆ์๋ฅผ ์์ฒญํฉ๋๋ค. ์์ ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ ๋์คํฌ์ ์ ์ฅ๋จ์ ํด๋ฆญํ ๋ค ๊ณ์์ ๋๋ฌ์ฃผ์ธ์. ์ธ์ฆ์๋ฅผ ์ํ๋ ์ด๋ฆ์ผ๋ก ์ง์ ๋ค์ ์ ์ฅํด์ฃผ์ธ์! ์ด๋ ๊ฒ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ด ์๊ธธ๊ฑฐ์์! Apple Developer ์ด์ ์ ํ ๊ฐ๋ฐ์ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค. ๋ก๊ทธ์ธ - Apple idmsa.apple.com Certificates,Identifiers & Profiles๋ก ์ด๋ํด์ฃผ์ธ์. ์ผ์ชฝ ํญ์์ Identifiers๋ฅผ ํด๋ฆญํด์ฃผ์๊ณ Identifiers + ๋ฒํผ์ ๋๋ฌ์ค๋๋ค. App IDs๋ฅผ ํด๋ฆญํด์ฃผ์๊ณ Continue๋ฅผ.. 2021. 3. 24. [iOS/API] ๋ค์ด๋ฒ API๋ฅผ ์ด์ฉํด์ ์ฃผ์๋ฅผ ์๋,๊ฒฝ๋๋ก ๋ณํํ๊ธฐ(NAVER CLOUD PLATFORM GEOCODING) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์๋ Geocoding ์ ์ด์ฉํด์ ์ํ๋ ์ฃผ์์ ์๋,๊ฒฝ๋๊ฐ์ ๋ฐ์์ฌ๊ฑฐ์์! ์ ํ์์ ์ ๊ณตํ๋ ์ง์ค์ฝ๋ฉ๋ ์์ง๋ง ํ๊ตญ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ์๋ชป๋ ์ ๋ณด๊ฐ ๊ฝค ๋ง์ด ๋์ค๋๋ผ๊ตฌ์. ๊ตฌ๊ธ API๋ฅผ ์ฌ์ฉํด์ผํ๋...? ๊ณ ๋ฏผํ๋๋ฐ ๊ตฌ๊ธ์ 2๋งํ๊น์ง ๋ฌด๋ฃ๊ณ ๊ทธ ์ด์๋๋ฉด ์ ๋ฃ๋ก ์ง๋ถํด์ผ ๋๋๋ผ๊ตฌ์. ํน์๋ ํ๊ณ ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ ์ ๋ค์ด๊ฐ๋ดค๋๋... 300๋งํ๊น์ง ๋ฌด๋ฃ....๐ ๊ณ ๋ฏผํ ๊ฑฐ ์์ด ๋ฐ๋ก ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ ์ ์ด์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~!! NAVER CLOUD PLATFORM ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ์ผ๋ก ์ด๋ํด์ฃผ์ธ์! NAVER CLOUD PLATFORM cloud computing services for corporations,.. 2021. 3. 23. [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. [iOS] ์ ํ์ง๋์ ๋ฒ์ ํ์ํ๊ณ ์์ ํน์ ์์น๊ฐ ์ํด์๋์ง ํ์ธํ๊ธฐ(Make range and Verify location is inside with MapKit) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์๋ ์ํ๋ ์์น๋ฅผ ํ์ํ๊ณ ์ด๋ฏธ์ง์ ๋ ์ด๋ธ์ ๋ฃ์ด๋ณด์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ๋ฅผ ํตํด์ ๋ณด๊ณ ์์ฃผ์ธ์!) ์ด๋ฒ ์๊ฐ์๋ ์ํ๋ ์์น๊ฐ ํน์ ๋ฒ์ ์์ ์ํด์๋์ง ์๋์ง ํ์ธํด๋ณด๊ฒ ์ต๋๋ค. MKMapViewDelegate ์ถ๊ฐํ๊ธฐ ๊ฐ์ฅ ๋จผ์ ViewController์ MKMapViewDelegate๋ฅผ ์ฑํํด์ฃผ์ธ์. (๋น์ฐํ import MapKit๋ ํด์ผ๊ฒ ์ฃ ?) class ViewController: UIViewController ,MKMapViewDelegate{...} ๋ง์ปค ์ค์ ํ๊ธฐ ์ํ๋ ์์น์ ํ์ํ ๋ง์ปค๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ์ ๋ฒ ์๊ฐ์๋ ํ๋์ ๊ตฌ์ญ๋ง ํ์ง๋ง ํ๋์ ๊ตฌ์ญ ๊ทผ์ฒ์ธ ์คํ๋ฒ ์ค๊น์ง ์ถ๊ฐํ๊ฒ ์ต๋๋ค. let mark1 = Marker( title: .. 2021. 3. 18. [iOS] ์ ํ์ง๋์ ์ํ๋ ์์น์ ๊ธ์จ์ ์ด๋ฏธ์ง ๋ฃ๊ธฐ ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์๋ ์ ํ์ง๋์ ์ํ๋ ์์น ํ์ํ๋ ๋ฒ์ ๋ํด์ ์์๋ณด์๋๋ฐ์. (ํน์ ์๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ๋ฅผ ํตํด์ ๋ณด๊ณ ์์ฃผ์ธ์!) ์ฌ๊ธฐ์ ๋ ์ ๊ทธ๋ ์ด๋ ํด์ ์ํ๋ ์์น์ ์ ๋ ๊ฒ ์ ํด์ง ๋งํฌ ํ์๋ง๊ณ ๋ด๊ฐ ์ํ๋ ์ด๋ฏธ์ง๋ ๋ ์ด๋ธ์ ๋ฃ์ ์ ์์๊น? ํ๋ค๊ฐ ์ฐพ์๋ด์ ์ ๋ฆฌํ๊ฒ ๋์์ต๋๋ค. ๋ฐ๋ก ์์ํ ๊ฒ์~ MKMapViewDelegate ๋จผ์ ์ง๋ ์๊ฐ์ ๋งํฌ๋ฅผ ํ์ํ๋ ViewController์ MKMapViewDelegate๋ฅผ ์ฑํํด์ฃผ์ธ์! class ViewController: UIViewController ,MKMapViewDelegate{ override func viewDidLoad() { super.viewDidLoad() mapView.delegate = self.. 2021. 3. 16. [iOS] ์ ํ์ง๋ ์ด์ฉํด์ ์ํ๋ ์์น ํ์ํ๊ธฐ(Mark Location Using MapKit) ์๋ ํ์ธ์ Foma ์ ๋๋ค. ์ค๋ ์์๋ณผ๊ฑด ์ฝ์ฝ์ ํฐ์น ํ๋ ์์ํฌ์์ ์ ๊ณตํ๋ MapKit์ ์ด์ฉํด์ ์ํ๋ ์์น์ ๋งํฌ๋ฅผ ํด๋ณผ๊ฑฐ์์. ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค~ Storyboard ๊ฐ์ฅ ๋จผ์ ์คํ ๋ฆฌ๋ณด๋๋ก ์ด๋ํด์ Map Kit View๋ฅผ ๊ฒ์ํ ๋ค ์๋์ ๊ฐ์ด ViewController์ ์ธํ ํด์ฃผ์ธ์! ViewController ๋ทฐ์ปจํธ๋กค๋ฌ๋ก ์์ ์คํ ๋ฆฌ๋ณด๋์์ ๋ง๋ค์ด์ค mapkitview๋ฅผ ์ฐ๊ฒฐํด์ฃผ์ธ์! @IBOutlet weak var mapView: MKMapView! Marker ๊ทธ ๋ค์ ์ํ๋ ์์น์ ํ์๋ Marker ํด๋์ค๋ฅผ ๋ง๋ค์ด์ค๋๋ค. title๊ณผ subtitle์ ์ํ๋ ์์น๋ฅผ ํฐ์นํ์๋ ์ด๋ฆ๊ณผ ์ค๋ช ์ ๋ปํ๊ตฌ์. coordinate๋ ์ํ๋ ์์น๋ฅผ ์๋์ ๊ฒฝ๋๋ก ๋ฃ์ด์ฃผ๋ ๊ฒ์ ๋๋ค. impor.. 2021. 3. 15. [iOS] ์ํ๋ ์ปจํธ๋กค๋ฌ๋ก ๋๋์๊ฐ๊ธฐ(feat.unwind) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ ์ํ๋ ์ปจํธ๋กค๋ฌ๋ก ๋๋์๊ฐ๋ ๋ฐฉ๋ฒ์ธ unwind์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์~ (๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ก ์ด๋ํ์ จ์ ๊ฒฝ์ฐ์๋ง ํด๋น๋ฉ๋๋ค ใ ) ์๋ ๊ทธ๋ฆผ์ฒ๋ผ A -> B -> C -> D ๋ก ์ด๋ํ๋ ๋ทฐ์ปจํธ๋กค๋ฌ๋ค์ด ์๋ค๊ณ ๊ฐ์ ํ ๊ฒ์~ ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ด๊ฐ ๋ง์ฝ D๊น์ง ์ด๋ํ๊ณ A๋ก ๋์๊ฐ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น์? AViewController AViewController์ ์๋์ ๊ฐ์ด ์ง์ IBAction์ ๋ง๋ค์ด์ค๋๋ค. @IBAction func unwindToAViewController (segue : UIStoryboardSegue) { } DViewController ๊ทธ ๋ค์ ์คํ ๋ฆฌ๋ณด๋๋ก ์ด๋ํ์ ์ DViewController์ ์ ๋ถ๋ถ์ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ ์.. 2021. 3. 3. [iOS] UserDefaults์ ๊ฐ์ฒด ์ ์ฅํ๊ธฐ (Encode & Decode Object in UserDefaults Data ) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋์ UserDefaults์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฒ์ ๋ํด์ ์์๋ณผ๊ฑด๋ฐ์. ์ ๋ UserDefaults์ ๋ชจ๋ธ ์์ฒด๋ฅผ ๋ฃ๊ณ ์ ์ฅํ๊ณ ์ถ์๋ฐ ๊ทธ๊ฒ ์ ์๋๋๋ผ๊ตฌ์... ๊ทธ๋์ ์ด์ฌํ ๊ตฌ๊ธ๋งํด์ ์๊ฒ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์! Food ์ ๋ ์ ๊ฐ ๋จน์๋ ์์์ ์ด๋ฆ,๊ฐ๊ฒฉ,๋ง์์๋์ง ์ฌ๋ถ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ์ง๊ณ ์๋ ์์์ด๋ผ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ง๋ค๊ฒ์! Codable์ UserDefaults์ ์ ์ฅํ๊ณ ๋นผ์ค๊ธฐ ์ํด์ Encode,Decode ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ฑํํ์๊ณ Equatable์ Food๊ฐ์ฒด๋ฅผ ์๋ก ๋น๊ตํ๊ธฐ ์ํด ์ฑํํ์์ต๋๋ค. import Foundation struct Food:Codable,Equatable{ let name:String let pri.. 2021. 2. 26. [iOS] ๊ฒ์ํ๊ณ ๊ฒ์ํ ๊ธ์ ํํฐ๋งํ ๊ฐ์ฒด ํ ์ด๋ธ๋ทฐ์ ๋์ฐ๊ธฐ(Search Object Filtering) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ธ์ ๋ ๊ทธ๋ฌ๋ฏ ์ ๋ชฉ ์ ํ๊ธฐ๊ฐ ๋๋ฌด ํ๋๋ค์... ์ค๋์ ์์๋ณผ๊ฑด ์์น๋ฐ์ ๊ฒ์ํ๊ณ ๊ฒ์ํ ๊ธ์๊ฐ ํฌํจ๋ ๊ฒ๋ค์ ํํฐ๋งํ ๊ฒ์ ํ ์ด๋ธ๋ทฐ์ ๋์ฐ๋ ๊ฒ์ ๋๋ค. ์ด๋ฒ ๊ธ์ ์ ๋ฒ ์๊ฐ์ ์์ ํ์ฑํ๋๋ฒ์์ ๋ฐฐ์ ๋ ๋๋ผ์ ๋์ ์ด๋ฆ๋ค์ด ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๊ฒ ์ต๋๋ค. ํน์ ๋ชป๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด๊ณ ์์ฃผ์ธ์! ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Storyboard ์๋์ ๊ฐ์ด ํ ์ด๋ธ๋ทฐ๋ฅผ ๋ง๋ค์ด์ค๋๋ค. (์ฃผ์ํ์ค ์ ์ ๋ฐ๋์ UIViewController๋ก ๋ง๋์ ํ์ TableView๋ฅผ AutoLayoutํด์ฃผ์ธ์!) ๊ทธ๋ฆฌ๊ณค ํด๋น ํ ์ด๋ธ๋ทฐ๋ฅผ control์ ๋๋ฅด๊ณ ๋๋๊ทธํด์ ViewController์ ๊ฐ์ ธ๊ฐ์ dataSource๋ฅผ ์ฒดํฌํด์ฃผ์ธ์. AddViewController ์ ์ผ ๋จผ์ ํ .. 2021. 2. 25. [iOS] ํ์ฌ ์์น ๋ ์จ & 24์๊ฐ & 7์ผ ๋ฐ์ดํฐ ๋์ฐ๊ธฐ - 2(Current Location Get weather 24 hours a day, 2 week) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ ๋ฒ ์๊ฐ์ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ณผ์ ์ ํ์๋๋ฐ์. (ํน์ ๋ชป๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ๋ก ์ด๋ํด์ ๋จผ์ ๋ณด๊ณ ์์ฃผ์ธ์!) ์ด๋ฒ์๋ ๋ฐ์์จ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ํ๋ฉด์ ๋์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! WeatherView ๋จผ์ WeatherView๋ก ์ด๋ํด์ ํ์ฌ,24์๊ฐ,์ฃผ๊ฐ ๋ ์จ๋ฅผ ๋ด์ ๋ณ์๋ค์ ๋ง๋ค์ด์ค๋๋ค. var currentWeather:CurrentWeather! var hourlyWeathers:[HourlyWeather] = [] var weeklyWeathers:[WeeklyWeather] = [] ๋จผ์ ํ์ฌ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ๊ฐ ๋ ์ด๋ธ์ ๋ง๊ฒ ์ธํ ํด์ค๋๋ค. func setupCurrentWeather() { self.cityLabel.text = currentWeather.c.. 2021. 2. 24. [iOS] ํ์ฌ ์์น ๋ ์จ & 24์๊ฐ & 7์ผ ๋ฐ์ดํฐ ๋์ฐ๊ธฐ - 1(Current Location Get weather 24 hours a day, 2 week) ์๋ ํ์ธ์ Foma ์ ๋๋ค!! ์ ๋ฒ ์๊ฐ์ ํ์ฌ ์์น์ ๋ํ ๊ถํ์ ๋ฐ์์ค๊ณ ํ์ฌ ์์น๋ฅผ ์์๋ณด๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์๋๋ฐ์. ํน์๋ผ๋ ๋ชป๋ณด์ ๋ถ๋ค์ ์ฌ๊ธฐ ๋ก ์ด๋ํ์ ์ ๋ณด๊ณ ์์ฃผ์ธ์~ ์ค๋์ ํ์ฌ ์์น์ ๋ ์จ์ ์์ผ๋ก์ 24์๊ฐ,์์ผ๋ก์ ์ผ์ฃผ์ผ๊ฐ ๋ ์จ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ ํ๋ฉด์ ๋์๋ณผ๊ฑฐ์์. ๋ฐ๋ก ์์ํ ๊ฒ์~ Preview Weatherbit.io ๋ ์จ ์ ๋ณด๋ฅผ ๋ฐ๋ ์๋น์ค๋ ์๋์ ๊ฐ์ด weatherbit์์ ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํ์ต๋๋ค. Weatherbit | Weather API - Historical Weather API Simple. Powerful. Reliable. Getting access to weather data or historical weather data has never be.. 2021. 2. 22. [iOS] ์ฑ์ฌ์ฉ์ค ์์น ๊ถํ ๋ฐ์์ค๊ณ ํ์ฌ ์์น ์์๋ด๊ธฐ ( Request Location Authorization & Detect Current Location) ์๋ ํ์ธ์ Foma ์ ๋๋ค! ์ค๋ ์์๋ณผ๊ฑด ์ง๋ ์๊ฐ์ ์ด์ด์ ๋ ์จ์ ๊ด๋ จ๋ ์ ๋ณด์ธ๋ฐ์. ํ์ฌ ๋ด๊ฐ ์๋ ์ง์ญ์ ๋ ์จ๋ฅผ ์๊ธฐ ์ํด์ ํ์ฌ ์์น๋ฅผ ์์์ผ ํ์์์? ํ์ฌ ์์น๋ฅผ ์๊ธฐ ์ํด์ ์ฌ์ฉ์์ ๋์๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋์ ์ค๋์ ์ฌ์ฉ์์ ์์น ๊ถํ ๋ฐ๊ธฐ์ ๋๋ค! ๋ฐ๋ก ์์ํ ๊ฒ์! Info.plist ๊ฐ์ฅ ๋จผ์ info.plist์์ ์ฑ์ ์ฌ์ฉํ๋๋์ ์์น๋ฅผ ๋ฐ์๋ ๋๋๋ ๊ถํ์ ์ค์ ํด์ค๋๋ค. NSLocationWhenInUseUsageDescription ์์น ์ข ์ธ๊ฒ? ์๋์ ๊ฐ์ด ์ถ๊ฐํ์ ๋ ๋ฉ๋๋ค! ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ViewController๋ก ๊ฐ์ค๋๋ค. (ํธ์์ WeatherViewController๋ผ๊ณ ๋ถ๋ฅผ๊ฒ์!) WeatherViewController ๋จผ์ CoreLocation์ import ํด์ค๋.. 2021. 2. 19. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 12 ๋ค์ 728x90 ๋ฐ์ํ