bevy_ios_toolkit 0.4.1

Native iOS integrations for Bevy as ECS resources and messages: StoreKit IAP, Google AdMob ads, App Tracking Transparency, Game Center, review prompts, haptics and safe-area — each behind a feature and a polled C-ABI Swift bridge, with desktop fakes only where useful.
Documentation
// App Tracking Transparency bridge for bevy_ios_toolkit (feature "att").
//
// Same contract as the other bridges: @_cdecl C-ABI called FROM Rust, polled
// status (no callbacks into Rust). Add this file to the app's Xcode target when
// the `att` feature is enabled. Requires `NSUserTrackingUsageDescription` in
// Info.plist. Deployment floor iOS 26 — ATT (iOS 14+) needs no availability guard.

import Foundation

#if canImport(AppTrackingTransparency)
import AppTrackingTransparency

@_cdecl("att_request")
public func att_request() {
    // No-op if already determined; iOS shows the system prompt at most once.
    ATTrackingManager.requestTrackingAuthorization { _ in }
}

@_cdecl("att_status")
public func att_status() -> Int32 {
    switch ATTrackingManager.trackingAuthorizationStatus {
    case .notDetermined: return 0
    case .restricted: return 1
    case .denied: return 2
    case .authorized: return 3
    @unknown default: return 0
    }
}

#else
// ATT unavailable: linking stubs. Status reports not-determined.

@_cdecl("att_request") public func att_request() {}
@_cdecl("att_status") public func att_status() -> Int32 { 0 }

#endif