Skip to Content

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.1

Add 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.

PropertyDefaultPurpose
batchSize10Events per batch
flushInterval5 secondsFlush timer
maxQueueSize100Bounded offline queue
requestTimeout30 secondsNetwork timeout
enableDebugLoggingfalseDevelopment diagnostics
requestATTOnInitfalseOptional ATT request
attDelaySeconds0Optional prompt delay
enableSandboxEvidenceUploadfalseSeparate sandbox conversion-evidence pilot
initialAdvertisingSharingnilPreserve 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.