課金を有効にして 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 >パッケージの依存関係を追加する。 - URL として「https://github.com/googlemaps/ios-places-sdk」と入力し、Enter キーを押します。 [パッケージを追加]をクリックします
-
特定の
version
をインストールするには、[Dependency Rule] フィールドを次のいずれかに設定します。 オプションを提供します。新しいプロジェクトの場合は、最新バージョンと 1 つのバージョンを 「正確なバージョン」を使用して選択します。完了したら、[Add Package] をクリックします。 -
[Choose Package Products] ウィンドウで、
GooglePlaces
が以下に追加されることを確認します。 指定したmain
の目標値。完了したら、[Add Package] をクリックします。 -
インストールを確認するには、ターゲットの
General
ペインに移動します。 [Frameworks, Libraries, and Embedded Content] に、インストールされたパッケージが表示されます。 [Package Dependencies] ビューもセクション(プロジェクト ナビゲーター) パッケージとそのバージョンを確認します。
既存のプロジェクトの package
を更新する手順は次のとおりです。
9.0.0 より前のバージョンからアップグレードする場合は、 次の依存関係:
GoogleMapsBase
、GoogleMapsCore
、 アップグレード後にGoogleMapsM4B
。次の依存関係を削除しないでください。GoogleMaps
。詳しくは、 バージョン 9.0.0 リリースノート。Xcode プロジェクト構成設定で、フレームワーク、ライブラリ、 および埋め込みコンテンツをご覧ください。マイナス記号(-)を使用して、次のフレームワークを削除します。
GoogleMapsBase
(9.0.0 より前のバージョンからのアップグレードのみ)GoogleMapsCore
(9.0.0 より前のバージョンからのアップグレードのみ)GoogleMapsM4B
(9.0.0 より前のバージョンからのアップグレードのみ)
- Xcode で、[File] > [パッケージ >最新のパッケージ バージョンへの更新」を選択します。
- インストールを確認するには、Project Navigator の [Package Dependencies] セクションに移動します。 パッケージとそのバージョンを確認します。
以下を使用して、追加された既存の Places SDK for iOS 依存関係を削除するには、
CocoaPods
の手順は次のとおりです。
- Xcode ワークスペースを閉じます。ターミナルを開き、次のコマンドを実行します。
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
Podfile
、Podfile.resolved
、および CocoaPods 以外で使用していない場合には、Xcodeworkspace
です。
- </ph>
-
Xcode プロジェクト構成設定で、フレームワーク、ライブラリ、
および埋め込みコンテンツをご覧ください。マイナス記号(-)を使用して、次のフレームワークを削除します。
<ph type="x-smartling-placeholder">
- </ph>
GooglePlaces.xcframework
-
Xcode プロジェクトの最上位ディレクトリから、
GooglePlaces
を削除します。 あります。
CocoaPods
Places SDK for iOS は、CocoaPod として利用できます。 pod、GooglePlaces: すべてのプレイス機能が含まれます。
CocoaPods: Swift と Objective-C 用のオープンソース依存関係マネージャー Cocoa プロジェクト。CocoaPods ツールをまだインストールしていない場合は、 macOS の場合、ターミナルから次のコマンドを実行します。詳しくは、 CocoaPods スタートガイド
sudo gem install cocoapods
Places SDK for iOS 用の Podfile
を作成し、
SDK とその依存関係をインストールします。
- Xcode プロジェクトをまだ作成していない場合は、ここで作成してローカルマシンに保存しますiOS 開発を初めて行う場合は、新しいプロジェクトを作成してください [iOS App template] を選択します。
- プロジェクトのディレクトリに、
Podfile
という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。 Podfile
を編集して、依存関係とそのバージョンを追加します。こちらの この例では、アプリケーションのターゲット名と、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
コマンドを実行します。すべての API が更新されますPodfile
で指定されたバージョンを最新バージョンに変更します。
手動インストール
このガイドでは、Places SDK for iOS を含む XCFramework を Xcode でビルド設定を構成します。XCFramework は、マシンを含む複数のプラットフォームで使用できるバイナリ パッケージ Apple Silicon を使用。
- 次の SDK バイナリとリソース ファイルをダウンロードします。 <ph type="x-smartling-placeholder">
- ファイルを解凍して、XCFramework とリソースにアクセスします。
- Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS 開発を初めて行う場合は、新しいプロジェクトを作成し、 [iOS App テンプレート] を選択します。
- プロジェクトから以前のリリースの Maps バンドルをすべて削除します。
-
[全般] タブを開きます。次の XCFramework をプロジェクトにドラッグします
[フレームワーク、ライブラリ、埋め込みコンテンツ] に移動します。確認事項
[Do Not Embed] を選択します。
<ph type="x-smartling-placeholder">
- </ph>
GooglePlaces.xcframework
ダウンロードした GooglePlacesResources から -
GooglePlaces.bundle
を GooglePlacesResources からコピーします。 Xcode プロジェクトの最上位ディレクトリにダウンロードしたファイルを使用します。必ず<ph type="x-smartling-placeholder"></ph>を選択してください プロンプトが表示されたら、コピー先グループのフォルダにアイテムをコピーします。 - プロジェクト ナビゲータでプロジェクトを選択し、 通信できます。
-
[Build Phases] タブを開きます。リンクバイナリ内で
ライブラリに、次のフレームワークとライブラリを追加します。
<ph type="x-smartling-placeholder">
- </ph>
CoreGraphics.framework
CoreLocation.framework
libc++.tbd
libz.tbd
QuartzCore.framework
UIKit.framework
-
特定のターゲットではなくプロジェクトを選択して、 [Build Settings] タブ。[Linking - General ->]その他のリンカー フラグセクションに
-ObjC
を「Debug」に追加[リリース]を選択しますこれらの 設定が表示されない場合は、[Build Settings] バーでフィルタを変更してください。 [基本] から [すべて] に切り替えます。
GooglePlaces.bundle
をドラッグします
GooglePlacesSwift
GooglePlacesSwift(プレビュー版)SDK は、Swift Package Manager、CocoaPods、または手動でインストールできます。「 すべてのプロセスでのインストール手順は、 Places SDK for iOS には以下の違いがあります。
- Xcode 15.3 が必要です。
- Swift Package Manager を使用する場合は、
GooglePlaces
はGooglePlacesSwift
に置き換えます。これには import ステートメントが含まれます。 - バージョン番号を 0.1.0 に更新します。
- 手動でインストールする場合は、次の SDK バイナリとリソース ファイルをダウンロードします。 <ph type="x-smartling-placeholder">
たとえば、CocoaPods を使用する場合、編集後の Podfile
は次のようになります。
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.3' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GooglePlacesSwift', '0.1.0' end
ステップ 3: Apple のプライバシー マニフェスト ファイルを調べる
Apple が App Store のアプリについては、アプリのプライバシーに関する詳細情報を必要とします。最新情報などについては、Apple App Store のプライバシーの詳細ページをご覧ください。
Apple Privacy Manifest ファイルは、SDK のリソース バンドルに含まれています。プライバシー マニフェスト ファイルが含まれていることを確認し、その内容を検査するには、アプリのアーカイブを作成し、そのアーカイブからプライバシー レポートを生成します。
ステップ 4: アプリに 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"];
GooglePlacesSwift
次のように、API キーを AppDelegate.swift
に追加します。
- 次の import ステートメントを追加します。
import GooglePlacesSwift
application(_:didFinishLaunchingWithOptions:)
に以下を追加します。 メソッドで指定し、YOUR_API_KEY を実際の API キーに置き換えます。PlacesClient.shared.provideAPIKey("YOUR_API_KEY")
ステップ 5: コーディングを開始する
次のコードサンプルは、現在の場所を取得する方法を示しています。
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
GooglePlacesSwift
struct ContentView: View { @State var place: Place? var body: some View { Button("Get Place") { // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName, .formattedAddress] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): self.place = place case .failure(let placesError): // Handle error } Text(swiftPlace?.displayName ?? "No place yet") .padding() Text(swiftPlace?.formattedAddress ?? "No place yet") .padding() } }
次のステップ
プロジェクトの構成が完了したら、 サンプルアプリ