결제를 사용 설정하고 API 키를 만든 후에는 앱 개발에 사용할 Xcode 프로젝트를 설정할 수 있습니다.
버전마다 출시 노트가 제공됩니다.
1단계: 필수 소프트웨어 설치하기
iOS용 Places SDK를 사용하여 프로젝트를 빌드하려면 다음이 필요합니다.
- Xcode 버전 15.0 이상
2단계: Xcode 프로젝트 만들기 및 iOS용 Places SDK 설치하기
Swift Package Manager
iOS용 Places SDK는 Swift Package Manager를 통해 설치할 수 있습니다. SDK를 추가하려면 기존 iOS용 Places SDK 종속 항목을 삭제했는지 확인하세요.
새 프로젝트 또는 기존 프로젝트에 SDK를 추가하려면 다음 단계를 따르세요.
-
Xcode
project
또는workspace
를 열고 File > Add Package Dependencies로 이동합니다. - https://github.com/googlemaps/ios-places-sdk를 URL로 입력하고 Enter 키를 눌러 패키지를 가져온 다음 '패키지 추가'를 클릭합니다.
-
특정
version
를 설치하려면 종속 항목 규칙 필드를 버전 기반 옵션 중 하나로 설정합니다. 새 프로젝트의 경우 최신 버전을 지정하고 '정확한 버전' 옵션을 사용하는 것이 좋습니다. 완료되면 '패키지 추가'를 클릭합니다. -
Choose Package Products 창에서
GooglePlaces
이 지정된main
타겟에 추가되는지 확인합니다. 완료되면 '패키지 추가'를 클릭합니다. -
설치를 확인하려면 대상의
General
창으로 이동합니다. 프레임워크, 라이브러리 및 삽입된 콘텐츠에 설치된 패키지가 표시됩니다. 'Project Navigator'의 'Package Dependencies' 섹션에서 패키지와 버전을 확인할 수도 있습니다.
기존 프로젝트의 package
를 업데이트하려면 다음 단계를 따르세요.
- Xcode에서 'File > Packages > Update To Latest Package Versions'(파일 > 패키지 > 최신 패키지 버전으로 업데이트)로 이동합니다.
- 설치를 확인하려면 Project Navigator의 Package Dependencies 섹션으로 이동하여 패키지와 버전을 확인합니다.
CocoaPods
를 사용하여 추가된 기존 iOS용 Places SDK 종속 항목을 삭제하려면
다음 단계를 따르세요.
- Xcode 작업공간을 닫습니다. 터미널을 열고 다음 명령어를 실행합니다.
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
CocoaPods 이외의 용도로 사용하지 않는 경우
Podfile
,Podfile.resolved
, Xcodeworkspace
를 삭제합니다.
-
Xcode 프로젝트 구성 설정에서 프레임워크, 라이브러리, 삽입된 콘텐츠를 찾습니다. 빼기 기호(-)를 사용하여 다음 프레임워크를 삭제합니다.
GooglePlaces.xcframework
-
Xcode 프로젝트의 최상위 디렉터리에서
GooglePlaces
번들을 삭제합니다.
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 App template을 선택합니다.
- 프로젝트 디렉터리에
Podfile
파일을 만듭니다. 이 파일은 프로젝트의 종속 항목을 정의합니다. Podfile
를 수정하고 versions과 함께 종속 항목을 추가합니다. 다음은 애플리케이션 대상 이름과GooglePlaces
포드의 이름을 지정하는 예시입니다.source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlaces', '8.3.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가 최신 버전으로 업데이트됩니다.
수동 설치
이 가이드에서는 iOS용 Places SDK가 포함된 XCFramework를 프로젝트에 수동으로 추가하고 Xcode에서 빌드 설정을 구성하는 방법을 설명합니다. XCFramework는 Apple 실리콘을 사용하는 머신을 비롯한 여러 플랫폼에서 사용할 수 있는 바이너리 패키지입니다.
- 다음 SDK 바이너리 및 리소스 파일을 다운로드합니다.
- 파일을 추출하여 XCFramework 및 리소스에 액세스합니다.
- Xcode를 실행하고 기존 프로젝트를 열거나 새 프로젝트를 만듭니다. iOS 개발을 처음 사용하는 경우 새 프로젝트를 만들고 iOS 앱 템플릿을 선택합니다.
- 프로젝트의 이전 릴리스에서 모든 Maps 번들을 삭제합니다.
-
일반 탭을 엽니다. 다음 XCFramework를 프레임워크, 라이브러리 및 삽입된 콘텐츠의 프로젝트로 드래그합니다. 삽입 안함을 선택해야 합니다.
GooglePlaces.xcframework
다운로드한 GooglePlacesResources에서 -
다운로드한 GooglePlacesResources에서
GooglePlaces.bundle
를 Xcode 프로젝트의 최상위 디렉터리에 복사합니다. 메시지가 표시되면 항목을 대상 그룹의 폴더에 복사를 선택해야 합니다. - Project Navigator에서 프로젝트를 선택하고 애플리케이션의 타겟을 선택합니다.
-
Build Phases 탭을 엽니다. Link Binary with Library에서 다음 프레임워크 및 라이브러리를 추가합니다.
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
특정 대상 대신 자신의 프로젝트를 선택하고 Build Settings 탭을 엽니다. 연결 - 일반 -> 기타 링커 플래그 섹션에서
-ObjC
를 '디버그' 및 '릴리스'에 추가합니다. 이러한 설정이 표시되지 않으면 Build Settings(빌드 설정) 표시줄의 필터를 Basic에서 All로 변경합니다.
GooglePlaces.bundle
을(를) 드래그합니다.
Apple 개인 정보 보호 매니페스트 파일 추가
- iOS용 Places SDK의 개인 정보 보호 매니페스트 번들: GooglePlacesPrivacy를 다운로드합니다.
GooglePlacesPrivacy.bundle
에 액세스하려면 파일의 압축을 풉니다.GooglePlacesPrivacy.bundle
를 Xcode 프로젝트의 최상위 디렉터리에 복사합니다.
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이 설치되어 있어야 합니다.