モバイルSDK
モバイルSDKは、ウェブウィジェットに相当する自社アプリ向けの機能です。顧客は会話履歴とプッシュ通知を備えたアプリ内サポートを受けられ、担当者はそれらの会話を同じ受信箱で確認できます。チームのための担当者用アプリではありません。担当者用アプリは別の製品ラインです。
プラットフォーム
Section titled “プラットフォーム”| プラットフォーム | 言語とランタイム | 配布方法 | 状況 |
|---|---|---|---|
| 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は対象外です。デスクトップにはウェブウィジェットを使ってください。
SDK に含まれるもの
Section titled “SDK に含まれるもの”テキストメッセージ、添付ファイル、ボイスメッセージ、画像と動画、匿名および識別済みのセッション、テーマ設定、カスタムアバターとブランディング、40言語、AI コンシェルジュ、会話履歴、未読バッジ、プッシュ通知、ディープリンク、端末の電話アプリを使ったクリック発信、バックグラウンド同期付きのオフラインキュー、チャットの生体認証によるロック解除、VoiceOver と TalkBack への対応、ダークモード。コンパイル後のサイズの目標は、プラットフォームごとに 5 MB 以下です。
アプリ内の WebRTC 通話と顧客側からの画面共有は、今後のリリースで提供します。共同ブラウジングはウェブ専用です。モバイルの OS では、サードパーティの SDK が画面を監視・操作することは許可されていません。
SDK の API
Section titled “SDK の API”アプリのライフサイクルの早い段階で、一度だけ初期化します。
// iOSlet 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)// Androidval 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 historyUI を表示します。
RolChat.shared.openChat() // modalRolChat.shared.openChat(conversationId: id) // a specific conversationRolChat.shared.openChatInline(view) // inside your own layoutRolChat.shared.close()コールバック: rolChatDidOpen、rolChatDidClose、rolChatDidReceiveMessage(_:)、rolChatDidFailToSend(_:)。公開 API は、iOS ではメインスレッドから、Android ではバックグラウンドスレッドから安全に呼び出せます。アプリがバックグラウンドに移ると接続は切断され、フォアグラウンドに戻ると再開します。
セッションと ID
Section titled “セッションと ID”- 匿名: キーチェーンまたは暗号化された設定に保存されるデバイスのセッション ID は、アプリのアップデート後も維持され、ユーザーではなくデバイスに紐付きます。90日間使われないと削除されます。
- 識別済み:
identifyの後、セッションは昇格され、明確に判断できる場合は同じデバイス上の匿名の履歴と統合されます。チャネルをまたいだ ID の解決は、ID グラフのルールと同意に従います。 - 信頼できる識別: バックエンドがユーザーのクレームを含むトークンに署名し、SDK がそれを渡し、RolChat がセッションを昇格する前に署名を検証します。署名なしの
identifyも動作しますが、信頼度は低くなります。
アプリ内の公開 API キーは、設計上安全です。サイトに範囲が限定され、レート制限がかかっています。
プッシュ通知
Section titled “プッシュ通知”| プラットフォーム | 配信方式 | 用意するもの |
|---|---|---|
| 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 の設定で行え、どちらも記録されます。
バージョニングとサポート
Section titled “バージョニングとサポート”厳格なセマンティックバージョニングを採用しています。2つのメジャーバージョンを同時にサポートし、メジャーリリース後は1年間の移行期間があります。マイナーリリースは毎月、セキュリティ修正は即座に提供され、メジャーリリースは3か月前に告知されます。非推奨またはサポート対象外の SDK は起動時に警告をログに出力し、ダッシュボードの「連携」に表示されます。
プライバシー
Section titled “プライバシー”有効にした範囲を超えるトラッキングは行いません。同意の画面にはプラットフォームのネイティブなパターンを使い、GDPR、CCPA、LGPD に基づくデータ主体からの請求は、他のチャネルと同じく SDK のセッションも対象になります。添付ファイルはデバイス上で圧縮され、署名付き URL にアップロードされ、担当者が目にする前にウイルススキャンされます。