課金を有効にして API キーを作成すると、アプリの開発に使用する Xcode プロジェクトを設定できるようになります。
各リリースには、リリースノートがあります。
ステップ 1: 必要なソフトウェアをインストールする
Maps SDK for iOS を使ってプロジェクトを作成するには、次のものをダウンロードしてインストールする必要があります。
- Xcode バージョン 15.0 以降
ステップ 2: Xcode プロジェクトを作成し、Maps SDK for iOS をインストールする
Swift Package Manager
Maps SDK for iOS は Swift Package Manager からインストールできます。この SDK を追加するには、既存の Maps SDK for iOS の依存関係がすべて削除されていることをご確認ください。
新規または既存のプロジェクトに SDK を追加する手順は次のとおりです。
-
Xcode の
project
またはworkspace
を開き、[File] > [Add Package Dependencies] に移動します。 - URL として「https://github.com/googlemaps/ios-maps-sdk」と入力し、Enter キーを押してパッケージを取り込み、[Add Package] をクリックします。
-
特定の
version
をインストールするには、[依存関係ルール] フィールドをバージョン ベースのオプションのいずれかに設定します。新しいプロジェクトの場合は、最新バージョンを指定し、[正確なバージョン] オプションを使用することをおすすめします。完了したら、[パッケージを追加] をクリックします。 -
[Choose Package Products] ウィンドウで、
GoogleMaps
、GoogleMapsBase
、GoogleMapsCore
が、指定したmain
ターゲットに追加されることを確認します。完了したら、[パッケージを追加] をクリックします。 -
インストールを確認するには、ターゲットの
General
ペインに移動します。[Frameworks, Libraries, and Embedded Content] 内に、インストールされているパッケージが表示されます。 [Project Navigator] の [Package Dependencies] セクションで、パッケージとそのバージョンを確認することもできます。
既存のプロジェクトの package
を更新する手順は次のとおりです。
- Xcode で、[File] > [Packages] > [Update To Latest Package Versions] に移動します。
- インストールを確認するには、Project Navigator の [Package Dependencies] セクションに移動して、パッケージとそのバージョンを確認します。
CocoaPods
を使って追加された既存の Maps SDK for iOS の依存関係を削除する手順は次のとおりです。
- Xcode ワークスペースを閉じます。ターミナルを開いて、次のコマンドを実行します。
sudo gem install cocoapods-deintegrate cocoapods-clean pod deintegrate pod cache clean --all
-
CocoaPods 以外に使用していない場合は、
Podfile
、Podfile.resolved
、Xcode のworkspace
を削除します。
-
Xcode プロジェクトの構成設定で、[フレームワーク、ライブラリ、埋め込みコンテンツ] を見つけます。マイナス記号(-)を使用して、次のフレームワークを削除します。
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
-
Xcode プロジェクトの最上位ディレクトリから、
GoogleMaps
バンドルを削除します。
CocoaPods
Maps SDK for iOS は CocoaPods ポッドとして提供されています。CocoaPods は、Swift と Objective-C の Cocoa プロジェクトで依存関係を管理するためのオープンソース ツールです。
CocoaPods ツールがない場合は、ターミナルから以下のコマンドを実行して、macOS 上に CocoaPods ツールをインストールします。詳しくは、CocoaPods スタートガイドをご覧ください。
sudo gem install cocoapods
Maps SDK for iOS の Podfile
を作成し、これを使用して API とその依存関係をインストールします。
- Xcode プロジェクトがまだない場合は、ここで作成してローカルマシンに保存します。iOS 開発を初めて行う場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクト オプション画面で、次の操作を行います。
- プロジェクト名を入力します。
- [バンドル ID] フィールドの値を記録します。その値を使用して、以下の API キーを制限できます。
- [Interface] を [Storyboard] に設定します。
- [言語] を Swift または Objective-C に設定します。
- プロジェクトのディレクトリに、
Podfile
という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。 Podfile
を編集し、依存関係とそのversionsを追加します。以下に、Maps SDK for iOS に必要な依存関係を含む例を示します。source 'https://github.com/CocoaPods/Specs.git' platform :ios, '15.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleMaps', '8.4.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 が最新バージョンに更新されます。
手動インストール
このガイドでは、Maps SDK for iOS を含む XCFrameworks をプロジェクトに手動で追加し、Xcode でビルド設定を構成する方法について説明します。XCFramework は、Apple シリコンを使用したマシンなど、複数のプラットフォームで使用できるバイナリ パッケージです。- 次の SDK バイナリとリソース ファイルをダウンロードします。
- ファイルを抽出し、XCFrameworks とリソースにアクセスします。
- Xcode プロジェクトがまだない場合は、ここで作成してローカルマシンに保存します。iOS 開発を初めて行う場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクト オプション画面で、次の操作を行います。
- プロジェクト名を入力します。
- [バンドル ID] フィールドの値を記録します。その値を使用して、以下の API キーを制限できます。
- [Interface] を [Storyboard] に設定します。
- [言語] を Swift または Objective-C に設定します。
-
[全般] タブを開きます。プロジェクトの [Frameworks, Libraries, and Embedded Content] に、次の XCFrameworks をドラッグします。各 XCFramework で [Do Not Embed] を選択してください。
GoogleMaps.xcframework
GoogleMapsBase.xcframework
GoogleMapsCore.xcframework
-
ダウンロードした GoogleMapsResources の
GoogleMaps.bundle
を Xcode プロジェクトの最上位ディレクトリにコピーします。プロンプトが表示されたら、[Copy items into destination group's folder] を選択してください。 - プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
-
アプリケーションのターゲットの [Build Phases] タブを開きます。[Link Binary with Libraries] 内で、次のフレームワークとライブラリを追加します。
Accelerate.framework
Contacts.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
UIKit.framework
-
特定のターゲットではなくプロジェクトを選択し、[Build Settings] タブを開きます。[Linking - General] -> [Other Linker Flags] セクションで、
-ObjC
を [Debug] と [Release] に追加します。これらの設定が表示されない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。 -
Places SDK for iOS XCFramework をインストールするには、Places SDK for iOS スタートガイドをご覧ください。
Apple のプライバシー マニフェスト ファイルを追加する
Apple は、App Store のアプリについて、アプリのプライバシーに関する詳細情報を求めています。最新情報や詳細については、Apple App Store の「プライバシーの詳細」ページをご覧ください。
- Maps SDK for iOS のプライバシー マニフェスト バンドル(GoogleMapsPrivacy)をダウンロードします。
- ファイルを解凍して
GoogleMapsPrivacy.bundle
にアクセスします。 - 以下のいずれかの方法を使用して、
GoogleMapsPrivacy.bundle
を Xcode プロジェクト ナビゲータに追加します。アプリのターゲットの [ターゲットに追加する] チェックボックスがオンになっていることを確認します。追加すると、PrivacyInfo ファイルがプロジェクト ナビゲータに表示され、値を調べることができます。 - アプリのアーカイブを作成し、そのアーカイブからプライバシー レポートを生成して、プライバシー マニフェストが追加されていることを確認します。
ステップ 3: API キーをプロジェクトに追加する
API キーを取得するで、アプリの API キーを生成しました。次に、そのキーを Xcode プロジェクトに追加します。
以下の例で YOUR_API_KEY
とある箇所は、実際の API キーに置き替えてください。
をご覧ください。
Swift
次のように、API キーを AppDelegate.swift
に追加します。
- 次のインポート ステートメントを追加します。
import GoogleMaps
- API キーを使用して、
application(_:didFinishLaunchingWithOptions:)
メソッドにGMSServices.provideAPIKey("YOUR_API_KEY")
を追加します。 - Places API を使用している場合は、次のようにキーを再度追加します。
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
Objective-C
次のように、API キーを AppDelegate.m
に追加します。
- 次のインポート ステートメントを追加します。
@import GoogleMaps;
- API キーを使用して、
application:didFinishLaunchingWithOptions:
メソッドに[GMSServices provideAPIKey:@"YOUR_API_KEY"];
を追加します。 - Places API を使用している場合は、次のようにキーを再度追加します。
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
ステップ 4: 地図を追加する
Swift
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import UIKit import GoogleMaps class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. let options = GMSMapViewOptions() options.camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0) options.frame = self.view.bounds let mapView = GMSMapView(options: options) self.view.addSubview(mapView) // Creates a marker in the center of the map. let marker = GMSMarker() marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20) marker.title = "Sydney" marker.snippet = "Australia" marker.map = mapView } }
Objective-C
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ #import "ViewController.h" #import <GoogleMaps/GoogleMaps.h> @interface ViewController() @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init]; options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683 longitude:151.2086 zoom:6]; options.frame = self.view.bounds; GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; [self.view addSubview:mapView]; // Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = mapView; } @end
ステップ 5(省略可): API で使用する URL スキームを宣言する
iOS 9 と Xcode 7 以降では、アプリの Info.plist
ファイルでスキームを指定することで、開く URL スキームを宣言できます。ユーザーが地図上の Google ロゴをクリックすると、Maps SDK for iOS によって Google マップ モバイルアプリが開くため、アプリで関連する URL スキームを宣言できます。
Maps SDK for iOS で使用する URL スキームを宣言するには、次の行を Info.plist
に追加します。
次のスクリーンショットは、Xcode でのユーザー インターフェースでの設定を示しています。
上記の宣言がないと、ユーザーが地図上の Google ロゴをタップしたときに、次のエラーが発生する可能性があります。
-canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps" -canOpenURL: failed for URL: "googlechromes://" - error: "このアプリはスキーム googlechromes をクエリできません"
これらのエラーを防ぐには、Info.plist
に宣言を追加します。
次のステップ
これで API キーと Xcode プロジェクトが用意できたので、アプリを作成して実行できます。Navigation SDK for iOS には、開発を始めるのに役立つチュートリアルやサンプルアプリが豊富に用意されています。詳しくは以下をご覧ください。