Włączanie interfejsu Geospatial API dla aplikacji na iOS

Skonfiguruj ustawienia aplikacji, aby mogła korzystać z interfejsu Geospatial API.

Wymagania wstępne

Zanim przejdziesz dalej, upewnij się, że rozumiesz podstawowe zagadnienia związane z rozszerzoną rzeczywistością oraz że wiesz, jak skonfigurować sesję ARCore.

Jeśli chcesz uruchomić przykładową aplikację, która demonstruje opisane tutaj funkcje, zapoznaj się z samouczkiem ARCore Geospatial na iOS.

Więcej informacji o Geospatial API znajdziesz w artykule Wprowadzenie do Geospatial API.

Jeśli dopiero zaczynasz tworzyć aplikacje z wykorzystaniem ARCore, zapoznaj się z artykułem Pierwsze kroki, aby dowiedzieć się więcej o wymaganiach sprzętowych i programowych, wymaganiach wstępnych oraz innych informacjach dotyczących platform, których używasz.

Włącz interfejs ARCore API

Zanim użyjesz w aplikacji systemu pozycjonowania wizualnego (VPS), musisz najpierw włączyć interfejs ARCore API w nowym lub istniejącym projekcie Google Cloud. Ta usługa odpowiada za hostowanie, przechowywanie i rozwiązywanie kotwic geoprzestrzennych.

Preferowana jest autoryzacja bezkluczowa, ale obsługiwana jest też autoryzacja za pomocą klucza API.

Dodawanie wymaganych bibliotek do aplikacji

Po autoryzowaniu aplikacji do wywoływania interfejsu ARCore API musisz dodać biblioteki, aby włączyć w niej funkcje geoprzestrzenne.

Zaktualizuj plik Podfile w swojej aplikacji, aby uwzględnić pakiet SDK ARCore i obsługiwane wersje iOS. Aby to zrobić:

  1. Dodaj te platformpod do Podfile projektu:

    platform :ios, '11.0'
    pod 'ARCore/Geospatial', '~> 1.48.0'
    

    Jeśli chcesz obsługiwać iOS 10, możesz też określić wartość platform :ios, '10.0', ale pamiętaj, że interfejs Geospatial API będzie działać tylko w czasie wykonywania w systemie iOS 11 i nowszych.

  2. Otwórz okno Terminala i w folderze, w którym znajduje się projekt Xcode, uruchom polecenie pod install.

    Spowoduje to wygenerowanie pliku .xcworkspace, którego użyjesz do kompilacji i uruchomienia aplikacji.

Upewnij się, że środowisko programistyczne spełnia wymagania pakietu ARCore SDK opisane w artykule Szybki start.

Włączanie funkcji geoprzestrzennych w konfiguracji sesji

Sprawdzanie zgodności z urządzeniami

Nie wszystkie urządzenia obsługujące ARCore obsługują też interfejs Geospatial API, jak opisano w przewodniku szybkiego startu.

Aby sprawdzić urządzenie, użyj GARSession.isGeospatialModeSupported::

if (![self.garSession isGeospatialModeSupported:GARGeospatialModeEnabled]) {
  [self setErrorStatus:@"GARGeospatialModeEnabled is not supported on this device."];
  return;
}

GARSessionConfiguration *configuration = [[GARSessionConfiguration alloc] init];
configuration.geospatialMode = GARGeospatialModeEnabled;
[self.garSession setConfiguration:configuration error:&error];
if (error) {
  [self setErrorStatus:[NSString stringWithFormat:@"Failed to configure GARSession: %d",
                                                  (int)error.code]];
  return;
}

Prośba o dostęp do lokalizacji w czasie działania aplikacji

Aplikacja musi poprosić o te uprawnienia dostępu do lokalizacji w czasie działania przed skonfigurowaniem sesji:

Sprawdzanie dostępności danych geoprzestrzennych w bieżącej lokalizacji urządzenia

Ponieważ interfejs Geospatial API do określania transformacji geoprzestrzennej wykorzystuje kombinację VPS i GPS, można go używać, dopóki urządzenie jest w stanie określić swoją lokalizację. W obszarach o niskiej dokładności GPS, takich jak wnętrza budynków i gęsto zaludnione obszary miejskie, interfejs API będzie korzystać z zasięgu VPS, aby generować transformacje o wysokiej dokładności. W typowych warunkach usługa VPS zapewnia dokładność pozycjonowania na poziomie około 5 metrów oraz dokładność obrotu na poziomie 5 stopni. Aby sprawdzić, czy dana lokalizacja ma usługę VPS, użyj GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:.

Interfejsu Geospatial API można też używać na obszarach, na których nie ma pokrycia VPS. W otoczeniu zewnętrznym z niewielką liczbą przeszkód nad głową lub bez nich GPS może wystarczyć do wygenerowania transformacji o wysokiej dokładności.

Co dalej?