Supported on: iOS SDK
1.0.61+Core Methods
Session Data Methods
Config Methods
Experiment Methods
Push Methods
AppDNA.pushModule forwarding
For hosts that disable the notification proxy (AppDNADisableNotificationProxy = YES) and forward from their own delegate. All three are no-ops returning false unless the payload carries the AppDNA marker (appdna: "1"); calls are deduplicated per push.
Delivered / tapped tracking needs an AppDNA server from this release or later (older servers send no
appdna marker, push_id or delivery_id, so their pushes are not recognised as AppDNA pushes: no tracking, no callbacks, no tap routing).
Presentation Methods
Web Entitlements
Deep Links
Module Namespaces
Access module-specific functionality through these properties on theAppDNA singleton:
Delegate Protocols
AppDNAPushDelegate
AppDNABillingDelegate
AppDNA.billing.setDelegate(_ delegate: AppDNABillingDelegate?, deliversPurchases: Bool = true) (or AppDNA.billingDelegate = …, which is deliversPurchases: true). Any billing delegate drains the late-purchase delivery queue — implement onPurchaseCompleted, or pass deliversPurchases: false for a delegate that must not receive queued purchases.
onPurchaseCompleted fires for every purchase the SDK completes — paywall-driven or direct AppDNA.billing.purchase(...). On .storeKit2 it also fires for purchases that complete later (interrupted, Ask-to-Buy or offer code), possibly at launch, on setDelegate or after identify; a purchase made on another device of the same Apple ID may also be reported here, and a late purchase made while another user was signed in is delivered when that user signs in — grant idempotently by transaction.transactionId. A refused paywall tap (providerNotAvailable) and a re-buy of an owned item fire no onPurchaseCompleted.
AppDNAOnboardingDelegate
AppDNAPaywallDelegate
AppDNAInAppMessageDelegate
AppDNASurveyDelegate
AppDNADeepLinkDelegate
Key Types
AppDNAOptions
Environment
LogLevel
BillingProvider
.storeKit2 (and omitted) — the SDK owns purchases and finishes transactions. .revenueCat / .adapty — the provider owns purchases; the SDK never finishes transactions and SDK paywall taps report providerNotAvailable — under .revenueCat unless RevenueCat is linked into AppDNA (source / vendored builds only), under .adapty always (with Adapty linked, restore and entitlements go through Adapty, but the SDK never buys). .none — billing disabled; purchase and restore throw BillingError.providerNotAvailable (“No billing provider configured”). See Billing.
Info.plist keys (not runtime options)
PaywallContext
OnboardingContext
PushPayload
PushAction
TransactionInfo
ProductInfo
Entitlement
WebEntitlement
DeferredDeepLink
PaywallAction
DismissReason
StepAdvanceResult
minimumBridgeTimeout(stepData:) is the floor the Flutter and React Native bridges apply to onBeforeStepAdvance: they wait max(vetoTimeout, minimumBridgeTimeout(stepData:) ?? 0). A native iOS host is not timed out.
StepConfigOverride
FormFieldType
Server-Driven Screens
AppDNAScreenDelegate
ScreenError
ScreenResult
FlowResult
SectionAction
An action a section dispatches through its context.SectionAction is an
enum, not a struct — each case carries its own associated values.

