ARKit-ramverket — plattformen för förstärkt verklighet från Apple som gör att utvecklare kan skapa AR-appar för iOS utan djupgående kunskaper i datorseende. Enligt Apple ARKit Documentation, 2025 använder ramverket Visual-Inertial Odometry för att noggrant spåra enhetens position i rymden utan externa markörer. Semantisk förståelse av scenen gör det möjligt att känna igen horisontella och vertikala plan, bestämma belysning och placera virtuella objekt i den verkliga miljön.
Huvudpunkter
ARKit — Apples ramverk för förstärkt verklighet, tillkännagivet på WWDC 2017 tillsammans med iOS 11. Det kombinerar kamerans, M-seriens rörelseprocessors och A-chipens neurala motors kapacitet för att skapa en immersiv AR-upplevelse utan specialiserad hårdvara — bara iPhone eller iPad räcker.
ARKit använder tekniken Visual-Inertial Odometry (VIO), som kombinerar data från kameran och Core Motion tröghetssensorer för att noggrant spåra enhetens rörelse i rymden. VIO gör det möjligt för ramverket att förstå var enheten befinner sig i förhållande till omgivningen, utan GPS eller externa markörer.
Enligt Apple WWDC 2024 stöds ARKit 6 på enheter med A12-chip och nyare (iPhone XS, iPad Pro 2018+). Antalet AR-appar i App Store har överstigit 15 000 och den totala ytan av igenkända plan i alla AR-sessioner överstiger 100 miljarder kvadratmeter.
Under sex versioner har ARKit fått betydande förbättringar: ARKit 1.0 (iOS 11) — grundläggande spårning och planigenkänning; ARKit 2.0 — delade AR-sessioner via ARWorldMap och detektering av 3D-objekt; ARKit 3.0 — spårning av människokroppen, segmentering av personer och samtidiga fram- och bakkameror.
ARKit 4.0 introducerade LiDAR Scanner för omedelbar bestämning av djup och opacitet hos objekt, samt Location Anchor för att koppla AR-innehåll till GPS-koordinater. ARKit 6 lade till 4K-video med HDR, Plane Estimation med LiDAR och förbättrad ocklusionsbehandling.
import ARKit
let configuration = ARWorldTrackingConfiguration()
configuration.planeDetection = [.horizontal, .vertical]
configuration.environmentTexturing = .automatic
let arView = ARSCNView(frame: view.bounds)
arView.session.run(configuration)
arView.debugOptions = [.showFeaturePoints]
view.addSubview(arView)
ARKit fungerar genom en AR-sessionscykel, som startas med en konfiguration och kontinuerligt analyserar videoströmmen från kameran. Varje bildruta beräknar ramverket enhetens position (6 frihetsgrader), uppdaterar kartan över igenkända plan och korrigerar positionen för virtuella objekt — allt detta med en frekvens på 60 bildrutor per sekund.
VIO-processen består av två parallella strömmar: den visuella odometrialgoritmen spårar rörelsen av karakteristiska punkter (feature points) mellan bildrutor, och Core Motion tröghetssensorer förutsäger rörelse över korta intervall när kameran rör sig snabbt eller bilden är suddig. Kombinationen av två metoder ger en spårningsnoggrannhet på upp till 1 centimeter.
Enligt Apple bearbetar ARKit upp till 500 karakteristiska punkter per bildruta, och storleken på omgivningskartan (ARWorldMap) kan nå 100 meter i diameter. Att skanna omgivningen och bygga kartan tar cirka 2-3 sekunder efter att sessionen startats — under hela denna tid samlar ARKit data från kameran och sensorerna.
ARAnchor — nyckelobjektet för att placera innehåll. När ARKit känner igen ett plan skapar det ARPlaneAnchor med angivelse av position, storlek och orientering av ytan. Utvecklaren reagerar på delegaten session(_:didAdd:) och placerar 3D-objektet på platsen för plandetektering via SceneKit eller RealityKit.
För att implementera dragning av objekt används ARHitTestResult: vid beröring av skärmen utförs en hit-test genom ARKit-bildrutan som returnerar skärningspunkten mellan strålen och igenkända plan. Den funna punkten omvandlas till ARAnchor och objektet fixeras i denna position.
func renderer(
_ renderer: SCNSceneRenderer,
didAdd node: SCNNode,
for anchor: ARAnchor
) {
guard let planeAnchor = anchor
as? ARPlaneAnchor else { return }
let boxNode = SCNNode(
geometry: SCNBox(
width: planeAnchor.extent.x,
height: 0.01,
length: planeAnchor.extent.z,
chamferRadius: 0
)
)
node.addChildNode(boxNode)
}
ARKit erbjuder en uppsättning teknologier som gör förstärkt verklighet realistisk och funktionell: rörelsespårning med 6 frihetsgrader, scenförståelse genom igenkänning av plan och gränser, uppskattning av belysning för korrekt skuggläggning, ocklusion av personer och reflekterande ytor baserat på omgivningskartor.
Motion Capture (ARKit 3+) — teknik för att spåra människokroppen i realtid genom kameran. Gör det möjligt att animera karaktärer med användarens rörelser utan externa sensorer: 18 leder känns igen med en frekvens på 60 Hz. Används i fitnessappar och för animationsprototyping.
Delade AR-sessioner (ARKit 2+) gör att flera enheter kan se samma virtuella objekt i ett delat utrymme. ARWorldMap sparar omgivningskartan som överförs till andra enheter via nätverket. Apple ger ett exempel på synkroniseringsnoggrannhet: två iPhone 12 Pro i samma rum ser ett objekt med en avvikelse på högst 2 centimeter.
LiDAR-skannern, installerad på iPhone 12 Pro och nyare, förändrar ARKits möjligheter radikalt. Istället för programvarubaserad djupbestämning genom bildanalys, levererar LiDAR omedelbart en djupkarta med en noggrannhet på upp till 3 centimeter inom ett intervall på upp till 5 meter. Detta gör att ARKit kan känna igen plan omedelbart, utan föregående skanning med kameran.
Med LiDAR kan ARKit bestämma opaciteten hos objekt: ett virtuellt objekt kan gömma sig bakom en verklig stol eller ett bord. Dessutom bygger Scene Reconstruction ett 3D-nät av omgivningen i realtid — upp till 10 miljoner polygoner per rum, som används för simulering av kollisionsfysik och realistisk belysning.
// Konfiguration för LiDAR
let lidarConfig = ARWorldTrackingConfiguration()
lidarConfig.planeDetection = [.horizontal]
lidarConfig.sceneReconstruction = .mesh
arView.session.run(lidarConfig)
// Detektering av beröring på plan
override func touchesBegan(
_ touches: Set<UITouch>,
with event: UIEvent?
) {
let location = touches.first?.location(in: arView)
guard let hitPoint = location else { return }
let results = arView
.raycastQuery(
from: hitPoint,
allowing: .existingPlaneInfinite,
alignment: .horizontal
)
}
Integrering av ARKit börjar med minimikrav: Xcode 15+, iOS 17 SDK, enhet med A12 Bionic-chip och nyare. I Info.plist måste nyckeln NSCameraUsageDescription läggas till — ARKit använder kameran för att spåra och visa AR-scenen. Utan denna nyckel kommer appen att avslutas med ett fel vid start av AR-sessionen.
För rendering av innehåll erbjuder iOS tre ramverk: SceneKit för 3D-grafik av medelhög komplexitet, RealityKit för fotorealistisk rendering med PBR-material och Metal för maximal prestanda. RealityKit — det rekommenderade valet för nya projekt, eftersom det innehåller inbyggt stöd för ARKit-funktioner, animering och fysik.
Enligt Apple är genomsnittstiden för integrering av en grundläggande AR-skärm i en befintlig app — cirka 2 timmar för en erfaren iOS-utvecklare. De största svårigheterna uppstår vid arbete med att överlappa UI-element på AR-scenen och vid hantering av avbrott i AR-sessionen — samtal, växling av appar eller förlust av spårning i svagt ljus.
ARKit kan förlora spårning i ett antal situationer: otillräcklig belysning (mindre än 100 lux), avsaknad av karakteristiska punkter (enfärgade väggar), snabba kamerarörelser eller övertäckning av linsen. Delegaten ARSessionDelegate tillhandahåller metoder för att hantera dessa tillstånd — det rekommenderas att visa tips för användaren: “Flytta enheten långsammare” eller “Sätt på belysningen”.
För återhämtning efter ett fel startar ARKit automatiskt relokalisering — det försöker matcha den aktuella videoströmmen med den sparade omgivningskartan. Om relokalisering inte är möjlig startas sessionen om med en ny konfiguration. Det rekommenderas att spara ARWorldMap när man lämnar appen för snabb återställning av AR-scenen vid återkomst.
class ARViewController: UIViewController {
let arView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.frameSemantics = .personSegmentation
arView.session.run(config)
}
func sessionWasInterrupted(
_ session: ARSession
) {
showAlert("Session avbruten")
}
}
Vanliga frågor
ARKit fungerar på Apple-enheter med A12 Bionic-chip och nyare: iPhone XS, XR, 11, 12, 13, 14, 15, 16 och SE (2:a och 3:e generationen), iPad Pro 2018+, iPad Air 2020+, iPad mini 2021+. För LiDAR-funktioner krävs iPhone 12 Pro/Pro Max, iPhone 13 Pro/Pro Max, iPhone 14 Pro/Pro Max, iPhone 15 Pro/Pro Max och iPad Pro 2020+.
Ja, ARKit kan användas direkt med Metal, men detta kräver att man skriver sin egen shader och rendering. SceneKit och RealityKit tillhandahåller färdiga lösningar med ARKit-integration på ramverksnivå. För nybörjare är RealityKit det optimala valet eftersom det automatiskt hanterar ARKit-funktioner.
ARKit uppskattar automatiskt scenbelysningen genom kameran och tillhandahåller data om ljuskällans riktning, intensitet och färgtemperatur via AREnvironmentProbeAnchor. Detta gör att virtuella objekt kan kasta skuggor korrekt och reflektera omgivningen, vilket skapar en realistisk sammansmältning med den verkliga världen.
ARKit fungerar endast på iOS och använder Visual-Inertial Odometry för spårning, medan ARCore från Google fungerar på Android och använder sin egen Motion Tracking baserad på IMU och kamera. ARKit har en fördel tack vare hårdvaruintegrering med Apple-chips, och ARCore — multiplattform via Cloud Anchors.
Ja, ARKit är idealiskt för AR-spel. SceneKit och RealityKit stödjer fysik (SCNPhysicsBody, PhysicsSimulation), animering, ljud och partiklar. Kända exempel — Pokémon GO (använder egen motor med ARKit), Angry Birds AR och Lego AR Studio. ARKit stödjer även flerspelarsessioner via ARWorldMap.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också