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.

W przypadku każdej wersji dostępne są informacje o wersji.

Krok 1. Zainstaluj wymagane oprogramowanie

Aby utworzyć projekt za pomocą pakietu Maps SDK na iOS, musisz pobrać i zainstalować:

  • Xcode w wersji 15.0 lub nowszej

Krok 2. Utwórz projekt Xcode i zainstaluj pakiet Maps SDK na iOS

Menedżer pakietów Swift

Pakiet Maps SDK na iOS można zainstalować za pomocą menedżera pakietów Swift. Aby dodać pakiet SDK, usuń wszystkie zależności Maps SDK na iOS.

Aby dodać pakiet SDK do nowego lub istniejącego projektu, wykonaj te czynności:

  1. Otwórz project lub workspace Xcode, a następnie wybierz File > Add Package Dependencies (Plik > Dodaj zależności pakietu).
  2. Wpisz URL https://github.com/googlemaps/ios-maps-sdk, naciśnij Enter, aby pobrać pakiet, i kliknij „Dodaj pakiet”.
  3. Aby zainstalować określony element version, w polu Reguła zależności ustaw jedną z opcji zależnych od wersji. W przypadku nowych projektów zalecamy określenie najnowszej wersji i użycie opcji „Dokładna wersja”. Gdy skończysz, kliknij „Dodaj pakiet”.
  4. W oknie Wybierz produkty w pakiecie sprawdź, czy usługa GoogleMaps (w przypadku wersji wcześniejszych niż 9.0.0, sprawdź, czy GoogleMaps, GoogleMapsBase i GoogleMapsCore) zostanie dodana do wyznaczonego celu main. Gdy skończysz, kliknij „Dodaj pakiet”.
  5. Aby sprawdzić instalację, przejdź do panelu General środowiska docelowego. W obszarze Frameworks, biblioteki i umieszczona treść powinny być widoczne zainstalowane pakiety. Możesz też wyświetlić sekcję „Zależności pakietów” w „Nawigatorze projektu”, aby sprawdzić pakiet i jego wersję.

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

  1. Jeśli uaktualniasz aplikację z wersji wcześniejszej niż 9.0.0, po uaktualnieniu musisz usunąć te zależności: GoogleMapsBase, GoogleMapsCore i GoogleMapsM4B. Nie usuwaj zależności dla: GoogleMaps. Więcej informacji znajdziesz w informacjach o wersji 9.0.0.

    W ustawieniach konfiguracji projektu Xcode znajdź Frameworks, biblioteki i Embedded Content. Aby usunąć strukturę, użyj znaku minusa(-):

    • GoogleMapsBase (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
    • GoogleMapsCore (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
    • GoogleMapsM4B (tylko w przypadku uaktualnień z wersji starszych niż 9.0.0)
  2. W Xcode wybierz „File > Packages > Update to Latest Package Versions” (Plik > Pakiety> Aktualizuj do najnowszych wersji pakietu).
  3. Aby sprawdzić instalację, przejdź do sekcji Zależności pakietów w narzędziu Project Navigator i sprawdź pakiet i jego wersję.

Aby usunąć istniejące zależności Maps SDK na iOS dodane za pomocą CocoaPods, wykonaj te czynności:

  1. Zamknij obszar roboczy Xcode. Otwórz terminal i wykonaj to polecenie:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Usuń Podfile, Podfile.resolved i Xcode workspace, jeśli nie używasz ich do niczego innego niż CocoaPods.

Aby ręcznie usunąć zainstalowany ręcznie istniejący pakiet SDK Maps na iOS, wykonaj te czynności:
  1. W ustawieniach konfiguracji projektu Xcode znajdź Frameworks, biblioteki i Embedded Content. Użyj znaku minusa(-), aby usunąć tę strukturę:
    • GoogleMaps
    • GoogleMapsBase (tylko w przypadku instalacji wcześniejszych niż 9.0.0)
    • GoogleMapsCore (tylko w przypadku instalacji wcześniejszych niż 9.0.0)
    • GoogleMapsM4B (tylko w przypadku instalacji wcześniejszych niż 9.0.0)
  2. Z katalogu najwyższego poziomu projektu Xcode usuń pakiet GoogleMaps.

CocoaPods

Pakiet Maps SDK na iOS jest dostępny jako pod CocoaPods. CocoaPods to menedżer zależności open source na potrzeby projektów Swift i Objective-C Cocoa.

Jeśli nie masz jeszcze narzędzia CocoaPods, zainstaluj je w systemie macOS, uruchamiając w terminalu poniższe polecenie. Szczegółowe informacje znajdziesz w wprowadzeniu do CocoaPods.

sudo gem install cocoapods

Utwórz Podfile dla pakietu Maps SDK na iOS i użyj go do zainstalowania interfejsu API 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 aplikacji na iOS:
    1. Utwórz nowy projekt.
    2. Wybierz szablon iOS > Aplikacja.
    3. Na ekranie opcji projektu:
      1. Wpisz nazwę projektu.
      2. Zapisz wartość pola Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć poniżej swój klucz interfejsu API.
      3. Ustaw projekt Interface na Storyboard.
      4. Ustaw Language (Język) na Swift lub Objective-C.
  2. Utwórz w katalogu projektu plik o nazwie Podfile. Ten plik definiuje zależności projektu.
  3. Edytuj obiekt Podfile i dodaj zależności wraz z ich versions. Oto przykład zależności, której potrzebujesz w przypadku pakietu Maps SDK na 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
    
    Pamiętaj, aby regularnie uruchamiać pod outdated, aby wykrywać dostępność nowszej wersji i mieć pewność, że zawsze masz najnowszą wersję. W razie potrzeby uaktualnij 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 zadaniu Podfile wraz z wszelkimi zależnościami.

    pod install
  7. Zamknij Xcode, a następnie otwórz (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 podanych w Podfile do najnowszej wersji.

Instalacja ręczna

Z tego przewodnika dowiesz się, jak ręcznie dodać do projektu środowisko XCFrameworks zawierające pakiet SDK Maps na iOS i skonfigurować ustawienia kompilacji w Xcode. XCFramework to pakiet binarny, którego możesz używać na wielu platformach, w tym na komputerach korzystających z Apple Silicon.
  1. Pobierz te pliki binarne i pliki zasobów pakietu SDK:
  2. Rozpakuj pliki, aby uzyskać dostęp do zasobów i elementów XCFrameworks.
  3. Jeśli nie masz jeszcze projektu Xcode, utwórz go i zapisz na komputerze lokalnym. Jeśli dopiero zaczynasz programowanie aplikacji na iOS:
    1. Utwórz nowy projekt.
    2. Wybierz szablon iOS > Aplikacja.
    3. Na ekranie opcji projektu:
      1. Wpisz nazwę projektu.
      2. Zapisz wartość pola Identyfikator pakietu. Możesz użyć tej wartości, aby ograniczyć poniżej swój klucz interfejsu API.
      3. Ustaw projekt Interface na Storyboard.
      4. Ustaw Language (Język) na Swift lub Objective-C.
  4. Otwórz kartę Ogólne. Przeciągnij poniższe XCFrameworks do swojego projektu w sekcji Frameworks, biblioteki i Embedded Content. Pamiętaj, aby wybrać Do Not Embed (Nie umieszczaj) dla każdego elementu XCFramework:
    • GoogleMaps.xcframework
    • GoogleMapsBase.xcframework
    • GoogleMapsCore.xcframework
  5. Skopiuj GoogleMaps.bundle z pobranego pliku GoogleMapsResources do katalogu najwyższego poziomu Twojego projektu Xcode. Gdy pojawi się prośba, wybierz Kopiuj elementy do folderu grupy docelowej.
  6. Wybierz projekt w narzędziu Project Navigator, a następnie wybierz miejsce docelowe aplikacji.
  7. Otwórz kartę Etapy kompilacji dla środowiska docelowego aplikacji. W sekcji Połącz plik binarny z bibliotekami dodaj te platformy i biblioteki:
    • 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 (tylko w trybie OpenGL)
    • QuartzCore.framework
    • SystemConfiguration.framework
    • UIKit.framework
  8. Wybierz projekt zamiast konkretnego miejsca docelowego i otwórz kartę Ustawienia kompilacji. W sekcji Łączenie – ogólne -> Inne flagi łączące dodaj -ObjC do pól „Debugowanie” i „Wersja”. Jeśli te ustawienia nie są widoczne, zmień filtr na pasku Ustawienia kompilacji z Podstawowe na Wszystkie.

  9. Aby dowiedzieć się, jak zainstalować pakiet Places SDK na iOS XCFramework, zapoznaj się z artykułem o pierwszych krokach z pakietem SDK Places na iOS.

Krok 3. Sprawdź plik manifestu prywatności Apple

Apple wymaga podania informacji o ochronie prywatności w aplikacjach z App Store. Aktualizacje i inne informacje znajdziesz na stronie z informacjami o ochronie prywatności w Apple App Store.

Plik manifestu prywatności Apple jest zawarty w pakiecie zasobów SDK. Aby sprawdzić, czy plik manifestu prywatności został dołączony, i sprawdzić jego zawartość, utwórz archiwum aplikacji i wygeneruj raport o ochronie prywatności z archiwum.

Krok 4. Dodaj klucz interfejsu API do projektu

W sekcji Pobierz klucz interfejsu API udało Ci się wygenerować klucz interfejsu API dla swojej aplikacji. Teraz dodaj ten klucz do projektu Xcode.

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

.

for more information.

Swift

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

  1. Dodaj tę instrukcję importu:
    import GoogleMaps
  2. Za pomocą klucza interfejsu API dodaj do metody application(_:didFinishLaunchingWithOptions:) ten kod:
    GMSServices.provideAPIKey("YOUR_API_KEY")
  3. Jeśli używasz także interfejsu Places API, dodaj klucz ponownie, jak pokazano tutaj:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

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

  1. Dodaj tę instrukcję importu:
    @import GoogleMaps;
  2. Za pomocą klucza interfejsu API dodaj do metody application:didFinishLaunchingWithOptions: ten kod:
    [GMSServices provideAPIKey:@"YOUR_API_KEY"];
  3. Jeśli używasz także interfejsu Places API, dodaj klucz ponownie, jak pokazano tutaj:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

Krok 5. Dodaj mapę

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

Krok 5 (opcjonalny). Zadeklaruj schematy adresów URL używane przez interfejs API

Począwszy od iOS 9 i Xcode 7 aplikacje mogą deklarować schematy adresów URL, które mają otwierać, określając je w pliku Info.plist aplikacji. Pakiet Maps SDK na iOS otwiera aplikację mobilną Mapy Google, gdy użytkownik kliknie logo Google na mapie, dzięki czemu aplikacja może zadeklarować odpowiednie schematy adresów URL.

Aby zadeklarować schematy adresów URL używane w pakiecie Maps SDK na iOS, dodaj do Info.plist te wiersze:

LSApplicationQueriesSchemes googlechromes comgooglemaps

Poniższy zrzut ekranu przedstawia konfigurację w interfejsie użytkownika Xcode:

Konfiguracja LSApplication QuerySchemes w Xcode

Jeśli nie podasz tej deklaracji, po kliknięciu logo Google na mapie mogą wystąpić te błędy:

  • -canOpenURL: niepowodzenie dla adresu URL: "comgooglemaps://" - błąd: "Ta aplikacja nie ma zezwolenia na wysyłanie zapytań o schemat comgooglemaps"
  • -canOpenURL: niepowodzenie dla adresu URL: "googlechromes://" - błąd: "Ta aplikacja nie ma zezwolenia na wysyłanie zapytań dotyczących schematu googlechromes"

Aby wyeliminować te błędy, dodaj deklarację do Info.plist.

Co dalej

Po utworzeniu klucza interfejsu API i projektu Xcode możesz tworzyć i uruchamiać aplikacje. Pakiet Navigation SDK na iOS zawiera wiele samouczków i przykładowych aplikacji, które pomogą Ci rozpocząć pracę. Więcej informacji: