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:
https://github.com/kixoio/kixo-ios-sdkEf þú stýrir dependencies í Package.swift skaltu nota binary release package og product:
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:
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
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 í SwiftUIscreen_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ögnumsession_start/session_endtap— snertingar á hnöppum og gesture recognizerscrash— greiningargögn um hrun og undantekningar sem hafa verið skráðnetwork— valfrjálsar hreinsaðar samantektir netbeiðna og greining á leiðumpush_received/push_open/push_dismissed/push_silent/push_action— allur lífsferill push-tilkynningapush_permission/push_token_invalidatedlifecycle— umskipti milli forgrunns, bakgrunns og ræsingu apps
Sérsniðin atvik
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.
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.
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.
// 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.
| Lykill | Gerð | Lýsing |
|---|---|---|
$email | strengur | Aðalnetfang, oft notað sem merge key við samruna auðkenna. |
$phone | strengur | E.164 símanúmer. |
$name | strengur | Fullt birtingarnafn. |
$first_name | strengur | Fornafn. |
$last_name | strengur | Eftirnafn. |
$avatar_url | strengur | Full URL á avatar-mynd notandans. |
Landfræði
Landfræðilegt samhengi.
| Lykill | Gerð | Lýsing |
|---|---|---|
$country | strengur | Landskóði samkvæmt ISO 3166. |
$city | strengur | Nafn borgar. |
$region | strengur | Fylki eða hérað. |
$timezone | strengur | IANA-svæði eins og America/Los_Angeles. |
$language | strengur | IETF-merki eins og en eða ru-RU. |
$locale | strengur | Fullt locale identifier. |
Lífsferill
Hvenær sáum við þau.
| Lykill | Gerð | Lýsing |
|---|---|---|
$created | ISO8601 | Tími skráningar eða stofnunar reiknings. |
$last_seen | ISO8601 | Tími síðustu virkni. |
Áskrift
Stilltu þetta ef varan þín er með áskriftarleiðir.
| Lykill | Gerð | Lýsing |
|---|---|---|
$plan | strengur | Stigskenni — free, pro, enterprise. |
$subscription_status | strengur | active / trial / cancelled / past_due. |
$trial_ends | ISO8601 | Hvenær núverandi prufutímabil rennur út. |
$mrr | tala | Mánaðarlegar endurteknar tekjur í gjaldmiðli reikningsins. |
$subscription_started | ISO8601 | Hvenær núverandi áskrift hófst. |
Netverslun
Stilltu þetta ef þú selur vörur.
| Lykill | Gerð | Lýsing |
|---|---|---|
$lifetime_orders | tala | Fjöldi lokinna pantana. |
$lifetime_revenue | tala | Heildareyðsla. |
$aov | tala | Meðalvirði pöntunar. |
$last_purchase | ISO8601 | Síðustu heppnuðu kaup. |
$first_purchase | ISO8601 | Fyrstu heppnuðu kaup. |
$cart_abandoned_count | tala | Heildarfjöldi yfirgefinna körfa. |
Miðlar
Stilltu þetta ef þú birtir efni.
| Lykill | Gerð | Lýsing |
|---|---|---|
$content_tier | strengur | free / premium / paid. |
$subscribed_categories | CSV-strengur eða fylki | Flokkar sem notandinn fylgir. |
$watch_time_total | tala | Heildaráhorfstími í sekúndum. |
$last_played | ISO8601 | Síðasta upphaf afspilunar. |
Markaðstorg
Stilltu þetta ef þú rekur tvíhliða vettvang.
| Lykill | Gerð | Lýsing |
|---|---|---|
$seller_tier | strengur | Tier-slug seljanda. |
$buyer_tier | strengur | Tier-slug kaupandans. |
$listings_count | tala | Virkar skráningar sem notandinn á. |
$reviews_count | tala | Umsagnir sem notandinn hefur fengið. |
$verified | boolean | KYC-staða. |
Vild
Stillt fyrir vildar- og umbunarkerfi.
| Lykill | Gerð | Lýsing |
|---|---|---|
$loyalty_points | tala | Núverandi staða innleysanlegra punkta. |
$vip_level | strengur | VIP stigskenni. |
$referral_count | tala | Heppnað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.
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:
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.
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.
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:
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.
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.
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.
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.
Kixo.reset()