Xcode プロジェクトを設定する

このガイドの手順に沿って、Places SDK for iOS をダウンロードして、ライブラリとその依存関係をアプリに追加し、料金なしで API キーを取得してください。

リリースノートは、リリースごとに公開されています。

ステップ 1: Xcode の最新版を入手する

Places SDK for iOS を使用してプロジェクトを構築するには、以下が必要です。

  1. Xcode バージョン 14.0 以降。
  2. Cocoapods または Carthage

手順 2: SDK をインストールする

新しいプロジェクトに API をインストールする手順は次のとおりです。

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 とその依存関係をインストールします。

  1. Xcode プロジェクトをまだ作成していない場合は、ここで作成してローカルマシンに保存しますiOS 開発が初めての場合は、新しいプロジェクトを作成し、[iOS App template] を選択します。
  2. プロジェクトのディレクトリに、Podfile という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。
  3. Podfile を編集して、依存関係とそれらのバージョンを追加します。以下に、アプリのターゲット名と GooglePlaces Pod の名前を指定する例を示します。
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.0.0'
    end
    
    常に最新バージョンに更新するには、pod outdated を定期的に実行して検出するようにしてください。
  4. Podfile を保存します。
  5. ターミナルを開き、Podfile を含むディレクトリに移動します。

    cd <path-to-project>
  6. pod install コマンドを実行します。Podfile で指定した API とその依存関係がインストールされます。

    pod install
  7. Xcode を終了し、プロジェクトの .xcworkspace ファイルを(ダブルクリックして)開いて、Xcode を起動します。これ以降、このプロジェクトを開くには .xcworkspace ファイルを使用する必要があります。

既存のプロジェクトの API を更新する手順は次のとおりです。

  1. ターミナルを開いて、Podfile を含むプロジェクト ディレクトリに移動します。
  2. pod update コマンドを実行します。これにより、Podfile で指定されたすべての API が最新バージョンに更新されます。

Carthage を使用する

