Installation
Register your development app
Create an iOS app in AttributeHQ with your build’s bundle identifier. Copy its app UUID and create an app-scoped, write-only SDK key from its app details page. Use a separate development app for test activity: basic install/event collection is not automatically sandbox traffic.
Never embed dashboard credentials, server conversion keys or advertising-platform tokens in your app.
Add the Swift package
Use the 1.1.0-beta.1 pilot release. The old 1.0.0 tag does not include the current fixes. This prerelease is for controlled analytics integration; paid attribution and production partner delivery remain unvalidated.
In Xcode, choose File → Add Package Dependencies, enter https://github.com/AttributeHQ/ios-sdk.git, choose the Exact Version dependency rule and enter:
1.1.0-beta.1Add the AttributeHQ library product to your app target. For a Swift package consumer:
.package(
url: "https://github.com/AttributeHQ/ios-sdk.git",
exact: "1.1.0-beta.1"
)Then include .product(name: "AttributeHQ", package: "ios-sdk") in the consuming target’s dependencies. Set the app deployment target to iOS 14.0 or later. CocoaPods distribution has not passed this release’s acceptance checks; use Swift Package Manager for the pilot.
Initialize once at launch
Call this from your existing AppDelegate launch method or SwiftUI app initialization:
import AttributeHQ
let config = AttributeHQConfiguration(
apiKey: "ak_your_write_only_sdk_key",
appId: "your-development-app-uuid"
)
do {
try AttributeHQ.shared.initialize(configuration: config)
} catch {
// Surface the setup failure in your development diagnostics.
print("AttributeHQ initialization failed: \(error.localizedDescription)")
}ATT prompting is off by default. Basic integration does not require showing a prompt. Read tracking controls before enabling it.
Verify an event
After successful initialization, trigger a real test action once:
AttributeHQ.shared.track(eventName: "onboarding_completed")
AttributeHQ.shared.flush()In the dashboard, select that same development app and a date range including today. Confirm the install and event appear. initialize returning successfully means local configuration was accepted; track and flush do not return server delivery acknowledgements. Allow for asynchronous ingestion and refresh the report.
If no data appears, check the selected app/date, matching app ID and active SDK key, connectivity, and API errors in development diagnostics. Do not reinstall repeatedly to troubleshoot: that can create new installation identities. Do not share keys or raw customer payloads in support logs.
Configuration
Create the configuration with apiKey and appId, then assign optional properties before initialization.
| Property | Default | Purpose |
|---|---|---|
batchSize | 10 | Events per batch |
flushInterval | 5 seconds | Flush timer |
maxQueueSize | 100 | Bounded offline queue |
requestTimeout | 30 seconds | Network timeout |
enableDebugLogging | false | Development diagnostics |
requestATTOnInit | false | Optional ATT request |
attDelaySeconds | 0 | Optional prompt delay |
enableSandboxEvidenceUpload | false | Separate sandbox conversion-evidence pilot |
initialAdvertisingSharing | nil | Preserve stored preference; new installations are unknown |
Keep sandbox evidence upload disabled for basic onboarding. Its conversion APIs require separate backend setup and are not a production postback integration.
Privacy manifest
This release bundles an analytics-only privacy manifest through Swift Package Manager. It is not an App Store submission approval. Review the SDK privacy inventory, your custom event fields and downstream sharing before submission. Sandbox partner tests do not establish production tracking disclosures.