Konfigurowanie projektu Xcode

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Aby pobrać bibliotekę Places SDK i jej zależności, a także bezpłatnie pobrać klucz interfejsu API, wykonaj czynności opisane w tym przewodniku.

Dla każdej wersji są dostępne Informacje o wersji.

Krok 1. Pobierz najnowszą wersję Xcode

Aby utworzyć projekt przy użyciu pakietu SDK Miejsc na iOS, musisz:

  1. Xcode w wersji 13.0 lub nowszej.
  2. Cocoapods lub Kartagina.

Krok 2. Zainstaluj pakiet SDK

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

Używaj Cocoapods

Pakiet SDK Miejsc na iOS jest dostępny jako CocoaPod poda GooglePlaces, który zawiera wszystkie funkcje Miejsc.

CocoaPods to menedżer zależności open source dla projektów Swift i Goal-C Cocoa. Jeżeli nie masz jeszcze narzędzia CocoaPods, zainstaluj je w systemie macOS, uruchamiając w terminalu to polecenie. Szczegółowe informacje znajdziesz w przewodniku dla początkujących na temat CocoaPods.

sudo gem install cocoapods

Utwórz pakiet Podfile dotyczący pakietu SDK Miejsc na iOS i użyj go do zainstalowania pakietu SDK i 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 urządzeniu z iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  2. Utwórz w katalogu projektu plik o nazwie Podfile. Ten plik definiuje zależności projektu.
  3. Edytuj Podfile i dodaj zależności wraz z ich wersjami. Oto przykład, który określa nazwę celu aplikacji, i nazwę poda GooglePlaces:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '7.4.0'
    end
    
    Pamiętaj o regularnym uruchomieniu pod outdated, aby wykryć, że dostępna jest nowsza wersja, aby zawsze mieć 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 zasadzie Podfile oraz wszystkich ich zależności.

    pod install
  7. Zamknij Xcode, a następnie kliknij (dwukrotnie) plik .xcworkspace projektu, aby uruchomić Xcode. Od tej pory do otwierania projektu musisz używać 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 wszystkich interfejsów API określonych w Podfile do najnowszej wersji.

Użyj karty pamięci

Pakiet SDK Miejsc na iOS jest dostępny w Carthage – prostym, zdecentralizowanym menedżerze zależności dla projektów korzystających ze Swift i celu C.

  1. Zainstaluj kartę Karta. Istnieje kilka metod, więc dokładne instrukcje znajdziesz w pliku Carthage README.
  2. Jeśli nie masz jeszcze projektu Xcode, utwórz go i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie na urządzeniu z iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  3. Utwórz w katalogu projektu plik o nazwie Cartfile. Ten plik definiuje zależności projektu.
  4. Edytuj Cartfile i dodaj zależności wraz z ich wersjami:
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    Pamiętaj o regularnym uruchamianiu carthage outdated, aby wykryć, że dostępna jest nowsza wersja, aby zawsze mieć dostęp do najnowszej wersji.
  5. Zapisz Cartfile.
  6. W oknie terminala przejdź do katalogu zawierającego Cartfile:
    cd <path-to-project>
  7. Uruchom polecenie carthage update. Spowoduje to zainstalowanie interfejsów API określonych w zasadzie Cartfile oraz wszystkich ich zależności.
  8. W programie Finder w katalogu projektów przejdź do pobranych plików platformy w sekcji Carthage/Build/iOS.
  9. Przeciągnij te grupy do projektu (jeśli pojawi się taka prośba, wybierz Kopiuj elementy w razie potrzeby):
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  10. Kliknij prawym przyciskiem myszy GooglePlaces.xcframework w projekcie i wybierz Pokaż w Finderze.
  11. Przeciągnij GooglePlaces.bundle z folderu Resources do projektu. Po wyświetleniu prośby upewnij się, że opcja Kopiuj elementy do folderu grupy docelowej nie jest zaznaczona.
  12. Wybierz projekt z Nawigatora projektów i wybierz środowisko docelowe swojej aplikacji.
  13. Otwórz kartę Etapy kompilacji i 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
  14. Wybierz projekt zamiast konkretnego celu i otwórz kartę Ustawienia kompilacji.

  15. W sekcji Inne flagi łączące dodaj -ObjC. Jeśli nie widzisz tych ustawień, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

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

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

Zainstaluj ręcznie

Z tego przewodnika dowiesz się, jak ręcznie dodać platformę GooglePlaces do projektu i skonfigurować ustawienia kompilacji w Xcode.

  1. Pobierz pliki źródłowe pakietu SDK: GooglePlaces-7.4.0
  2. Rozpakuj pliki źródłowe.
  3. Uruchom Xcode i otwórz istniejący projekt lub utwórz nowy. Jeśli dopiero zaczynasz programowanie w iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  4. Usuń z projektu pakiety Map z poprzednich wersji.
  5. Przeciągnij te grupy do projektu (jeśli pojawi się taka prośba, wybierz Kopiuj elementy w razie potrzeby):
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  6. Kliknij prawym przyciskiem myszy GooglePlaces.xcframework w projekcie i wybierz Pokaż w Finderze.
  7. Przeciągnij GooglePlaces.bundle z folderu Resources do projektu. Po wyświetleniu prośby upewnij się, że opcja Kopiuj elementy do folderu grupy docelowej nie jest zaznaczona.
  8. Wybierz projekt z Nawigatora projektów i wybierz środowisko docelowe swojej aplikacji.
  9. Otwórz kartę Etapy kompilacji i 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
  10. Wybierz projekt zamiast konkretnego celu i otwórz kartę Ustawienia kompilacji.

  11. W sekcji Inne flagi łączące dodaj -ObjC. Jeśli nie widzisz tych ustawień, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

