iOS SDK

Accurate reference for the Nuxie iOS SDK (current local version)

PreviousNext

iOS SDK

Initialize the SDK with a configuration, identify users, send events, and present flows (paywalls). This page reflects the public API in /Users/levi/dev/nuxie-ios.

Requirements

  • iOS 15+
  • Swift 5.9+ (Xcode 15+)

Initialization

swift
import Nuxie
 
var config = NuxieConfiguration(apiKey: "NX_…")
config.environment = .production // .staging, .development, .custom
config.logLevel = .info
do { try NuxieSDK.shared.setup(with: config) }
catch { print("setup failed: \(error)") }

Optional user identity and traits:

swift
NuxieSDK.shared.identify(
  "user_123",
  userProperties: ["plan": "free"],
  userPropertiesSetOnce: ["signup_at": Date()]
)

Events

swift
// Name + optional properties
NuxieSDK.shared.track("app_opened")
NuxieSDK.shared.track("feature_used", properties: ["feature": "editor"])
 
// Observe immediate outcomes
NuxieSDK.shared.track("purchase_completed", properties: ["sku": "pro_annual"]) { result in
  switch result {
  case .noInteraction: break
  case .flow(let completion): print(completion.outcome)
  case .failed(let error): print(error)
  }
}

Event names are free‑form; keep them consistent and documented within your team.

Flows (paywalls)

Workflows can present flows automatically. For manual control or debugging:

swift
@MainActor
try await NuxieSDK.shared.showFlow(with: "paywall_summer_launch")
 
@MainActor
let vc = try await NuxieSDK.shared.getFlowViewController(with: "paywall_summer_launch")
present(vc, animated: true)

If you manage purchases, assign a NuxiePurchaseDelegate on NuxieConfiguration.

API Surface (selected)

  • NuxieSDK.shared.setup(with: NuxieConfiguration)
  • NuxieSDK.shared.identify(_:userProperties:userPropertiesSetOnce:)
  • NuxieSDK.shared.track(_:properties:userProperties:userPropertiesSetOnce:completion:)
  • NuxieSDK.shared.reset(keepAnonymousId:)
  • NuxieSDK.shared.getDistinctId() / isIdentified
  • Session: startNewSession(), endSession(), resetSession(), getCurrentSessionId(), setSessionId(_:)
  • Flows: showFlow(with:), getFlowViewController(with:)
  • Queue: flushEvents(), getQueuedEventCount(), pauseEventQueue(), resumeEventQueue()
  • Plugins: installPlugin(_:), uninstallPlugin(_:), startPlugin(_:), stopPlugin(_:), isPluginInstalled(_:)

Configuration (selected)

  • apiKey: String
  • environment: .production | .staging | .development | .custom
  • Logging: logLevel, enableConsoleLogging, enableFileLogging, redactSensitiveData
  • Networking/batching: requestTimeout, retryCount, retryDelay, flushAt, flushInterval, eventBatchSize, maxQueueSize
  • Hooks: beforeSend, propertiesSanitizer
  • Flows cache: maxFlowCacheSize, flowCacheExpiration, maxConcurrentFlowDownloads, flowDownloadTimeout
  • Purchases: purchaseDelegate

Debugging

  • Run on a debug build and watch logs for event delivery.
  • Manually present a paywall to isolate UI issues from workflow logic.
  • Verify the device is in the expected segment before testing a campaign.