The options
Samples~/BasicIntegration/Assets/Scripts/GuideExamples.cs
Offline behaviour
WithOfflineMode on, initialisation is instant, every decision returns the registered fallback immediately (Source = Fallback), and events enqueue but never flush. TrackingEnabled = false takes precedence over offline mode. PIO.IsOffline reports the mode at runtime.
Without it, the SDK degrades gracefully. A decision the device can serve on device keeps working without a connection once initialisation has succeeded. A decision that needs the cloud serves your fallback while the backend is unreachable. Events queue until connectivity returns.
The event queue
Events enqueue synchronously and flush in background batches everyFlushIntervalSeconds. The queue persists on device, so a force-quit loses nothing; unflushed events go out on the next launch. Past MaxEventQueueSize, the oldest events are evicted and an EVENT_QUEUE_FULL warning fires.
Sessions
A session starts at initialisation and rolls over afterSessionTimeoutMinutes of background time (default 5). PIO.SessionId identifies the current session; PIO.UserId is a stable identifier persisted on device. Custom state set with SetState is per-session.
Decision timing
DecisionTimeoutMs (default 2000) is the per-decision budget for a cloud-served decision before the fallback serves. On-device decisions make no network call. Raise it for high-latency audiences; the trade is a longer worst-case wait at the decision point.