iOS SDK
Een native Swift- en SwiftUI-client voor de Respondo-supportchat, met nul externe dependencies.
Vereisten#
- iOS 15.0+ (fijnere sheet-detents op iOS 16+, met een systeem-fallback daaronder).
- Swift 5.9+.
- Nul externe dependencies — alleen Foundation, Swift Concurrency, SwiftUI en UIKit.
Je bent afhankelijk van het product RespondoSDK, dat het cross-platform RespondoCore opnieuw exporteert.
Installatie#
Voeg het pakket toe met Swift Package Manager. In Xcode: File → Add Package Dependencies… en voer https://github.com/respondo-app/sdk-ios in, of declareer het in je eigen Package.swift en maak vervolgens gebruik van het product RespondoSDK.
dependencies: [
.package(url: "https://github.com/respondo-app/sdk-ios", from: "0.1.0")
],
targets: [
.target(
name: "MyApp",
dependencies: [
.product(name: "RespondoSDK", package: "sdk-ios")
]
)
]Importeer het vervolgens in code:
import RespondoSDKInitialiseren#
Initialiseer één keer bij het opstarten en roep daarna overal Respondo.open() aan. De lifecycle-methode is initialize (het woord init is gereserveerd door de taal).
import SwiftUI
import RespondoSDK
@main
struct MyApp: App {
init() {
Respondo.initialize(
RespondoConfig(
agentId: "<agent-uuid>",
channelId: "<channel-uuid>"
// baseUrl nil -> https://api.respondo.ai
)
)
}
var body: some Scene {
WindowGroup {
Button("Support") { Respondo.open() }
}
}
}De Respondo-facade is thread-safe. Aanroepen die vlak na initialize worden gedaan, worden in de wachtrij gezet en toegepast zodra de asynchrone init is voltooid.
Gebruikers identificeren#
Standaard is elke bezoeker anoniem. Bij de eerste start genereert de SDK een stabiele visitor_id en bewaart die in de keychain, zodat een terugkerende gebruiker zijn gesprek terugvindt. Er is geen API-sleutel om in te bedden — elk gesprek wordt beschermd door een sessietoken per gesprek dat de backend uitgeeft en bij elk bericht vooruit schuift, zodat een anonieme bezoeker zich nooit opnieuw hoeft te authenticeren.
Roep identify aan zodra je gebruiker is ingelogd. Dit koppelt zijn echte identiteit, zodat zijn geschiedenis hem volgt over apparaten en herinstallaties heen, en zijn naam en e-mail naast het gesprek in je inbox verschijnen in plaats van een anonieme bezoeker.
De userHash is een handtekening die je backend berekent uit de identity_secret van de agent — HMAC-SHA256(secret, userId) (of het e-mailadres als er geen userId is), gecodeerd als kleine-letter-hex. Het secret bewijst dat de identiteit echt is, dus het mag alleen op je backend leven en wordt nooit met de app meegeleverd. Zie de pagina Identiteitsverificatie voor de volledige formule en voorbeelden aan de serverkant.
// De userHash komt van je backend (HMAC-SHA256 over de userId) —
// bereken hem nooit in de app.
Respondo.identify(
RespondoIdentity(
userId: session.userId,
email: session.email,
name: session.fullName,
userHash: session.respondoUserHash
)
)
// Bij uitloggen: trek de sessie in en start een verse anonieme bezoeker.
Respondo.reset()Als de hash ontbreekt of onjuist is, wordt er niets gegooid: de backend houdt de bezoeker stil anoniem, de chat blijft werken, en je verliest simpelweg de koppeling tussen apparaten totdat een geldige hash wordt aangeleverd. Verificatie draait alleen wanneer de agent een identity_secret heeft ingesteld — laat die leeg tijdens de ontwikkeling en userId / e-mail worden as-is geaccepteerd.
Observables & delegate#
Lees de status als synchrone getters, reactieve AsyncStreams, of via een RespondoDelegate. Streams en delegate-callbacks komen aan op de main actor.
// Reactieve stream van aantallen ongelezen.
Task {
for await count in Respondo.unreadCountStream {
updateBadge(count)
}
}
// Delegate voor badges en deep-link-fallbacks.
final class SupportCoordinator: RespondoDelegate {
init() { Respondo.delegate = self }
func respondoUnreadChanged(_ count: Int) {
UIApplication.shared.applicationIconBadgeNumber = count
}
}Schermtracking#
Meld het huidige scherm bij elke navigatie, zodat proactieve teasers en targeting op paginaniveau ertegen kunnen matchen (static func setCurrentScreen(_ name: String?)). Geef nil door om het te wissen; bij elke wijziging wordt de proactieve teaser opnieuw geëvalueerd voor het nieuwe scherm.
Respondo.setCurrentScreen("pricing")Volgende stappen#
Zet Push-notificaties en Identiteitsverificatie op. De UIKit-wrapper RespondoChatViewController, het volledige delegate-oppervlak en het oplossen van problemen komen aan bod in de getting-startedgids van de iOS SDK; de SDK-bronnen zijn openbaar op GitHub.