Places SDK for iOS は、Swift および Objective-C Cocoa プロジェクト用のシンプルな分散型依存関係マネージャーである Carthage で使用できます。

  1. Carthage をインストールします。いくつかのメソッドがあります。正確な手順については、Carthage の README ファイルをご覧ください。
  2. Xcode プロジェクトをまだ作成していない場合は、ここで作成してローカルマシンに保存しますiOS 開発が初めての場合は、新しいプロジェクトを作成し、[iOS App template] を選択します。
  3. プロジェクトのディレクトリに、Cartfile という名前のファイルを作成します。このファイルは、プロジェクトの依存関係を定義します。
  4. Cartfile を編集して、依存関係をバージョンとともに追加します。
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    carthage outdated を定期的に実行して、新しいバージョンが存在するタイミングを検出し、常に最新バージョンであることを確認します。
  5. Cartfile を保存します。
  6. ターミナル ウィンドウで、Cartfile があるディレクトリに移動します。
    cd <path-to-project>
  7. carthage update コマンドを実行します。Cartfile で指定した API とその依存関係がインストールされます。
  8. Finder のプロジェクト ディレクトリで、Carthage/Build/iOS の下にあるダウンロードしたフレームワーク ファイルに移動します。
  9. 次のバンドルをプロジェクトにドラッグします(プロンプトが表示されたら、[Copy items if needed] を選択します)。
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  10. プロジェクトで GooglePlaces.xcframework を右クリックし、[Show In Finder] を選択します。
  11. GooglePlaces.bundleResources フォルダからプロジェクトにドラッグします。プロンプトが表示されたら、[Copy items into destination group's folder] が選択されていないことを確認します。
  12. プロジェクト ナビゲータで目的のプロジェクトを選択し、アプリのターゲットを選択します。
  13. [Build Phases] タブを開き、[Link Binary with Libraries で次のフレームワークとライブラリを追加します。
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。

  15. [その他のリンカーフラグ] セクションで、-ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。

既存のプロジェクトの API を更新する手順は次のとおりです。

  1. ターミナルを開いて、Cartfile を含むプロジェクト ディレクトリに移動します。
  2. carthage update コマンドを実行します。これにより、Cartfile で指定されたすべての API が最新バージョンに更新されます。

手動でインストールする

このガイドでは、GooglePlaces フレームワークを手動でプロジェクトに追加し、Xcode でビルド設定を構成する方法について説明します。

  1. SDK のソースファイル GooglePlaces-8.0.0 をダウンロードします。
  2. ダウンロードしたソースファイルを解凍します。
  3. Xcode を起動し、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS 開発が初めての場合は、新しいプロジェクトを作成し、[iOS App template] を選択します。
  4. 以前のリリースのマップ バンドルをプロジェクトから削除します。
  5. 次のバンドルをプロジェクトにドラッグします(プロンプトが表示されたら、[Copy items if needed] を選択します)。
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  6. プロジェクトで GooglePlaces.xcframework を右クリックし、[Show In Finder] を選択します。
  7. GooglePlaces.bundleResources フォルダからプロジェクトにドラッグします。プロンプトが表示されたら、[Copy items into destination group's folder] が選択されていないことを確認します。
  8. プロジェクト ナビゲータで目的のプロジェクトを選択し、アプリのターゲットを選択します。
  9. [Build Phases] タブを開き、[Link Binary with Libraries で次のフレームワークとライブラリを追加します。
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。

  11. [その他のリンカーフラグ] セクションで、-ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。

XCFramework をインストールする

XCFramework は、M1 チップセットを使用するマシンなど、複数のプラットフォームで使用できる Places SDK for iOS のインストールを可能にするバイナリ パッケージです。このガイドでは、Places SDK for iOS を含む XCFramework をプロジェクトに追加し、Xcode でビルド設定を構成する方法について説明します。

Carthage を使用

Places SDK for iOS は、Carthage(Swift および Objective-C Cocoa プロジェクト向けのシンプルな分散型依存関係マネージャー)で使用できます。

  1. Carthage をインストールします。いくつかのメソッドがあります。正確な手順については、Carthage の README ファイルをご覧ください。
  2. Xcode プロジェクトがない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合は、新しいプロジェクトを作成し、[iOS App template] を選択します。
  3. プロジェクトのディレクトリに、Cartfile という名前のファイルを作成します。このファイルは、プロジェクトの依存関係を定義します。
  4. Cartfile を編集して、依存関係とそれらのバージョンを追加します。

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Cartfile を保存します。
  6. ターミナル ウィンドウで、Cartfile を含むディレクトリに移動します。

    cd <path-to-project>
  7. carthage update コマンドを実行します。これにより、Cartfile で指定された API とその依存関係がインストールされます。
  8. Finder のプロジェクト ディレクトリで、Carthage/Build の下にあるダウンロードしたフレームワーク ファイルに移動します。
  9. 次の XCFramework をプロジェクト([フレームワーク、ライブラリ、埋め込みコンテンツ] の下)にドラッグします。必ず [埋め込まない] を選択してください。
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  10. プロジェクトで GooglePlaces.xcframework を右クリックし、[Show In Finder] を選択します。
  11. GooglePlaces.bundleios-arm64/GooglePlaces.framework/Resources フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。
  12. プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
  13. [Build Phases] タブを開き、[Link Binary with Libraries] で次のフレームワークとライブラリを追加します。
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。

  15. [その他のリンカーフラグ] セクションで、-ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。

手動

このガイドでは、Maps SDK for iOS を手動でプロジェクトに追加し、Xcode でビルド設定を構成する方法について説明します。

  1. SDK のソースファイル GooglePlaces-8.0.0 をダウンロードします。
  2. ソースファイルを解凍します。[Frameworks] フォルダに移動して XCFramework にアクセスします。
  3. Xcode を起動して、既存のプロジェクトを開くか、新しいプロジェクトを作成します。iOS を初めて使用する場合は、新しいプロジェクトを作成し、iOS アプリ テンプレートを選択します。
  4. 次の XCFramework をプロジェクト([フレームワーク、ライブラリ、埋め込みコンテンツ] の下)にドラッグします。必ず [埋め込まない] を選択してください。
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  5. プロジェクトで GooglePlaces.xcframework を右クリックし、[Show In Finder] を選択します。
  6. GooglePlaces.bundleios-arm64/GooglePlaces.framework/Resources フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[転送先グループのフォルダにアイテムをコピー] が選択されていないことを確認します。
  7. プロジェクト ナビゲータからプロジェクトを選択し、アプリケーションのターゲットを選択します。
  8. [Build Phases] タブを開き、[Link Binary with Libraries] で次のフレームワークとライブラリを追加します。
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  9. 特定のターゲットではなく、プロジェクトを選択し、[Build Settings] タブを開きます。

  10. [その他のリンカーフラグ] セクションで、-ObjC を追加します。これらの設定が表示されていない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。

ステップ 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 がインストールされている必要があります。