๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŽ iOS/Third Party

[iOS/API] Google Places Autocomplete API(์ฃผ์†Œ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ ์ด์šฉํ•˜๊ธฐ)

by Fomagran ๐Ÿ’ป 2019. 12. 19.
728x90
๋ฐ˜์‘ํ˜•

๋จผ์ €, ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐ˜๋“œ์‹œ ๊ฒฐ์ œ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค. ์•ˆ๊ทธ๋Ÿฌ๋ฉด ๊ฒ€์ƒ‰์„ ํ–ˆ์„ ๋•Œ ์•„๋ž˜ํ™”๋ฉด์ฒ˜๋Ÿผ ๋–  ๊ฒ€์ƒ‰์„ ์ œํ•œํ–ˆ๋‹ค.

๊ฒฐ์ œ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฒ• ์™ผ์ชฝ ์ƒ๋‹จ์— ํ–„๋ฒ„๊ฑฐ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ๊ฒฐ์ œ๋ถ€๋ถ„์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œฌ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฒฐ์ œ ๊ณ„์ • ์—ฐ๊ฒฐ์„ ํ•ด์ค€ ๋’ค 

๋‹ค์‹œ ํ–„๋ฒ„๊ฑฐ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  API ๋ฐ ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋งŒ๋“ค๊ธฐ๋ฅผ ๋ˆ„๋ฅด๊ณ  API ํ‚ค๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค.

API ํ‚ค๋Š” ๋‚˜์ค‘์— ์„ค์ •ํ•  ๋•Œ ์“ฐ์ด๋‹ˆ ์ž˜ ์ ์–ด๋‘”๋‹ค. 

 

 

์ €๋ ‡๊ฒŒ ๋…ธ๋ž€ ๋Š๋‚Œํ‘œ ๋ชจ์–‘์ด ๋œจ๋Š” ๊ฑด ์ œํ•œ ์„ค์ •์„ ํ•ด์ฃผ๋ผ๋Š” ๋œป์ด๋‹ค. 

๋…ธ๋ž€์ƒ‰ ๋Š๋‚Œํ‘œ๋ชจ์–‘์„ ํด๋ฆญํ•˜๋ฉด ์„ค์ • ์ˆ˜์ •์ด ๋œจ๋Š”๋ฐ ๊ฑฐ๊ธธ ๋“ค์–ด๊ฐ€์„œ

iOS์•ฑ , ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฒˆ๋“ค ID, ํ‚ค ์ œํ•œ ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” API (์ง€๊ธˆ์€ Places API๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ๊ทธ๊ฒƒ๋งŒ ์„ค์ •) ์„ ์„ค์ •ํ•ด์ค€๋‹ค.

๋ฒˆ๋“ค ์•„์ด๋”” ์•Œ์•„๋‚ด๋Š” ๋ฒ•์€ xcode์— ๋“ค์–ด๊ฐ€์„œ ๋งจ ์ขŒ์ธก ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œจ๋Š”๋ฐ ๊ฑฐ๊ธฐ์„œ Bundle Identifier์˜ ์ฃผ์†Œ๋ฅผ ์ ์–ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  API ๋ฐ ์„œ๋น„์Šค์˜ ๋Œ€์‹œ๋ณด๋“œ๋กœ ์ด๋™ํ•ด์„œ ์„œ๋น„์Šค ์‚ฌ์šฉ ์„ค์ •์„ ํ•ด์ค€๋‹ค.

+

+์‚ฌ์šฉ ์„ค์ •์„ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋œจ๋Š”๋ฐ ๊ฑฐ๊ธฐ์„œ Places API๋ฅผ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ˆ„๋ฅธ ๋’ค ์‚ฌ์šฉ ์„ค์ •์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ ํ•  ์ผ์€ ๋์ด๋‹ค! ์ด์ œ xcode๋กœ ๋Œ์•„๊ฐ€์„œ podfile์— GooglePlaces๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ„ฐ๋ฏธ๋„์— cd ํ•ด๋‹นํŒŒ์ผ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ  pod install์„ ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด์„œ GooglePlaces๋ฅผ import๋ฅผ ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 override func viewDidLoad() {
        super.viewDidLoad()
          let controller = GMSAutocompleteViewController() //๊ตฌ๊ธ€ ์ž๋™์™„์„ฑ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ
          controller.delegate = self //๋”œ๋ฆฌ๊ฒŒ์ดํŠธ
          present(controller, animated: true, completion: nil) //๋ณด์—ฌ์ฃผ๊ธฐ
          }
          


extension ViewController: GMSAutocompleteViewControllerDelegate { //ํ•ด๋‹น ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ต์Šคํ…์…˜์œผ๋กœ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ ๋‹ฌ์•„์ค€๋‹ค.
    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {
         print("Place name: \(String(describing: place.name))") //์…€ํƒญํ•œ ๊ธ€์”จ์ถœ๋ ฅ
         dismiss(animated: true, completion: nil) //ํ™”๋ฉด๊บผ์ง€๊ฒŒ
    } //์›ํ•˜๋Š” ์…€ ํƒญํ–ˆ์„ ๋•Œ ๊บผ์ง€๊ฒŒ
    
    func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
        print(error.localizedDescription)//์—๋Ÿฌ๋‚ฌ์„ ๋•Œ ์ถœ๋ ฅ
    } //์‹คํŒจํ–ˆ์„ ๋•Œ
    
    func wasCancelled(_ viewController: GMSAutocompleteViewController) {
        dismiss(animated: true, completion: nil) //ํ™”๋ฉด ๊บผ์ง€๊ฒŒ
    } //์บ”์Šฌ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ํ™”๋ฉด ๊บผ์ง€๊ฒŒ
    
    
}

์•„๋ž˜ ํ™”๋ฉด์„ ๋ณด๋ฉด ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ฃผ์†Œ ์ฐํžˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€