이 가이드의 단계에 따라 iOS용 Places SDK를 다운로드하고 앱에 라이브러리와 종속 항목을 추가하고 API 키를 무료로 가져옵니다.
각 출시 버전에 출시 노트가 제공됩니다.
1단계: Xcode 최신 버전 가져오기
iOS용 Places SDK를 사용하여 프로젝트를 빌드하려면 다음이 필요합니다.
2단계: SDK 설치하기
새 프로젝트에 API를 설치하려면 다음 단계를 따르세요.CocoaPods 사용
iOS용 Places SDK는 모든 장소 기능이 포함된 CocoaPod 포드인 GooglePlaces로 제공됩니다.
CocoaPods는 Swift 및 Objective-C Cocoa 프로젝트용 오픈소스 종속 항목 관리자입니다. CocoaPods 도구가 아직 없다면 터미널에서 다음 명령어를 실행하여 macOS에 설치합니다. 자세한 내용은 CocoaPods 시작 가이드를 참고하세요.
sudo gem install cocoapods
iOS용 Places SDK의 Podfile
를 만들고 이를 사용하여 SDK와 종속 항목을 설치합니다.
- 아직 Xcode 프로젝트가 없으면 지금 만들어 로컬 시스템에 저장합니다. iOS 개발이 처음인 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 프로젝트 디렉터리에
Podfile
파일을 만듭니다. 이 파일은 프로젝트의 종속 항목을 정의합니다. Podfile
을 수정하고 종속 항목을 버전과 함께 추가합니다. 다음은 애플리케이션 대상 이름과GooglePlaces
포드의 이름을 지정하는 예입니다.source 'https://github.com/CocoaPods/Specs.git' platform :ios, '13.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlaces', '7.4.0' end
항상 최신 상태를 유지할 수 있도록pod outdated
를 정기적으로 실행하여 최신 버전이 있는지 감지합니다.Podfile
을 저장합니다.터미널을 열고
Podfile
이 포함된 디렉터리로 이동합니다.cd <path-to-project>
pod install
명령어를 실행합니다.Podfile
에 지정된 API가 API에 포함된 종속 항목과 함께 설치됩니다.pod install
Xcode를 닫은 다음 프로젝트의
.xcworkspace
파일을 (더블클릭하여) 열어 Xcode를 실행합니다. 이 때부터는.xcworkspace
파일을 사용하여 프로젝트를 열어야 합니다.
기존 프로젝트의 API를 업데이트하려면 다음 단계를 따르세요.
- 터미널을 열고
Podfile
가 포함된 프로젝트 디렉터리로 이동합니다. pod update
명령어를 실행합니다. 이렇게 하면Podfile
에 지정된 모든 API가 최신 버전으로 업데이트됩니다.
Carthage 사용
iOS용 Places SDK는 Swift 및 Objective-C Cocoa 프로젝트의 간소화된 분산형 종속 항목 관리자인 Carthage와 함께 사용할 수 있습니다.
- Carthage를 설치합니다. 여러 메서드가 있으므로 정확한 단계는 Carthage README 파일을 참조하세요.
- 아직 Xcode 프로젝트가 없으면 지금 만들어 로컬 시스템에 저장합니다. iOS 개발이 처음인 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 프로젝트 디렉터리에
Cartfile
파일을 만듭니다. 이 파일은 프로젝트의 종속 항목을 정의합니다. Cartfile
을 수정하고 종속 항목을 버전과 함께 추가합니다.
binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
carthage outdated
을 정기적으로 실행하여 최신 버전이 있는지 감지하여 항상 최신 상태를 유지해야 합니다.Cartfile
을 저장합니다.- 터미널 창에서
Cartfile
가 포함된 디렉터리로 이동합니다.
cd <path-to-project>
carthage update
명령어를 실행합니다.Cartfile
에 지정된 API가 API에 포함된 종속 항목과 함께 설치됩니다.- Finder의 프로젝트 디렉터리에서
Carthage/Build/iOS
아래에 있는 다운로드한 프레임워크 파일로 이동합니다. - 다음 번들을 프로젝트로 드래그합니다 (메시지가 표시되면 Copy items if needed 선택).
GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
- 프로젝트에서
GooglePlaces.xcframework
를 마우스 오른쪽 버튼으로 클릭하고 Show In Finder(Finder에서 보기)를 선택합니다. Resources
폴더에서GooglePlaces.bundle
를 프로젝트로 드래그합니다. 메시지가 표시되면 Copy items into destination group's folder(항목을 대상 그룹의 폴더에 복사)가 선택되지 않았는지 확인합니다.- Project Navigator에서 프로젝트를 선택하고 애플리케이션의 대상을 선택합니다.
- 빌드 단계 탭을 열고 바이너리를 라이브러리와 연결 내에서 다음 프레임워크 및 라이브러리를 추가합니다.
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
특정 대상 대신 자신의 프로젝트를 선택하고 Build Settings(빌드 설정) 탭을 엽니다.
- 기타 링커 플래그 섹션에서
-ObjC
를 추가합니다. 이러한 설정이 표시되지 않으면 빌드 설정 표시줄의 필터를 기본에서 모두로 변경합니다.
기존 프로젝트의 API를 업데이트하려면 다음 단계를 따르세요.
- 터미널을 열고
Cartfile
가 포함된 프로젝트 디렉터리로 이동합니다. carthage update
명령어를 실행합니다. 이렇게 하면Cartfile
에 지정된 모든 API가 최신 버전으로 업데이트됩니다.
수동 설치
이 가이드에서는 GooglePlaces 프레임워크를 프로젝트에 수동으로 추가하고 Xcode에서 빌드 설정을 구성하는 방법을 보여줍니다.
- SDK 소스 파일 GooglePlaces-7.4.0을 다운로드합니다.
- 소스 파일을 압축해제합니다.
- Xcode를 실행하고 기존 프로젝트를 열거나 새 프로젝트를 만듭니다. iOS 개발이 처음인 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 프로젝트의 이전 릴리스에서 모든 Maps 번들을 삭제합니다.
- 다음 번들을 프로젝트로 드래그합니다 (메시지가 표시되면 Copy items if needed 선택).
GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
- 프로젝트에서
GooglePlaces.xcframework
를 마우스 오른쪽 버튼으로 클릭하고 Show In Finder(Finder에서 보기)를 선택합니다. Resources
폴더에서GooglePlaces.bundle
를 프로젝트로 드래그합니다. 메시지가 표시되면 Copy items into destination group's folder(항목을 대상 그룹의 폴더에 복사)가 선택되지 않았는지 확인합니다.- Project Navigator에서 프로젝트를 선택하고 애플리케이션의 대상을 선택합니다.
- 빌드 단계 탭을 열고 바이너리를 라이브러리와 연결 내에서 다음 프레임워크 및 라이브러리를 추가합니다.
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
특정 대상 대신 자신의 프로젝트를 선택하고 Build Settings(빌드 설정) 탭을 엽니다.
- 기타 링커 플래그 섹션에서
-ObjC
를 추가합니다. 이러한 설정이 표시되지 않으면 빌드 설정 표시줄의 필터를 기본에서 모두로 변경합니다.
XCFramework 설치
XCFramework는 M1 칩셋을 사용하는 머신을 포함하여 여러 플랫폼에서 사용할 수 있는 바이너리 패키지로, iOS용 Places SDK를 설치합니다. 이 가이드에서는 iOS용 Places SDK가 포함된 XCFramework를 프로젝트에 추가하고 Xcode에서 빌드 설정을 구성하는 방법을 보여줍니다.
카르타고 포함
iOS용 Places SDK는 Swift 및 Objective-C Cocoa 프로젝트의 간단한 분산 종속 항목 관리자인 Carthage와 함께 사용할 수 있습니다.
- Carthage를 설치합니다. 여러 메서드가 있으므로 정확한 단계는 Carthage README 파일을 참조하세요.
- 아직 Xcode 프로젝트가 없으면 지금 만들어 로컬 머신에 저장합니다. iOS 개발이 처음인 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 프로젝트 디렉터리에
Cartfile
파일을 만듭니다. 이 파일은 프로젝트의 종속 항목을 정의합니다. Cartfile
을 수정하고 종속 항목을 버전과 함께 추가합니다.binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
Cartfile
을 저장합니다.터미널 창에서
Cartfile
가 포함된 디렉터리로 이동합니다.cd <path-to-project>
carthage update
명령어를 실행합니다. 이렇게 하면Cartfile
에 지정된 API가 포함된 종속 항목과 함께 설치됩니다.- Finder의 프로젝트 디렉터리에서
Carthage/Build
아래에 있는 다운로드한 프레임워크 파일로 이동합니다. - 다음 XCFramework를 프레임워크, 라이브러리, 삽입된 콘텐츠 아래의 프로젝트로 드래그합니다. 다음과 같이 삽입하지 않음을 선택해야 합니다.
GooglePlaces-x.x.x/GooglePlaces.xcframework
- 프로젝트에서
GooglePlaces.xcframework
를 마우스 오른쪽 버튼으로 클릭하고 Show In Finder를 선택합니다. ios-arm64/GooglePlaces.framework/Resources
폴더의GooglePlaces.bundle
를 Xcode 프로젝트의 최상위 디렉터리로 드래그합니다. 메시지가 표시되면 Copy items into destination group's folder(항목을 대상 그룹의 폴더에 복사)가 선택되지 않았는지 확인합니다.- 프로젝트 탐색기에서 프로젝트를 선택하고 애플리케이션의 대상을 선택합니다.
- 빌드 단계 탭을 열고 바이너리를 라이브러리와 연결 내에서 다음 프레임워크와 라이브러리를 추가합니다.
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
특정 대상 대신 프로젝트를 선택하고 빌드 설정 탭을 엽니다.
- 기타 링커 플래그 섹션에서
-ObjC
를 추가합니다. 이러한 설정이 표시되지 않으면 빌드 설정 표시줄의 필터를 기본에서 모두로 변경합니다.
수동
이 가이드에서는 iOS용 Maps SDK를 프로젝트에 수동으로 추가하고 Xcode에서 빌드 설정을 구성하는 방법을 보여줍니다.
- SDK 소스 파일 GooglePlaces-7.4.0을 다운로드합니다.
- 소스 파일을 압축해제합니다. Frameworks 폴더로 이동하여 XCFramework에 액세스합니다.
- Xcode를 실행하고 기존 프로젝트를 열거나 새 프로젝트를 만듭니다. iOS를 처음 사용하는 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 다음 XCFramework를 프레임워크, 라이브러리, 삽입된 콘텐츠 아래의 프로젝트로 드래그합니다. 다음과 같이 삽입하지 않음을 선택해야 합니다.
GooglePlaces-x.x.x/GooglePlaces.xcframework
- 프로젝트에서
GooglePlaces.xcframework
를 마우스 오른쪽 버튼으로 클릭하고 Show In Finder를 선택합니다. ios-arm64/GooglePlaces.framework/Resources
폴더의GooglePlaces.bundle
를 Xcode 프로젝트의 최상위 디렉터리로 드래그합니다. 메시지가 표시되면 Copy items into destination group's folder(항목을 대상 그룹의 폴더에 복사)가 선택되지 않았는지 확인합니다.- 프로젝트 탐색기에서 프로젝트를 선택하고 애플리케이션의 대상을 선택합니다.
- 빌드 단계 탭을 열고 바이너리를 라이브러리와 연결 내에서 다음 프레임워크와 라이브러리를 추가합니다.
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
특정 대상 대신 프로젝트를 선택하고 빌드 설정 탭을 엽니다.
- 기타 링커 플래그 섹션에서
-ObjC
를 추가합니다. 이러한 설정이 표시되지 않으면 빌드 설정 표시줄의 필터를 기본에서 모두로 변경합니다.
3단계: 앱에 API 키 추가
다음 예에서 YOUR_API_KEY
를 API 키로 바꾸세요.
Swift
다음과 같이 API 키를 AppDelegate.swift
에 추가합니다.
- 다음 import 문을 추가합니다.
import GooglePlaces
application(_:didFinishLaunchingWithOptions:)
메서드에 다음을 추가합니다. 여기서 YOUR_API_KEY를 API 키로 바꿉니다.GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
다음과 같이 API 키를 AppDelegate.m
에 추가합니다.
- 다음 import 문을 추가합니다.
@import GooglePlaces;
application:didFinishLaunchingWithOptions:
메서드에 다음을 추가합니다. 여기서 YOUR_API_KEY를 API 키로 바꿉니다.[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
4단계: 코드 작성 시작하기
다음 코드 샘플은 현재 장소를 가져오는 방법을 보여줍니다.
Swift
import GooglePlaces import UIKit class GetStartedViewController : UIViewController { // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables. @IBOutlet private var nameLabel: UILabel! @IBOutlet private var addressLabel: UILabel! private var placesClient: GMSPlacesClient! override func viewDidLoad() { super.viewDidLoad() placesClient = GMSPlacesClient.shared() } // Add a UIButton in Interface Builder, and connect the action to this function. @IBAction func getCurrentPlace(_ sender: UIButton) { let placeFields: GMSPlaceField = [.name, .formattedAddress] placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in guard let strongSelf = self else { return } guard error == nil else { print("Current place error: \(error?.localizedDescription ?? "")") return } guard let place = placeLikelihoods?.first?.place else { strongSelf.nameLabel.text = "No current place" strongSelf.addressLabel.text = "" return } strongSelf.nameLabel.text = place.name strongSelf.addressLabel.text = place.formattedAddress } } }
Objective-C
#import "GetStartedViewController.h" @import GooglePlaces; @interface GetStartedViewController () // Add a pair of UILabels in Interface Builder and connect the outlets to these variables @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @property (weak, nonatomic) IBOutlet UILabel *addressLabel; @end @implementation GetStartedViewController { GMSPlacesClient *_placesClient; } - (void)viewDidLoad { [super viewDidLoad]; _placesClient = [GMSPlacesClient sharedClient]; } // Add a pair of UILabels in Interface Builder and connect the outlets to these variables. - (IBAction)getCurrentPlace:(UIButton *)sender { GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress); __weak typeof(self) weakSelf = self; [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { __typeof__(self) strongSelf = weakSelf; if (strongSelf == nil) { return; } if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } GMSPlace *place = likelihoods.firstObject.place; if (place == nil) { strongSelf.nameLabel.text = @"No current place"; strongSelf.addressLabel.text = @""; return; } strongSelf.nameLabel.text = place.name; strongSelf.addressLabel.text = place.formattedAddress; }]; } @end
다음 단계
프로젝트가 구성되면 샘플 앱을 살펴볼 수 있습니다. Cocoapods v1.6.1이 설치되어 있어야 합니다.