Konfigurowanie projektu Xcode

Po włączeniu płatności i utworzeniu klucza interfejsu API możesz skonfigurować projekt Xcode, którego używasz do tworzenia aplikacji.

Informacje o poszczególnych wersjach są dostępne w informacjach o wersji.

Krok 1. Zainstaluj wymagane oprogramowanie

Aby utworzyć projekt za pomocą pakietu Places SDK dla iOS, potrzebujesz:

  • Xcode w wersji 14.0 lub nowszej.
  • CocoaPods
  • Krok 2: Utwórz projekt Xcode i zainstaluj pakiet Places SDK dla iOS

    Aby zainstalować interfejs API w nowym projekcie, wykonaj te czynności:

    Używanie Cocoapods

    Pakiet Miejsca SDK na iOS jest dostępny jako blok CocoaPod (GooglePlaces), który zawiera wszystkie funkcje miejsc.

    CocoaPods to menedżer zależności open source w projektach Swift i Objective-C Cocoa. Jeśli nie masz jeszcze narzędzia CocoaPods, zainstaluj je w systemie macOS, uruchamiając z terminala poniższe polecenie. Szczegółowe informacje znajdziesz w przewodniku dla początkujących.

    sudo gem install cocoapods

    Utwórz obiekt Podfile dla pakietu Places SDK dla iOS i użyj go do zainstalowania tego pakietu SDK oraz jego zależności:

    1. Jeśli nie masz jeszcze projektu Xcode, utwórz go i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie na iOS, utwórz nowy projekt i wybierz Szablon aplikacji na iOS.
    2. Utwórz w katalogu projektu plik o nazwie Podfile. Ten plik określa zależności projektu.
    3. Edytuj Podfile i dodaj zależności wraz z ich versions. Oto przykład, który określa nazwę miejsca docelowego aplikacji i nazwę poda GooglePlaces:
      source 'https://github.com/CocoaPods/Specs.git'
      
      platform :ios, '14.0'
      
      target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
        pod 'GooglePlaces', '8.3.0'
      end
      
      Pamiętaj, aby regularnie uruchamiać pod outdated, aby wykrywać, kiedy dostępna jest nowsza wersja. Dzięki temu masz zawsze dostęp do najnowszej wersji.
    4. Zapisz Podfile.
    5. Otwórz terminal i przejdź do katalogu zawierającego Podfile:

      cd <path-to-project>
    6. Uruchom polecenie pod install. Spowoduje to zainstalowanie interfejsów API określonych w obiekcie Podfile wraz ze wszystkimi zależnościami, jakie mogą mieć.

      pod install
    7. Zamknij Xcode, a następnie otwórz (dwukrotnie kliknij) plik .xcworkspace swojego projektu, aby uruchomić Xcode. Od tej pory projekt można otwierać tylko za pomocą pliku .xcworkspace.

    Aby zaktualizować interfejs API w istniejącym projekcie, wykonaj te czynności:

    1. Otwórz terminal i przejdź do katalogu projektu zawierającego Podfile.
    2. Uruchom polecenie pod update. Spowoduje to zaktualizowanie do najnowszej wersji wszystkich interfejsów API określonych w: Podfile.

    Instalowanie ręczne

    Ten przewodnik pokazuje, jak ręcznie dodać do projektu komponent XCFramework zawierający pakiet Places SDK dla iOS i skonfigurować ustawienia kompilacji w Xcode. XCFramework to pakiet binarny, którego można używać na wielu platformach, w tym na maszynach korzystających z Apple Silicon.

    1. Pobierz te pliki binarne i zasoby SDK:
    2. Rozpakuj skompresowane pliki, aby uzyskać dostęp do XCFramework i zasobów.
    3. Uruchom Xcode i otwórz istniejący projekt lub utwórz nowy. Jeśli dopiero zaczynasz programowanie na iOS, utwórz nowy projekt i wybierz Szablon aplikacji na iOS.
    4. Usuń z projektu wszystkie pakiety Map z poprzednich wersji.
    5. Przeciągnij ten element XCFramework do projektu do sekcji Frameworks, Libraries and Embedded Content. Wybierz Nie umieszczaj:
      • GooglePlaces.xcframework
    6. Przeciągnij plik GooglePlaces.bundle z pobranego GooglePlacesResources do katalogu najwyższego poziomu projektu Xcode. Gdy pojawi się prośba, sprawdź, czy wybrana jest opcja Kopiuj elementy do folderu grupy docelowej.
    7. Wybierz projekt z Nawigatora projektów i wskaż miejsce docelowe aplikacji.
    8. Otwórz kartę Etapy kompilacji, a potem w sekcji Połącz plik binarny z bibliotekami dodaj te platformy i biblioteki:
      • CoreGraphics.framework
      • CoreLocation.framework
      • libc++.tbd
      • libz.tbd
      • QuartzCore.framework
      • UIKit.framework
    9. Wybierz projekt, a nie konkretny cel, i otwórz kartę Ustawienia kompilacji.

    10. W sekcji Inne oznaczenia łączące dodaj -ObjC. Jeśli te ustawienia nie są widoczne, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

    Krok 3. Dodaj do aplikacji klucz interfejsu API

    W poniższych przykładach zastąp YOUR_API_KEY kluczem interfejsu API.

    Swift

    Dodaj klucz interfejsu API do AppDelegate.swift w ten sposób:

    • Dodaj tę instrukcję importu:
      import GooglePlaces
    • Dodaj do metody application(_:didFinishLaunchingWithOptions:) ten kod, zastępując fragment YOUR_API_KEY kluczem interfejsu API:
      GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

    Dodaj klucz interfejsu API do AppDelegate.m w ten sposób:

    • Dodaj tę instrukcję importu:
      @import GooglePlaces;
    • Dodaj do metody application:didFinishLaunchingWithOptions: ten kod, zastępując fragment YOUR_API_KEY kluczem interfejsu API:
      [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

    Krok 4. Zacznij pisać kod

    Poniższe przykłady kodu pokazują, jak pobrać dane miejsce.

    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
          

    Dalsze kroki

    Po skonfigurowaniu projektu możesz zapoznać się z przykładowymi aplikacjami. Musisz zainstalować Cocoapods w wersji 1.6.1.