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 programować z użyciem ARCore, w artykule Pierwsze kroki znajdziesz informacje o wymaganiach dotyczących oprogramowania i sprzętu, wymaganiach wstępnych oraz innych kwestii dotyczących używanych przez Ciebie platform.

Włączanie interfejsu ARCore API

Zanim użyjesz w aplikacji systemu pozycjonowania wizualnego (VPS), musisz najpierw włączyć 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 Podfile swojej aplikacji, dodając do niej pakiet ARCore SDK i obsługę wersji na iOS. Aby to zrobić:

  1. Dodaj do projektu Podfile projektu platform i pod:

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

    Możesz też określić platform :ios, '10.0', jeśli chcesz obsługiwać iOS 10, ale pamiętaj, że interfejs Geospatial API będzie działać tylko w czasie działania w systemie iOS w wersji 11 lub nowszej.

  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, które obsługują ARCore, obsługują też interfejs Geospatial API, jak opisano w przewodniku szybkiego startu.

Użyj GARSession.isGeospatialModeSupported:, aby sprawdzić urządzenie w ten sposób:

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 przekształcenia geoprzestrzennego wykorzystuje kombinację VPS i GPS, można go używać, jeśli 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 VPS może zapewniać dokładność pozycjonowania do około 5 metrów i dokładność obrotu do 5 stopni. Użyj GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:, aby określić, czy dana lokalizacja ma zasięg VPS.

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?