Zainstaluj XCFramework

XCFramework to pakiet binarny, którego można używać na wielu platformach, w tym na urządzeniach z chipsetem M1, do instalowania pakietu SDK Miejsc na iOS. Z tego przewodnika dowiesz się, jak dodać do projektu XCFramework zawierające pakiet SDK Miejsc na iOS oraz skonfigurować ustawienia kompilacji w Xcode.

Z kartką

Pakiet SDK Miejsc na iOS jest dostępny w Carthage – prostym, zdecentralizowanym menedżerze zależności dla projektów Cowa i Swift.

  1. Zainstaluj kartę Karta. Istnieje kilka metod, więc dokładne instrukcje znajdziesz w pliku Carthage README.
  2. Jeśli nie masz jeszcze projektu Xcode, utwórz go i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie na urządzeniu z iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  3. Utwórz w katalogu projektu plik o nazwie Cartfile. Ten plik definiuje zależności projektu.
  4. Edytuj obiekt Cartfile i dodaj do niego zależności oraz ich wersje:

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Zapisz Cartfile.
  6. W oknie terminala przejdź do katalogu zawierającego Cartfile:

    cd <path-to-project>
  7. Uruchom polecenie carthage update. Spowoduje to zainstalowanie interfejsów API określonych w zasadzie Cartfile oraz wszystkich ich zależności.
  8. W programie Finder w katalogu projektu przejdź do pobranych plików platformy w sekcji Carthage/Build.
  9. Przeciągnij następujące projekty XCFramework do swojego projektu w sekcji Frameworks, Librarys and Connected Content. Pamiętaj, aby wybrać opcję Nie umieszczaj:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  10. Kliknij prawym przyciskiem myszy GooglePlaces.xcframework w projekcie i wybierz Pokaż w Finderze.
  11. Przeciągnij GooglePlaces.bundle z folderu ios-arm64/GooglePlaces.framework/Resources do katalogu najwyższego poziomu w projekcie Xcode. Gdy pojawi się komunikat, nie wybieraj opcji Kopiuj elementy do folderu grupy docelowej.
  12. Wybierz projekt z Nawigatora projektów i wybierz środowisko docelowe swojej aplikacji.
  13. Otwórz kartę Etapy kompilacji oraz w sekcji Połącz plik binarny z bibliotekami, a potem dodaj te platformy i biblioteki:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. Wybierz projekt zamiast konkretnego celu i otwórz kartę Ustawienia kompilacji.

  15. W sekcji Inne flagi łączące dodaj -ObjC. Jeśli nie widzisz tych ustawień, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

Ręcznie

Z tego przewodnika dowiesz się, jak ręcznie dodać pakiet SDK Maps na iOS do swojego projektu i skonfigurować ustawienia kompilacji w Xcode.

  1. Pobierz pliki źródłowe pakietu SDK: GooglePlaces-7.4.0.
  2. Rozpakuj pliki źródłowe. Przejdź do folderu Frameworks, aby uzyskać dostęp do XCFramework.
  3. Uruchom Xcode i otwórz istniejący projekt lub utwórz nowy. Jeśli dopiero zaczynasz korzystać z systemu iOS, utwórz nowy projekt i wybierz szablon aplikacji na iOS.
  4. Przeciągnij następujące projekty XCFramework do swojego projektu w sekcji Frameworks, Librarys and Connected Content. Pamiętaj, aby wybrać opcję Nie umieszczaj:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  5. Kliknij prawym przyciskiem myszy GooglePlaces.xcframework w projekcie i wybierz Pokaż w Finderze.
  6. Przeciągnij GooglePlaces.bundle z folderu ios-arm64/GooglePlaces.framework/Resources do katalogu najwyższego poziomu w projekcie Xcode. Gdy pojawi się komunikat, nie wybieraj opcji Kopiuj elementy do folderu grupy docelowej.
  7. Wybierz projekt z Nawigatora projektów i wybierz środowisko docelowe swojej aplikacji.
  8. Otwórz kartę Etapy kompilacji oraz w sekcji Połącz plik binarny z bibliotekami, a potem dodaj te platformy i biblioteki:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  9. Wybierz projekt zamiast konkretnego celu i otwórz kartę Ustawienia kompilacji.

  10. W sekcji Inne flagi łączące dodaj -ObjC. Jeśli nie widzisz tych ustawień, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

Krok 3. Dodaj klucz interfejsu API do aplikacji

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

Swift

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

  • Dodaj to oświadczenie importu:
    import GooglePlaces
  • Dodaj do metody application(_:didFinishLaunchingWithOptions:) ten fragment, zastępując YOUR_API_KEY swoim kluczem API:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

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

  • Dodaj to oświadczenie importu:
    @import GooglePlaces;
  • Dodaj do metody application:didFinishLaunchingWithOptions: ten fragment, zastępując YOUR_API_KEY swoim kluczem API:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Krok 4. Zacznij pisać kod

Poniższe przykłady kodu pokazują, jak pobrać bieżące 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.