콘텐츠로 이동

모바일 SDK

모바일 SDK는 여러분의 앱을 위한 웹 위젯에 해당합니다. 고객은 전체 대화 기록과 푸시 알림이 있는 앱 내 지원을 받고, 상담원은 그 대화를 같은 받은편지함에서 봅니다. 팀을 위한 상담원 앱은 아니며, 상담원 앱은 별도의 제품군입니다.

플랫폼 언어와 런타임 배포 상태
iOS Swift 5.9+, iOS 15+ Swift Package Manager, CocoaPods 개발 중
Android Kotlin 1.9+, Android 8.0(API 26)+ Maven Central 개발 중
React Native 네이티브 SDK 래핑 npm 계획됨(베타)
Flutter 네이티브 SDK 래핑 pub.dev 계획됨(베타)

기준은 네이티브 SDK이며, 래퍼는 그 이후에 출시됩니다. 워치나 TV 앱, 데스크톱 SDK는 범위에 포함되지 않습니다. 데스크톱에서는 웹 위젯을 사용하세요.

텍스트 메시지, 첨부파일, 음성 메시지, 이미지와 동영상, 익명 및 식별된 세션, 테마, 사용자 지정 아바타와 브랜딩, 40개 언어, AI 컨시어지, 대화 기록, 읽지 않음 배지, 푸시 알림, 딥 링크, 휴대전화 다이얼러를 통한 클릭 투 콜, 백그라운드 동기화가 있는 오프라인 대기열, 채팅 생체 인증 잠금 해제, VoiceOver 및 TalkBack 지원, 다크 모드. 컴파일 크기 목표는 플랫폼당 5 MB 이하입니다.

앱 내 WebRTC 통화와 고객 측 화면 공유는 이후 릴리스에서 제공됩니다. 공동 브라우징은 웹 전용입니다. 모바일 운영체제는 타사 SDK가 화면을 관찰하거나 제어하는 것을 허용하지 않습니다.

앱 수명 주기 초기에 한 번 초기화합니다.

// 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)

사용자가 로그인하면 식별하고, 로그아웃하면 로그아웃시킵니다.

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

UI를 표시합니다.

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

콜백: rolChatDidOpen, rolChatDidClose, rolChatDidReceiveMessage(_:), rolChatDidFailToSend(_:). 공개 API는 iOS에서는 메인 스레드에서, Android에서는 백그라운드 스레드에서 안전하게 호출할 수 있습니다. 앱이 백그라운드로 가면 연결이 끊기고 포그라운드로 돌아오면 다시 이어집니다.

  • 익명: 키체인이나 암호화된 환경설정에 저장되는 기기 세션 ID는 앱 업데이트 후에도 유지되며, 사용자가 아니라 기기에 연결됩니다. 90일 동안 활동이 없으면 삭제됩니다.
  • 식별됨: identify 후 세션이 승격되며, 모호하지 않은 경우 같은 기기의 익명 기록과 병합됩니다. 채널 간 신원 확인은 신원 그래프 규칙과 동의를 따릅니다.
  • 신뢰할 수 있는 식별: 백엔드가 사용자의 클레임으로 토큰에 서명하고, SDK가 이를 전달하면 RolChat이 세션을 승격하기 전에 서명을 검증합니다. 서명 없는 identify도 작동하지만 신뢰도가 낮습니다.

앱에 들어가는 공개 API 키는 설계상 안전합니다. 사이트로 범위가 제한되고 속도 제한이 적용됩니다.

플랫폼 전송 방식 준비할 것
iOS APNs RolChat 대시보드에 등록할 APNs 인증 키
Android FCM FCM 서비스 계정 JSON
RolChat.shared.setPushToken(deviceToken, type: .apns)
if RolChat.shared.handleNotification(userInfo) { return } // consumed: a chat message

알림 텍스트는 서버에서 사용자의 로캘에 맞게 현지화됩니다. 리치 알림은 아바타, 알림에서 바로 답장, 읽음으로 표시를 지원합니다. SDK는 스스로 푸시 권한을 요청하지 않으므로, 온보딩에 알맞은 시점에 requestPushPermission()을 호출하세요. 수신 거부는 setPushEnabled(false) 또는 OS 설정으로 하며, 둘 다 기록됩니다.

엄격한 시맨틱 버전 관리를 따릅니다. 두 개의 메이저 버전을 동시에 지원하며, 메이저 릴리스 후 1년의 마이그레이션 기간이 있습니다. 마이너 릴리스는 매월, 보안 수정은 즉시 제공되며, 메이저 릴리스는 3개월 전에 공지됩니다. 지원이 중단되었거나 지원되지 않는 SDK는 시작할 때 경고를 기록하며, 대시보드의 연동 항목에 표시됩니다.

사용자가 켠 것 이외의 추적은 하지 않고, 동의 화면은 플랫폼의 기본 패턴을 사용하며, GDPR, CCPA, LGPD에 따른 정보주체 요청은 다른 채널과 마찬가지로 SDK 세션도 포함합니다. 첨부파일은 기기에서 압축되어 서명된 URL로 업로드되고, 상담원이 보기 전에 바이러스 검사를 거칩니다.