iOS SDK Overview

ZetaKit is the Zeta Marketing Platform (ZMP) SDK for iOS. It gives your app a single integration point for user identity, event tracking, push notifications, in-app messages, and the app inbox.

SDK version: This documentation covers iOS SDK 1.0.0. For earlier versions, see Prior iOS SDK guides.

This guide is for iOS developers integrating the Zeta SDK into a consumer app. It covers what the SDK provides, how to get started, and where to find detailed documentation for each feature.

On this page


Requirements

Minimum
iOS / iPadOS13.0
Swift5.10 (Swift 6 compatible)
Xcode15.3

The SDK binaries are built with the Swift 6 toolchain and work in both Swift 5.x and Swift 6 consumer projects. For details on strict concurrency and Sendable conformance, see Swift 6 readiness.

Quickstart

Get from zero to a tracked event in under five minutes.

  1. Add the SDK via Swift Package Manager -- use the URL https://gitlab.com/zeta-crm/zetakit-swift and select the ZetaCore product.
  2. Initialize the SDK inside application(_:didFinishLaunchingWithOptions:).
  3. Send your first event.
import ZetaCore

func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
    let config = ZTConfig(
        clientSiteId: "your-site-id",
        clientSecret: "your-secret", // load from secure storage
        region: .US,
        appGroupId: "group.com.example.app",
        optIn: true,
        appEnvironment: .PRODUCTION
    )
    ZetaClient.shared.initialize(config: config)

    ZetaClient.shared.event?.send(name: "app_launched")
    return true
}
@import ZetaCore;

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ZTConfig *config = [[ZTConfig alloc]
        initWithClientSiteId:@"your-site-id"
        clientSecret:@"your-secret" // load from secure storage
        region:ZTRegionUS
        appGroupId:@"group.com.example.app"
        optIn:YES
        appEnvironment:ZTAppEnvironmentPRODUCTION];

    [[ZetaClient shared] initializeWithConfig:config completionBlock:^{}];

    [[ZetaClient shared].event sendWithName:@"app_launched" properties:nil];
    return YES;
}

Important: Do not hardcode clientSecret in your source code. Load it from a secure source (Keychain, remote configuration, or build-time injection) at app launch. See Data & privacy for details.

For full configuration options and opt-in behavior, continue to Getting started.

Modules

ZetaKit ships two independently buildable modules:

ModulePurposeAdd to target
ZetaCoreCore SDK: configuration, user identity, event tracking, push tokens, in-app messages, app inbox. Required.App target
ZetaNotificationServiceRich push notification rendering and delivery tracking. Optional.Notification Service Extension target only

Installation instructions for each package manager are on the Installation page.

SDK module sizes

The table below shows the sizes of each module for version 1.0.0. Binary size is the arm64 device slice; download size is the full XCFramework archive distributed via SPM or direct download.

ModuleBinary size (arm64)Download size (XCFramework)
ZetaCore~997 KB~5.2 MB
ZetaNotificationService~142 KB~684 KB

Note: The sizes above reflect the raw XCFramework archives. The actual footprint added to your app is typically smaller because the App Store applies compression and app thinning before delivering to end users.


Integration journey

The documentation follows the path a typical integration takes -- from installing the package to preparing for release. Work through it in order, or jump to the stage you need.

Set up and initialize

Get the package installed and the client running in your app.

  • Installation -- Swift Package Manager, CocoaPods, and prebuilt XCFrameworks.
  • Getting started -- initialize the SDK, configure it, and handle opt-in/out.

Integrate core features

With the SDK initialized, identify your users and capture their behavior. Contact management covers identifying users with a uid or emailId, adding email and phone contacts, and attaching custom properties. Event tracking covers auto-tracked lifecycle events, screen-name tracking, and fully custom events.

Add messaging channels

Once users are identified, reach them through the channels orchestrated from ZMP.

  • Push notifications -- device-token handoff, click attribution, deeplink delivery, rich media, and delivery tracking via the Notification Service Extension.
  • In-app messaging -- foreground, opt-in-free, SDK-rendered messages with optional email collection.
  • App inbox -- a persistent, queryable store of messages delivered to the user.

Prepare for release

Before shipping, reference the API surface, review compliance, and confirm version support.

  • API reference -- feature-grouped index of every public type.
  • Changelog -- complete API-level changelog for every version.
  • Data & privacy -- PrivacyInfo.xcprivacy, ATT, GDPR/CCPA, thread safety.
  • Versioning & support -- SemVer policy, supported toolchain window, support channels.

Note: The migration guide for upgrading between SDK versions is maintained in the public distribution repository. See the Changelog for version-specific links.

Advanced topics