Fara í skjöl

iOS SDK

Kixo iOS SDK styður Swift 5.9+ og iOS 16+ fyrir greiningu, upprunagreiningu, push, rakningu á lífsferli og endurspilun lota. Endurspilun notar upptökustýringar á verkefnastigi og varkár sjálfgefin gildi fyrir þyngri vinnslukeðjur; hún krefst hvorki hærri OS útgáfu né ákveðinna tækjagerða umfram iOS 16 deployment target pakkans. SDK er dreift með Swift Package Manager og rekur sjálfkrafa skjái, snertingar, lotur, hrun, push-tilkynningar og lífsferilsatvik með einu Kixo.configure kalli. Rakning netbeiðna er valkvæð.

Uppsetning

Swift Package Manager

Í Xcode skaltu fara í File → Add Package Dependencies og slá inn:

text
https://github.com/kixoio/kixo-ios-sdk

Ef þú stýrir dependencies í Package.swift skaltu nota binary release package og product:

swift
dependencies: [
    .package(
        url: "https://github.com/kixoio/kixo-ios-sdk",
        from: "1.0.21"
    ),
],
targets: [
    .target(
        name: "YourApp",
        dependencies: [
            .product(name: "Kixo", package: "kixo-ios-sdk"),
        ]
    )
]

Stilla

Frumstilltu Kixo í SwiftUI App struct-inu þínu eða AppDelegate:

swift
import Kixo

@main
struct MyApp: App {
    init() {
        Kixo.configure(
            projectId: "YOUR_PROJECT_ID",
            apiKey: "YOUR_API_KEY"
        )
    }

    var body: some Scene {
        WindowGroup { ContentView() }
    }
}

Athugið

Ein lína dugar. SDK notar production environment sjálfgefið, stýrðan ingest host og kveikir á stöðluðum sjálfvirkum rekjurum. Yfirskrifaðu einstaka flags með ConfigurationOptions(...) aðeins þegar þörf er á því.

Stillingar

swift
Kixo.configure(
    projectId: "YOUR_PROJECT_ID",
    apiKey: "YOUR_API_KEY",
    options: ConfigurationOptions(
        autoTrackScreens:   true,
        autoTrackTaps:      true,
        autoTrackNetwork:   false,
        autoTrackCrashes:   true,
        autoTrackSessions:  true,
        autoTrackPush:      true,
        sessionTimeout:     30,
        flushInterval:      30,
        flushAt:            20,
        maxBufferSize:      200,
        // apiHost:    nil  → managed Kixo ingest host
        // debug:      nil  → true in DEBUG, false otherwise
        // environment: nil → production
    )
)

Athugið

Stilling sem netþjónninn stýrir. Einnig er hægt að breyta hverri stillingu fyrir einstaka rekjara á Settings → Data Collection-síðunni í mælaborðinu. Verkefnastillingar geta yfirskrifað staðbundin sjálfgefin gildi.

Sjálfvirkt rakin atvik

  • screen_view — tafarlausar birtingar á UIKit view controller ásamt leiðsögn í SwiftUI
  • screen_visit — skipulögð heimsókn sem lýkur við leiðarskipti eða þegar app fer í bakgrunn, með dvalartíma, fjölda virkniathafna, auðkenni skjás og flæðislýsigögnum
  • session_start / session_end
  • tap — snertingar á hnöppum og gesture recognizers
  • crash — greiningargögn um hrun og undantekningar sem hafa verið skráð
  • network — valfrjálsar hreinsaðar samantektir netbeiðna og greining á leiðum
  • push_received / push_open / push_dismissed / push_silent / push_action — allur lífsferill push-tilkynninga
  • push_permission / push_token_invalidated
  • lifecycle — umskipti milli forgrunns, bakgrunns og ræsingu apps

Sérsniðin atvik

swift
Kixo.track("purchase_completed", properties: [
    "product_id": "SKU-123",
    "amount": 49.99,
    "currency": "USD",
])

Týpaðir event-hjálparar

Þægilegra yfirlag yfir Kixo.track fyrir atvikin sem Kixo þekkir af heiti (purchase, signup,subscribe_start, trial_start,cancel, upgrade, activation,share, invite). Staðfesting á gerð eiginleika við þýðingu og einn sameiginlegur sannleiksgjafi fyrir lyklaheiti — staðlaði atvikaskynjarinn í bakenda ber nákvæmlega saman við strengina.

