SDK iOS
Ajoutez AR Clip VPS à une application iOS native. Le SDK s'appuie sur le suivi ARKit pour trouver la position de l'utilisateur sur vos cartes VPS. C'est un XCFramework qui fonctionne dans les applications UIKit, RealityKit et SwiftUI.
Avant de commencer
- iOS 15.0 ou plus récent
- Xcode 14 ou plus récent (Swift 5.7 ou plus récent)
- Un appareil capable de faire tourner ARKit. Le simulateur n'est pas pris en charge.
Installation
Deux méthodes au choix.
Swift Package Manager
- Dans Xcode, choisissez File → Add Packages….
- Saisissez
https://github.com/WebAR-Studio/was-vps-ios.git. - Choisissez la branche ou le tag voulu et ajoutez le package à votre target.
Installation manuelle
- Clonez le dépôt :
git clone https://github.com/WebAR-Studio/was-vps-ios.git - Faites glisser
WASVPS.xcframeworkdans votre projet. - Dans General → Frameworks, Libraries, and Embedded Content, vérifiez que le framework est bien intégré (embedded).
Ajouter les autorisations
Ajoutez à Info.plist les descriptions d'usage de la caméra et de la localisation, pour qu'iOS
puisse demander l'accès à l'utilisateur.
<key>NSCameraUsageDescription</key>
<string>This app requires access to the camera to display augmented reality content.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to your location to place AR content accurately.</string>
<key>NSLocationTemporaryUsageDescriptionDictionary</key>
<dict>
<key>VPSLocalization</key>
<string>Enable precise location for accurate AR content positioning.</string>
</dict>
Lancer le VPS
Appelez VPSBuilder.initializeVPS pour créer un VPSService. Passez-lui l'ARSession, votre clé
d'API et vos identifiants de lieu.
Obtenez-en une sur arclip.design ou écrivez à support@arclip.design.
import ARKit
import WASVPS
final class VPSDemoController: UIViewController, ARSCNViewDelegate {
@IBOutlet private weak var sceneView: ARSCNView!
private var configuration: ARWorldTrackingConfiguration?
private var vps: VPSService?
override func viewDidLoad() {
super.viewDidLoad()
sceneView.delegate = self
sceneView.scene = SCNScene()
configuration = VPSBuilder.getDefaultConfiguration()
VPSBuilder.initializeVPS(
arSession: sceneView.session,
apiKey: "your-api-key",
locationIds: ["your-location-id"],
url: "https://api.arclip.app/vps/api/v3",
gpsUsage: false,
delegate: self
) { service in
self.vps = service
self.vps?.start()
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let configuration { sceneView.session.run(configuration) }
}
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
vps?.frameUpdated()
}
}
extension VPSDemoController: VPSServiceDelegate {
func positionVPS(pos: ResponseVPSPhoto) {
print("Localized pose:", pos)
}
func error(err: NSError) {
print("VPS error:", err)
}
func sending(requestData: UploadVPSPhoto?) {
print("Sending localization request…")
}
}
Mettez le service en pause dans sessionWasInterrupted et relancez-le dans
sessionInterruptionEnded.
RealityKit
Avec RealityKit, transmettez les images dans ARSessionDelegate :
func session(_ session: ARSession, didUpdate frame: ARFrame) {
vps?.frameUpdated()
}
Les appels de cycle de vie (start, stop, clearCustomLocPos) sont les mêmes qu'avec SceneKit.
SwiftUI
Encapsulez ARSCNView ou ARView dans UIViewRepresentable ou UIViewControllerRepresentable.
Gardez VPSService dans un view model partagé, et appelez start() / stop() depuis vos
contrôles SwiftUI.
Autres options
- Fournissez une transformation connue avant la première localisation avec
setCustomLocPosForFirstRequest. - Utilisez un autre endpoint en passant une autre
urlàinitializeVPS. - Activez
gpsUsagepour inclure les coordonnées de l'appareil dans les requêtes.
Dépannage
- Si
VPSBuilder.getDefaultConfiguration()renvoienil, l'appareil n'est pas pris en charge. - Si les callbacks ne se déclenchent jamais, vérifiez que
frameUpdated()est appelé à chaque image, et que votre clé d'API et vos identifiants de lieu sont valides. - Le dossier
/examplescontient des exemples UIKit, RealityKit et SwiftUI.