コンテンツにスキップ

モバイル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 通話と顧客側からの画面共有は、今後のリリースで提供します。共同ブラウジングはウェブ専用です。モバイルの OS では、サードパーティの 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 の後、セッションは昇格され、明確に判断できる場合は同じデバイス上の匿名の履歴と統合されます。チャネルをまたいだ ID の解決は、ID グラフのルールと同意に従います。
  • 信頼できる識別: バックエンドがユーザーのクレームを含むトークンに署名し、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 の設定で行え、どちらも記録されます。

厳格なセマンティックバージョニングを採用しています。2つのメジャーバージョンを同時にサポートし、メジャーリリース後は1年間の移行期間があります。マイナーリリースは毎月、セキュリティ修正は即座に提供され、メジャーリリースは3か月前に告知されます。非推奨またはサポート対象外の SDK は起動時に警告をログに出力し、ダッシュボードの「連携」に表示されます。

有効にした範囲を超えるトラッキングは行いません。同意の画面にはプラットフォームのネイティブなパターンを使い、GDPR、CCPA、LGPD に基づくデータ主体からの請求は、他のチャネルと同じく SDK のセッションも対象になります。添付ファイルはデバイス上で圧縮され、署名付き URL にアップロードされ、担当者が目にする前にウイルススキャンされます。