swift
Kixo.trackPurchase(
    amount: 49.99,
    currency: "USD",
    productId: "pro_yearly"
)

Kixo.trackSubscriptionStart(
    plan: "pro",
    amount: 9.99,
    currency: "USD",
    interval: .month
)

Kixo.trackSignup(method: "google")
Kixo.trackTrialStart(plan: "pro", days: 14)
Kixo.trackCancel(plan: "pro", reason: "too_expensive")
Kixo.trackUpgrade(fromPlan: "free", toPlan: "pro")
Kixo.trackActivation(event: "first_post_published")
Kixo.trackShare(channel: "twitter", contentId: "post_123")
Kixo.trackInvite(channel: "email", recipientCount: 5)

Auðkenna notendur

Fráteknir staðlaðir eiginleikalyklar bera $-forskeyti (Mixpanel-hefð) svo þeir rekist ekki á sérsniðin traits hjá þér og birtist í prófíldálkum mælaborðsins. Notaðu typed StandardProperty enum eða hráan streng með $-forskeyti — sjá Katalogur staðlaðra eiginleika hér fyrir neðan fyrir allan listann með 37 lyklum.

swift
Kixo.identify("user_123", traits: [
    "$email": "jane@example.com",       // identity
    "$name":  "Jane Doe",                // identity
    "$plan":  "pro",                     // subscription pack
    "$lifetime_orders": 12,              // e-commerce pack
    "signup_source": "twitter_ad"       // custom trait
])

Merkja notanda fyrir hlutun

Notaðu setUserProperty með boolean gildi til að festa einfalt já/nei-merki við notandann. Merkið helst á milli lota og nýtist í hlutun, tölvupóstsherferðum og fyrirspurnum í spjalli — ekkert þarf að stilla umfram þetta SDK-kall.

swift
// Tag a user as subscribed — segments + campaigns can target this
Kixo.setUserProperty("subscribe", value: true)

// VIP membership
Kixo.setUserProperty("vip", value: true)

// String + numeric values work too
Kixo.setUserProperty("plan_tier", value: "enterprise")
Kixo.setUserProperty("lifetime_orders", value: 42)

// Bulk-set
Kixo.setUserProperties([
    "subscribe": true,
    "plan_tier": "enterprise",
])

Eiginleikar vistast í UserDefaults milli ræsingarferla og eru sjálfkrafa hengdir við hvert sent atvik. Í spjalli geturðu sagt hluti eins og „send a welcome email to users where subscribe is true“ — Kixo býr til segmentið og semur drög að sniðmáti fyrir þig. Hreinsast með Kixo.reset().

Katalogur staðlaðra eiginleika

Fráteknir eiginleikalyklar bera $-forskeyti svo þeir rekist ekki á sérsniðin traits hjá þér. Katalogur Kixo nær yfir 37 lykla í 3 almennum pökkum (identity, geo, lifecycle) og 5 sértækum B2B-pökkum (subscription, e-commerce, media, marketplace, loyalty). Stilltu þá pakka sem eiga við um vöruna þína — mælaborðið aðlagast og sýnir aðeins þá sem þú fyllir út.

Auðkenni

Alltaf viðeigandi. Stillir dálkana í haus prófílsins.

LykillGerðLýsing
$emailstrengurAðalnetfang, oft notað sem merge key við samruna auðkenna.
$phonestrengurE.164 símanúmer.
$namestrengurFullt birtingarnafn.
$first_namestrengurFornafn.
$last_namestrengurEftirnafn.
$avatar_urlstrengurFull URL á avatar-mynd notandans.

Landfræði

Landfræðilegt samhengi.

LykillGerðLýsing
$countrystrengurLandskóði samkvæmt ISO 3166.
$citystrengurNafn borgar.
$regionstrengurFylki eða hérað.
$timezonestrengurIANA-svæði eins og America/Los_Angeles.
$languagestrengurIETF-merki eins og en eða ru-RU.
$localestrengurFullt locale identifier.

Lífsferill

Hvenær sáum við þau.

LykillGerðLýsing
$createdISO8601Tími skráningar eða stofnunar reiknings.
$last_seenISO8601Tími síðustu virkni.

