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

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

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

您可以在 AR 工作階段開始前,判斷特定水平位置的 VPS 可用性,並利用這項資訊打造更具體的體驗,例如只在 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: 並提供 completionHandler。在 FutureGARFutureStateDone 狀態後,系統會在主執行緒上立即呼叫這個 completionHandler

取消 Future

使用 GARFuture#cancel 嘗試取消 Future。由於執行緒並行,取消嘗試可能實際上並未成功。如果這項嘗試成功,GARFuture#cancel 會傳回 YES,否則傳回 NO

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

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

後續步驟