Lewati ke konten

SDK seluler

SDK seluler adalah padanan widget web untuk aplikasi Anda sendiri: pelanggan Anda mendapatkan dukungan dalam aplikasi dengan riwayat percakapan lengkap dan notifikasi push, dan agen Anda melihat percakapan tersebut di Kotak masuk yang sama. SDK ini bukan aplikasi agen untuk tim Anda; aplikasi agen adalah lini produk terpisah.

Platform Bahasa dan runtime Distribusi Status
iOS Swift 5.9+, iOS 15+ Swift Package Manager, CocoaPods dalam pengembangan
Android Kotlin 1.9+, Android 8.0 (API 26)+ Maven Central dalam pengembangan
React Native membungkus SDK native npm direncanakan (beta)
Flutter membungkus SDK native pub.dev direncanakan (beta)

SDK native adalah acuan utama; wrapper dirilis setelahnya. Aplikasi jam tangan atau TV dan SDK desktop berada di luar cakupan; gunakan widget web untuk desktop.

Pesan teks, lampiran, pesan suara, gambar dan video, sesi anonim dan teridentifikasi, tema, avatar dan branding kustom, 40 bahasa, concierge AI, riwayat percakapan, lencana belum dibaca, notifikasi push, deep link, klik-untuk-menelepon melalui aplikasi telepon, antrean offline dengan sinkronisasi latar belakang, buka kunci biometrik untuk chat, dukungan VoiceOver dan TalkBack, mode gelap. Target ukuran hasil kompilasi: 5 MB atau kurang per platform.

Panggilan WebRTC dalam aplikasi dan berbagi layar dari pelanggan hadir di rilis berikutnya. Cobrowse hanya untuk web: sistem operasi seluler tidak mengizinkan SDK pihak ketiga mengamati atau mengendalikan layar.

Inisialisasi sekali, di awal siklus hidup aplikasi:

// iOS
let config = RolChatConfig(
siteId: "site_abc123",
apiKey: "pk_live_…", // public key - safe to ship in the app
region: .eu, // eu / us
theme: RolChatTheme(primaryColor: .blue)
)
RolChat.shared.initialize(config: config)
// Android
val config = RolChatConfig.Builder()
.siteId("site_abc123")
.apiKey("pk_live_…")
.region(Region.EU)
.theme(RolChatTheme(primaryColor = Color.Blue))
.build()
RolChat.initialize(context, config)

Identifikasi pengguna setelah mereka login, dan logout saat mereka keluar:

RolChat.shared.identify(userId: "user_12345", email: "alice@example.com", name: "Alice",
metadata: ["tier": "gold"])
RolChat.shared.logout() // on host-app sign-out, or the next user sees this history

Tampilkan UI:

RolChat.shared.openChat() // modal
RolChat.shared.openChat(conversationId: id) // a specific conversation
RolChat.shared.openChatInline(view) // inside your own layout
RolChat.shared.close()

Callback: rolChatDidOpen, rolChatDidClose, rolChatDidReceiveMessage(_:), rolChatDidFailToSend(_:). API publik aman dipanggil dari main thread di iOS dan dari background thread di Android; koneksi terputus saat aplikasi masuk ke latar belakang dan tersambung kembali saat kembali ke latar depan.

  • Anonim: ID sesi perangkat yang disimpan di keychain atau preferensi terenkripsi tetap ada setelah pembaruan aplikasi dan terikat pada perangkat, bukan pengguna. ID ini dihapus setelah 90 hari tidak aktif.
  • Teridentifikasi: setelah identify, sesi dinaikkan tingkatnya dan digabungkan dengan riwayat anonim di perangkat yang sama jika tidak ambigu. Resolusi identitas lintas saluran mengikuti aturan grafik identitas dan persetujuan.
  • Identifikasi tepercaya: backend Anda menandatangani token berisi claim pengguna; SDK meneruskannya dan RolChat memverifikasi tanda tangan sebelum menaikkan tingkat sesi. identify tanpa tanda tangan tetap berfungsi, tetapi tingkat kepercayaannya lebih rendah.

Kunci API publik di aplikasi aman secara desain: kunci ini dibatasi ke situs dan dikenai batas laju.

Platform Transport Yang Anda sediakan
iOS APNs Kunci autentikasi APNs di dasbor RolChat
Android FCM JSON service account FCM
RolChat.shared.setPushToken(deviceToken, type: .apns)
if RolChat.shared.handleNotification(userInfo) { return } // consumed: a chat message

Teks notifikasi dilokalkan di sisi server ke bahasa pengguna. Notifikasi kaya mendukung avatar, balas dari notifikasi, dan tandai sebagai dibaca. SDK tidak pernah meminta izin push dengan sendirinya; panggil requestPushPermission() saat sesuai dengan alur onboarding Anda. Menonaktifkan dilakukan dengan setPushEnabled(false) atau pengaturan OS; keduanya dicatat.

Semantic versioning yang ketat. Dua versi mayor didukung bersamaan, dengan waktu satu tahun untuk migrasi setelah rilis mayor. Rilis minor setiap bulan; perbaikan keamanan dirilis segera; rilis mayor diumumkan tiga bulan sebelumnya. SDK yang dihentikan atau tidak didukung mencatat peringatan saat dijalankan dan dasbor menampilkannya di Integrasi.

Tidak ada pelacakan di luar yang Anda aktifkan, tampilan persetujuan menggunakan pola native platform, dan permintaan subjek data GDPR, CCPA, dan LGPD mencakup sesi SDK seperti saluran lainnya. Lampiran dikompresi di perangkat, diunggah ke URL bertanda tangan, dan dipindai virus sebelum dilihat agen.