Áskrift

Stilltu þetta ef varan þín er með áskriftarleiðir.

LykillGerðLýsing
$planstrengurStigskenni — free, pro, enterprise.
$subscription_statusstrenguractive / trial / cancelled / past_due.
$trial_endsISO8601Hvenær núverandi prufutímabil rennur út.
$mrrtalaMánaðarlegar endurteknar tekjur í gjaldmiðli reikningsins.
$subscription_startedISO8601Hvenær núverandi áskrift hófst.

Netverslun

Stilltu þetta ef þú selur vörur.

LykillGerðLýsing
$lifetime_orderstalaFjöldi lokinna pantana.
$lifetime_revenuetalaHeildareyðsla.
$aovtalaMeðalvirði pöntunar.
$last_purchaseISO8601Síðustu heppnuðu kaup.
$first_purchaseISO8601Fyrstu heppnuðu kaup.
$cart_abandoned_counttalaHeildarfjöldi yfirgefinna körfa.

Miðlar

Stilltu þetta ef þú birtir efni.

LykillGerðLýsing
$content_tierstrengurfree / premium / paid.
$subscribed_categoriesCSV-strengur eða fylkiFlokkar sem notandinn fylgir.
$watch_time_totaltalaHeildaráhorfstími í sekúndum.
$last_playedISO8601Síðasta upphaf afspilunar.

Markaðstorg

Stilltu þetta ef þú rekur tvíhliða vettvang.

LykillGerðLýsing
$seller_tierstrengurTier-slug seljanda.
$buyer_tierstrengurTier-slug kaupandans.
$listings_counttalaVirkar skráningar sem notandinn á.
$reviews_counttalaUmsagnir sem notandinn hefur fengið.
$verifiedbooleanKYC-staða.

Vild

Stillt fyrir vildar- og umbunarkerfi.

LykillGerðLýsing
$loyalty_pointstalaNúverandi staða innleysanlegra punkta.
$vip_levelstrengurVIP stigskenni.
$referral_counttalaHeppnaðar tilvísanir sem rekja má til þessa notanda.

Ábending

Sérðu ekki mynstrið þitt? Notaðu bera lykla fyrir sérsniðin traits. Þeir birtast í Custom Traits-svæði mælaborðsins án þess að rugla prófíldálkana. Pakkarnir fimm hér að ofan eru markviss ágiskun á algengustu B2B-formin — hugtök sem eru sértæk fyrir viðskiptavininn (t.d. shipping_plan) eru áfram án forskeytis.

Super-properties

Lykil-/gildispör fyrir hverja lotu sem eru sjálfkrafa hengd við hvert sent atvik. Ólíkt identify traits, sem lýsa auðkenni, lýsa super-properties samhengi lotunnar — virk A/B-útgáfa, build flavor og feature flags sem notandi hefur valið. Vistað í UserDefaults milli ræsingarferla; hreinsast með reset(). Ef árekstur verður hafa properties á track alltaf forgang.

swift
Kixo.setSuperProperty("build_flavor", value: "beta")
Kixo.setSuperProperties([
    "ab_variant": "B",
    "referrer_campaign": "autumn-launch",
])

// Sugar for A/B tracking — keys as 'experiment_<id>'.
Kixo.setExperimentVariant("checkout_v2", variant: "variant_a")

Kixo.unsetSuperProperty("build_flavor")
Kixo.clearSuperProperties()

Skjárakning í SwiftUI

Skjáskoðanir í SwiftUI eru raktar sjálfkrafa þegar SDK getur fundið heiti á view-i. Fyrir meiri stjórn eða sérsniðin heiti skaltu nota .kixoScreen() view modifier:

swift
struct HomeView: View {
    var body: some View {
        VStack { Text("Welcome") }
            .kixoScreen("HomeView")
    }
}

Lotuendursýning

Replay endurgerir það sem notandinn sá í raun — SDK fangar pixlaramma af skjánum (HEIC-kóðaða) ásamt skipulögðu yfirliti yfir view-hirarkíið, og spilarinn í mælaborðinu saumar þetta saman í afspilun sem má skrúbba í við hlið atvikatímalínunnar. Stilltu replay fyrir verkefnið í Stjórnborð → Stillingar → Lotuendursýning; SDK les þá stefnu sjálfkrafa og endurnýjar hana meðan appið er í gangi.

