Skip to main content
Version: 1.0.0

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 catalogueId and variantId from deep links.
    • Fetches product and sibling variants.
    • Powers the paginated product carousel (30 items per page) within a catalogue.
  • 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
    Routes webvto.it and 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.it
    • applinks:spaarkly.page.link
    • appclips:safilo.arshades.it
  • Background Modes
    Remote notifications enabled for timely updates.

  • Signing & Provisioning
    Automatic signing under Spaarkly srl; bundle it.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.