Technologies
This document lists the main technologies, frameworks, services, and packages used by ARShades and explains their roles in the app and App Clip.
Apple Frameworks
-
SwiftUI
Declarative UI for all screens in the full app and App Clip, with environment objects for state propagation and scene phase handling. -
UIKit
Used where imperative app lifecycle control is required (e.g.,UIApplicationDelegate, orientation management, notification registration, window configuration). -
ARKit
Face-tracking and camera session management for real-time try-on. Provides anchors and facial geometry used to position eyewear accurately on the user’s face. -
RealityKit
Rendering and animation of 3D eyewear models (ModelEntity, animations, lighting configuration). Manages anchors and scene updates during try-on. -
Combine
Reactive data flow between view models and views (published properties, observers) to drive UI updates as Firebase data and AR state change. -
WebKit
Used to display 3D model viewer by url and any embedded web experiences where required by brand or catalog content. -
UserNotifications
Local and remote notification handling (foreground presentation, badge updates, interaction routing). -
CoreLocation
Used where location context is needed by analytics/experiments or brand requirements. -
AppClip
Lightweight experience that launches from links and shows a single product/variant try-on without full installation.
Firebase Services
-
Analytics
Event and property tracking for user sessions, deep-link attribution, try-on engagement, and funnel measurement. -
Crashlytics
Crash reporting and non-fatal error logging for stability monitoring across the full app and App Clip. -
Firestore
Primary data store for catalogues, products, and variants.- Resolves
catalogueIdandvariantIdfrom deep links. - Fetches product and sibling variants.
- Powers the paginated product carousel (30 items per page) within a catalogue.
- Resolves
-
Storage
Retrieval of media assets required by notifications and brand content (e.g., notification images). -
Messaging (FCM)
Push messaging token management and delivery channel for remote notifications. -
Dynamic Links
Deep links that route to App Clip or full app. Parameters:c= catalogueId (catalog containing the variant)m= variantId (specific SKU to open)
-
App Check
Protects backend resources by attesting app integrity in production builds (configurable provider during development).
Deep Linking & Routing
-
Universal Links / Associated Domains
Routeswebvto.itand branded links directly into the App Clip or full app after splash.- App Clip opens immediately to the specified variant.
- Full app parses the same parameters, loads catalogue/product context from Firestore, then navigates into Try-On.
-
Navigation
Deep links hydrate app state (catalogue, product, variant) before presenting Try-On. Side-menu routes provide access to 3D Viewer, Catalogue, Favorites, Facial Metrics, Choose Skin, Notifications, Legal, and Contacts.
Data & Local Persistence
-
Realm (full app only; excluded from App Clip)
Lightweight local persistence for notifications and select domain objects, schema-versioned with migrations. Used to cache items and manage read/unread state for a responsive UX. -
App Groups
Shared container between the full app and App Clip for small pieces of cross-experience state (e.g., acceptance flags or last viewed identifiers).
AR / 3D Pipeline
-
Model ingestion & loading
On-demand download of USDZ assets; retry logic ensures models attach to a face anchor reliably. -
Face-fit computation
Uses ARKit face geometry sampling to position and incline frames; lighting exponent and brand-level parameters tune visual quality. -
Animations
Conditional playback of available animations on models (e.g., flexible/glossy effects) with reversed or forward sequences depending on UX cues.
Notifications
- Remote notifications (FCM)
Registration, token lifecycle, and message handling.- Foreground presentation with banners and badges.
- Startup routing from notification payload to the appropriate product context.
- Optional media retrieval from Firebase Storage for rich notifications.
System Services & Entitlements
-
Associated Domains
applinks:safilo.arshades.itapplinks:spaarkly.page.linkappclips:safilo.arshades.it
-
Background Modes
Remote notifications enabled for timely updates. -
Signing & Provisioning
Automatic signing under Spaarkly srl; bundleit.spaarkly.ARShades-demo.
Third-Party Swift Packages
-
DeviceKit (
~> 5.5.0)
Device identification for orientation/support logic and feature gating. -
Kingfisher (
~> 7.3.0)
Efficient image downloading and caching across list/grid views and carousels. -
Realm / RealmSwift (
= 10.49.x)
Local database for persisted objects (notifications and select models) with schema migration. -
swift-markdown-ui (
~> 2.4.1)
Renders Markdown content (e.g., legal pages) with native SwiftUI components. -
SwiftUIGIF (
~> 1.0.1)
Displays animated GIF assets in SwiftUI when required by brand experiences. -
Firebase iOS SDK (
~> 11.0.0)
Bundled services: Analytics, Crashlytics, Firestore, Storage, Messaging, Dynamic Links, App Check.
Performance & Reliability Considerations
-
Pagination
Catalogue product lists load in batches of 30 to optimize memory and scrolling performance. -
Cold-start strategy
When launched via deep link, the app/App Clip prioritizes the requested variant first, then progressively loads siblings and carousel items. -
Asset lifecycle
Periodic cleanup of downloaded USDZ files to keep the on-device footprint low.