swift
Kixo.configure(
    projectId: "YOUR_PROJECT_ID",
    apiKey: "YOUR_API_KEY"
)

Mælaborðið stjórnar hvort replay sé virkt, maskun, upptökustillingum og því hvort native replay megi hlaða upp yfir farsímanet. Þegar upphleðsla yfir farsímanet er óvirk geta rammar samt safnast í afmarkaðan biðminni í tækinu; upphleðsla bíður eftir leyfilegu neti.

SDK safnar þeim gögnum sem eru virkjuð í verkefninu þínu, ásamt þeim atvikum og eigindum sem forritið sendir.

Maskun og persónuvernd

Þar sem replay fangar pixla fer afmáning fram í tækinu áður en nokkur rammi er kóðaður. Lykilorðsreitir og aðrir viðkvæmir reitir eru sjálfvirkt greindir og afmáðir, og texti sem fer inn í structural snapshot fer í gegnum PII-síu. Til að afmá sérsniðið efni — einkaskilaboðaþráð, reikningsstöðu eða dragskjá — skaltu setja kxRedact á view-ið. Kixo rasterar heilan ferhyrning yfir mörk þess áður en HEIC-kóðun fer fram, þannig að pixlarnir fara aldrei úr tækinu.

swift
balanceLabel.kxRedact = true
cardNumberField.kxRedact = true

Ábending

Snertingar sem eru skráðar á skjám í replay fæða líka hitakort fyrir farsíma í mælaborðinu, svo þú sérð hvar notendur snerta á hverjum skjá án frekari uppsetningar á SDK. Replay ræðst af áskriftarleið verkefnisins; þegar ekki er hægt að fanga ramma skráir SDK samt lýsigögn lotunnar án þess að hlaða upp rammastreymi.

Push-tilkynningar

SDK setur upp AppDelegate-proxy í keyrslu á Kixo.configure — hljóðlaus push (content-available: 1) og sýnileg push sem berast í bakgrunni eru skráð sjálfkrafa. Þú þarft engan kóða í AppDelegate. Núverandi útfærslur á UNUserNotificationCenterDelegate halda áfram að keyra eðlilega; Kixo vefur utan um þær.

Skráðu device token með staðlaða didRegisterForRemoteNotificationsWithDeviceToken:

swift
func application(
    _ application: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
) {
    let token = deviceToken.map { String(format: "%02x", $0) }.joined()
    Kixo.setPushToken(token)
}

Ef appið notar Firebase Messaging skaltu senda registration token þess með provider: .firebase. Kixo vistar þann provider og afhendir í gegnum FCM HTTP v1; stilltu Firebase service account appsins í Kixo áður en herferðir eru sendar.

swift
func messaging(_ messaging: Messaging, didReceiveRegistrationToken token: String?) {
    guard let token else { return }
    Kixo.setPushToken(token, provider: .firebase)
}

Afhending og hegðun án nettengingar

SDK raðar atvikum í staðbundna biðröð, sendir þau í bunkum og reynir aftur við tímabundnar villur með backoff. Ef söfnun er sett á hlé í verkefnastillingum eru ný atvik ekki send fyrr en kveikt er aftur á söfnun.

Greining

Heilsuyfirlit sem aðeins er til lestrar. Gagnlegt á debug-skjám eða í smoke tests — svarar „af hverju skila atvikin sér ekki?“ án þess að opna debugger.

swift
let diag = Kixo.diagnostics()
print(diag.queue.bufferedEventCount)  // events waiting to flush
print(diag.paused)                     // collection paused state
print(diag.environment)                // configured environment
print(diag.apiHost)                    // configured ingest host

Þvinga flush (fyrir próf)

Samstillt overload sem bíður í allt að timeout sekúndur eftir að flush ljúki. Hannað fyrir XCTest fixtures — kallaðu þetta aldrei af main thread.

swift
func testEventLanded() {
    Kixo.track("test_event")
    let landed = Kixo.flush(timeout: 5.0)
    XCTAssertTrue(landed)
}

Endurstilla

Hreinsar auðkenni, super-properties og vistaða biðröð. Kallaðu á þetta við útskráningu svo næstu atvik séu ekki rakin á fyrri notanda.

swift
Kixo.reset()