檢查裝置的 VPS 可用性';目前位置

Geospatial API 結合 VPS 和 GPS 資料,產生高精確度的地理空間轉換作業。只要裝置能夠判斷自身位置,這個 API 就能在任何地方使用:

  • 在 GPS 精確度較低的區域 (例如室內空間和擁擠的都會環境),API 會依靠 VPS 涵蓋範圍產生高精確度的轉換。
  • 在沒有或幾乎沒有上方遮蔽物的戶外環境中,Geospatial API 可能可以使用可用的 GPS 位置資料,產生精確度極高的地理空間轉換。

你可以在 AR 工作階段開始前,在特定水平位置決定 VPS 可用性,然後利用這個位置打造更具體的體驗,例如顯示「進入 AR」模式按鈕。

啟用 ARCore API

應用程式必須啟用 ARCore API,才能檢查 VPS 是否可用。

檢查應用程式中的 VPS 可用性

Geospatial API 可用於裝置能夠判斷其位置的任何位置。如果 AR 體驗取決於 VPS 涵蓋範圍,您可以使用 GARSession#checkVPSAvailabilityAtCoordinate:completionHandler: 取得 GARVPSAvailabilityFuture,這是一個非同步工作,可檢查特定水平位置的 VPS 可用性。取得 GARVPSAvailabilityFuture 後,您可以透過輪詢或回呼取得結果。

對結果進行意見調查

使用 GARFuture.state 取得 Future 的狀態。狀態共有三種:

  • GARFutureStatePending:作業尚未完成,因此無法取得任何結果。
  • GARFutureStateCancelledGARFuture#cancel 已取消作業。系統不會呼叫任何已註冊的回呼。
  • GARFutureStateDone:作業已完成。使用 GARVPSAvailabilityFuture.result 取得結果。

您可以繼續檢查 GARFuture.state,直到工作完成為止。

透過回呼取得結果

您也可以透過回呼取得 Future 的結果。使用 GARSession#checkVPSAvailabilityAtCoordinate:completionHandler: 並提供 completionHandlerFuture 狀態變成 GARFutureStateDone 後,系統就會在主執行緒上呼叫這個 completionHandler

取消Future

使用 GARFuture#cancel 嘗試取消 Future。基於執行緒平行處理的關係,取消嘗試可能並未成功。 如果這次嘗試成功,GARFuture#cancel 會傳回 YES,否則會傳回 NO

在沒有 VPS 涵蓋範圍的情況下使用 Geospatial API

Geospatial API 也可用於沒有 VPS 涵蓋範圍的區域中。在沒有或幾乎沒有上方遮蔽物的室外環境中,GPS 可能就足以產生高精確度的姿勢。

後續步驟