Перейти до основного вмісту
ДокументаціяFAQ мобільного SDK

FAQ і усунення проблем SDK

Знайдіть мінімальні версії платформ, правила автентифікації, обмеження життєвого циклу та перші перевірки типових помилок інтеграції.

На цій сторінці

Ви можете визначити, чи належить проблема конфігурації хоста, ідентичності, нативному життєвому циклу або відновлюваному стану мережі.

Поширені запитання про інтеграцію

  • Чи може вебвіджет бути анонімним? Так. Вебінтеграції можуть почати анонімно й після входу хоста додати короткоживучу підписану ідентичність. Нативні SDK вимагають підписаний токен ідентичності клієнта до мережевих операцій.
  • Чи відтворює мобільний SDK вебвіджет у WebView? Ні. iOS, Android, Flutter, React Native, NativeScript і Capacitor відкривають спільний нативний віджет та нативний транспорт. Capacitor може залишати решту UI застосунку у звичайному WebView.
  • Які мінімальні версії підтримуються? iOS 15.1, Android API 26, Flutter 3.22.3 або новіший із Dart 3.4–3.x, React Native 0.76–0.87 з New Architecture, NativeScript 8.9–9.x і Capacitor 6–8.
  • Чи можна тримати кілька активних розмов в одному клієнті? Ні. Один accountScope володіє однією активною нативною сесією та довговічним outbox. Завершіть або скиньте поточну сесію перед новою та викличте logout до зміни ідентичності.
  • Чи транслює публічний SDK токени ШІ? Ні. Публічний API повертає типізовані snapshots і результати wait-for-assistant. Не будуйте UI токен за токеном на основі polling-подій.
  • Чи входять push і voice до базового пакета? Ні. Це окремі додаткові нативні можливості з власними провайдерами та дозволами.

Зіставте помилки з безпечною наступною дією

Прочитайте типізований код помилки та збережіть ідентичність запиту. Стани network, reconnecting і rate-limited можна повторювати за правилами SDK. session-expired потребує свіжого токена для того самого акаунта. field-invalid, payload-too-large і message-rejected потребують виправлення хостом або клієнтом. idempotency-conflict означає, що хост має перевірити початковий ключ, а не надсилати нове повідомлення.

Межа помилок хоста
import { DobroDeskSdkError } from "@dobrodesk/mobile-protocol";

try {
  await client.sendMessage(text, idempotencyKey);
} catch (error) {
  // These host functions render controls; they do not retry inside catch.
  if (!(error instanceof DobroDeskSdkError)) {
    showRecoverableSdkError(error);
    return;
  }
  switch (error.details.code) {
    case "network":
    case "rate-limited":
      showRetryControl();
      break;
    case "session-expired":
      showRefreshAndRetryControlForTheSameAccount();
      break;
    case "field-invalid":
    case "payload-too-large":
    case "message-rejected":
      showCorrection(error.details);
      break;
    case "idempotency-conflict":
      investigateOriginalRequest(error.details);
      break;
    default:
      showRecoverableSdkError(error);
  }
}

Перевірте хост перед зверненням у підтримку

  1. Переконайтеся, що apiOrigin — це HTTPS origin без path, query або облікових даних, а integrationId вказує на потрібну DobroDesk інтеграцію.
  2. Переконайтеся, що підписаний токен виданий бекендом хоста для поточного клієнта, а accountScope стабільний і належить лише цьому клієнту.
  3. Переконайтеся, що нативний presenter викликається з foreground-екрана й хост не змонтував другого клієнта для того самого акаунта.
  4. Переконайтеся, що повтор використовує початковий idempotency key, а logout або reset не викликано, поки операція просто була офлайн.