Nyaraka

iOS SDK

Kliyenti asilia ya Swift na SwiftUI kwa gumzo la msaada la Respondo, isiyo na tegemezi zozote za watu wa tatu.

Mahitaji#

  • iOS 15.0+ (vidhibiti laini zaidi vya urefu wa karatasi kuanzia iOS 16+, na mbadala wa mfumo chini yake).
  • Swift 5.9+.
  • Hakuna tegemezi za watu wa tatu — Foundation, Swift Concurrency, SwiftUI na UIKit pekee.

Unategemea bidhaa RespondoSDK, ambayo husafirisha tena RespondoCore inayotumika kwenye mifumo yote.

Usakinishaji#

Ongeza kifurushi kwa Swift Package Manager. Ndani ya Xcode: File → Add Package Dependencies… kisha weka https://github.com/respondo-app/sdk-ios, au kitangaze ndani ya Package.swift yako, kisha tegemea bidhaa RespondoSDK.

Package.swiftswift
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")
        ]
    )
]

Kisha iagize ndani ya msimbo:

Swiftswift
import RespondoSDK

Uanzishaji#

Anzisha mara moja wakati wa uzinduzi, kisha ita Respondo.open() popote. Mbinu ya mzunguko wa maisha ni initialize (neno init limehifadhiwa na lugha yenyewe).

MyApp.swiftswift
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() }
        }
    }
}

Kiolesura cha Respondo ni salama kwa nyuzi zote. Miito inayofanywa mara tu baada ya initialize hupangwa foleni na kutekelezwa pindi uanzishaji usiosawazishwa unapokamilika.

Kutambua watumiaji#

Kwa chaguo-msingi kila mgeni ni asiyejulikana. Katika uzinduzi wa kwanza SDK hutengeneza visitor_id thabiti na kuihifadhi katika keychain, hivyo mtumiaji anayerudi hupata mazungumzo yake tena. Hakuna ufunguo wa API wa kupachika — kila mazungumzo hulindwa na tokeni ya kipindi ya mazungumzo hayo, ambayo backend huitengeneza na kuisogeza mbele kwa kila ujumbe, hivyo mgeni asiyejulikana halazimiki kamwe kuthibitisha utambulisho upya.

Ita identify mara tu mtumiaji wako anapoingia. Hii huambatisha utambulisho wake halisi, hivyo historia yake humfuata kati ya vifaa na usakinishaji upya, na jina lake na barua pepe huonekana kando ya mazungumzo katika kikasha chako badala ya mgeni asiyejulikana.

userHash ni sahihi ambayo backend yako huikokotoa kutoka identity_secret ya wakala — HMAC-SHA256(secret, userId) (au barua pepe pale userId haipo), iliyosimbwa kama hex ya herufi ndogo. Siri hiyo huthibitisha kuwa utambulisho ni halisi, kwa hiyo lazima ikae kwenye backend yako pekee na haisafirishwi kamwe ndani ya programu. Angalia ukurasa wa Uthibitishaji wa utambulisho kwa fomula kamili na mifano ya upande wa seva.

Swiftswift
// userHash hutoka kwenye backend yako (HMAC-SHA256 juu ya userId) —
// usiikokotoe kamwe ndani ya programu.
Respondo.identify(
    RespondoIdentity(
        userId: session.userId,
        email: session.email,
        name: session.fullName,
        userHash: session.respondoUserHash
    )
)

// Wakati wa kutoka: tengua kipindi na uanze mgeni mpya asiyejulikana.
Respondo.reset()

Ikiwa hash haipo au si sahihi, hakuna kosa linaloibuka: backend humwacha mgeni kimya kimya bila utambulisho, gumzo huendelea kufanya kazi, na wewe hupoteza tu kiungo kati ya vifaa hadi hash sahihi itakapotolewa. Uthibitishaji hufanyika tu pale wakala ana identity_secret iliyowekwa — iache tupu wakati wa maendeleo, na userId / barua pepe hukubaliwa kama zilivyo.

Hali zinazofuatiliwa na delegate#

Soma hali kwa getter za papo hapo, kwa AsyncStream tendaji, au kupitia RespondoDelegate. Vitiririsho na miito ya delegate hufika kwenye main actor.

Swiftswift
// Mtiririko tendaji wa idadi ya ujumbe ambao haujasomwa.
Task {
    for await count in Respondo.unreadCountStream {
        updateBadge(count)
    }
}

// Delegate kwa beji na mbadala wa deep link.
final class SupportCoordinator: RespondoDelegate {
    init() { Respondo.delegate = self }
    func respondoUnreadChanged(_ count: Int) {
        UIApplication.shared.applicationIconBadgeNumber = count
    }
}

Ufuatiliaji wa skrini#

Ripoti skrini ya sasa katika kila usogezaji ili vishawishi vya awali na ulengaji wa kiwango cha ukurasa viweze kulinganishwa nayo (static func setCurrentScreen(_ name: String?)). Pitisha nil kuifuta; katika kila mabadiliko kishawishi cha awali huthaminiwa upya kwa skrini mpya.

Swiftswift
Respondo.setCurrentScreen("pricing")

Hatua zinazofuata#

Unganisha Arifa za push na Uthibitishaji wa utambulisho. Kifunga cha UIKit RespondoChatViewController, uso kamili wa delegate, na utatuzi wa matatizo vimeelezwa katika mwongozo wa kuanza na iOS SDK; misimbo chanzo ya SDK ipo wazi kwenye GitHub.