課金を有効にして API キーを作成したら、アプリの開発に使用する Xcode プロジェクトをセットアップできます。
各リリースには、リリースノートがあります。
ステップ 1: 必要なソフトウェアをインストールする
Places SDK for iOS を使用してプロジェクトを作成するには、以下が必要です。
- Xcode バージョン 15.0 以降
ステップ 2: Xcode プロジェクトを作成して Places SDK for iOS をインストールする
Swift Package Manager
Places SDK for iOS は、 Swift Package Manager を使用してインストールできます。SDK を追加するには、既存の Places SDK for iOS の依存関係がすべて削除されていることを確認します。
新規または既存のプロジェクトに SDK を追加する手順は次のとおりです。
-
Xcode の
project
またはworkspace
を開き、[File] > [Add Package Dependencies] に移動します。 - URL として「https://github.com/googlemaps/ios-places-sdk」と入力し、Enter キーを押してパッケージを取り込み、[パッケージを追加] をクリックします。
-
特定の
version
をインストールするには、[依存関係ルール] フィールドをバージョン ベースのオプションのいずれかに設定します。新しいプロジェクトの場合は、最新バージョンを指定し、[正確なバージョン] オプションを使用することをおすすめします。完了したら、[パッケージを追加] をクリックします。 -
[Choose Package Products] ウィンドウで、指定した
main
ターゲットにGooglePlaces
が追加されることを確認します。完了したら、[パッケージを追加] をクリックします。 -
インストールを確認するには、ターゲットの
General
ペインに移動します。[Frameworks, Libraries, and Embedded Content] 内に、インストールされているパッケージが表示されます。 [Project Navigator] の [Package Dependencies] セクションで、パッケージとそのバージョンを確認することもできます。
既存のプロジェクトの package
を更新する手順は次のとおりです。
- Xcode で、[File] > [Packages] > [Update To Latest Package Versions] に移動します。
- インストールを確認するには、Project Navigator の [Package Dependencies] セクションに移動して、パッケージとそのバージョンを確認します。
CocoaPods
を使用して追加した Places SDK for iOS の依存関係を削除する手順は次のとおりです。
- Xcode ワークスペースを閉じます。ターミナルを開いて、次のコマンドを実行します。
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
CocoaPods 以外に使用していない場合は、
Podfile
、Podfile.resolved
、Xcode のworkspace
を削除します。
-
Xcode プロジェクトの構成設定で、[フレームワーク、ライブラリ、埋め込みコンテンツ] を見つけます。マイナス記号(-)を使用して、次のフレームワークを削除します。
GooglePlaces.xcframework
-
Xcode プロジェクトの最上位ディレクトリから、
GooglePlaces
バンドルを削除します。
Cocoapods
Places SDK for iOS は、すべてのプレイス機能を含む CocoaPod の GooglePlaces として利用できます。
CocoaPods は、Swift と Objective-C の Cocoa プロジェクト用のオープンソースの依存関係マネージャーです。CocoaPods ツールをまだインストールしていない場合は、ターミナルから次のコマンドを実行して macOS にインストールします。詳しくは、CocoaPods スタートガイドをご覧ください。
sudo gem install cocoapods
Places SDK for iOS の Podfile
を作成し、それを使用して SDK とその依存関係をインストールします。
- Xcode プロジェクトをまだ作成していない場合は、ここで作成してローカルマシンに保存しますiOS 開発を初めて行う場合は、新しいプロジェクトを作成して、iOS アプリ テンプレートを選択します。
- プロジェクトのディレクトリに、
Podfile
という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。 Podfile
を編集し、依存関係とそのversionsを追加します。以下に、アプリケーションのターゲット名とGooglePlaces
Pod の名前を指定する例を示します。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 とその依存関係がインストールされます。pod install
Xcode を終了し、プロジェクトの
.xcworkspace
ファイルを(ダブルクリックして)開いて、Xcode を起動します。これ以降、このプロジェクトを開くには.xcworkspace
ファイルを使用する必要があります。
既存のプロジェクトの API を更新する手順は次のとおりです。
- ターミナルを開き、
Podfile
を含むプロジェクト ディレクトリに移動します。 pod update
コマンドを実行します。これにより、Podfile
で指定されたすべての API が最新バージョンに更新されます。
手動インストール
このガイドでは、Places SDK for iOS を含む XCFramework をプロジェクトに手動で追加し、Xcode でビルド設定を構成する方法について説明します。XCFramework は、Apple シリコンを使用したマシンなど、複数のプラットフォームで使用できるバイナリ パッケージです。
- 次の SDK バイナリ ファイルとリソース ファイルをダウンロードします。
- ファイルを抽出し、XCFramework とリソースにアクセスします。
- Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS 開発が初めての場合は、新しいプロジェクトを作成して、iOS アプリ テンプレートを選択します。
- プロジェクトから以前のリリースの Maps バンドルをすべて削除します。
-
[全般] タブを開きます。プロジェクトの [Frameworks, Libraries, and Embedded Content] に、次の XCFramework をドラッグします。必ず [Do Not Embed] を選択してください。
GooglePlaces.xcframework
ダウンロードした GooglePlacesResources から -
ダウンロードした GooglePlacesResources から
GooglePlaces.bundle
を Xcode プロジェクトの最上位ディレクトリにコピーします。プロンプトが表示されたら、[ Copy items into destination group's folder] を選択します。 - プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
-
[Build Phases] タブを開きます。[Link Binary with Libraries] 内で、次のフレームワークとライブラリを追加します。
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
特定のターゲットではなくプロジェクトを選択し、[Build Settings] タブを開きます。[Linking - General] -> [Other Linker Flags] セクションで、
-ObjC
を [Debug] と [Release] に追加します。これらの設定が表示されない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。
GooglePlaces.bundle
をドラッグします。
Apple のプライバシー マニフェスト ファイルを追加する
- Places SDK for iOS のプライバシー マニフェスト バンドル(GooglePlacesPrivacy)をダウンロードします。
- ファイルを解凍して
GooglePlacesPrivacy.bundle
にアクセスします。 GooglePlacesPrivacy.bundle
を Xcode プロジェクトの最上位ディレクトリにコピーします。
ステップ 3: アプリに API キーを追加する
以下の例で YOUR_API_KEY
とある箇所は、実際の API キーに置き替えてください。
Swift
次のように、API キーを AppDelegate.swift
に追加します。
- 次のインポート ステートメントを追加します。
import GooglePlaces
- 次のコードを
application(_:didFinishLaunchingWithOptions:)
メソッドに追加します。YOUR_API_KEY は実際の API キーに置き換えます。GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
次のように、API キーを AppDelegate.m
に追加します。
- 次のインポート ステートメントを追加します。
@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 がインストールされている必要があります。