Handoff між пристроями: передача задачі без втрати контексту

Користувач витратив 20 хвилин на заповнення заявки на телефоні, відволікся, відкрив ноутбук — форма порожня. Згідно з даними аналітики, близько 40% користувачів кидають багатокрокові форми через відсутність збереження прогресу. Це призводить до втрати до 30% конверсії на формах оформлення замовлення

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Handoff між пристроями: передача задачі без втрати контексту
Середній
~5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Користувач витратив 20 хвилин на заповнення заявки на телефоні, відволікся, відкрив ноутбук — форма порожня. Згідно з даними аналітики, близько 40% користувачів кидають багатокрокові форми через відсутність збереження прогресу. Це призводить до втрати до 30% конверсії на формах оформлення замовлення або реєстрації. Handoff вирішує цю проблему: почав на одному пристрої, продовжив на іншому без втрати контексту. Ми реалізуємо handoff-механізми під ключ, гарантуючи безшовну передачу контексту між будь-якими пристроями. Наша команда має понад 5 років досвіду в інтеграції як нативних, так і серверних рішень. Для iOS і macOS використовуємо Apple Handoff, для Android і Windows — серверну сесію, а для гібридних сценаріїв — комбінацію обох підходів.

Apple Handoff: мінімальна розробка, але тільки Apple

NSUserActivity — фреймворк Apple для передачі контексту через iCloud. Підтримує iOS, macOS, iPadOS. Працює автоматично при коректному налаштуванні activityType та userInfo. Однак вимагає єдиного облікового запису iCloud та активного Bluetooth/Wi-Fi. Згідно з документацією Apple, обсяг передаваних даних обмежений ~256 КБ. Для React Native використовуємо нативний модуль:

let activity = NSUserActivity(activityType: "com.yourapp.editDocument") activity.title = "Редагування документа" activity.userInfo = ["documentId": documentId, "scrollPosition": scrollY, "formData": formData] activity.isEligibleForHandoff = true activity.becomeCurrent() 

На стороні, що приймає, AppDelegate отримує application(_:continue:restorationHandler:) з цим NSUserActivity. Дані userInfo обмежені ~256 КБ. Для клієнта, у якого Android-телефон та Windows-ноутбук — не працює.

Коли Apple Handoff недостатньо?

Handoff від Apple не підходить для крос-екосистемних сценаріїв. Якщо користувачі працюють з Android, Windows або кількома акаунтами — потрібне серверне рішення. Наприклад, застосунок інтернет-магазину: клієнт почав оформлення замовлення на Android, а завершує на Windows — дані мають бути синхронізовані.

Чому автозбереження критичне?

Автозбереження стану задачі в реальному часі знижує навантаження на підтримку: користувачі рідше скаржаться на втрату даних. При кожному значущому дії (перехід на крок, введення тексту, вибір опції) серіалізований стейт надсилається на сервер. Debounce на 1 секунду знижує кількість запитів на 80% порівняно зі збереженням кожної події введення. Це особливо важливо для мобільних мереж з нестабільним зв'язком.

Як реалізувати кросплатформний Handoff?

Універсальний підхід: сесія задачі зберігається на сервері, прив'язана до акаунта, а не до пристрою.

type TaskSession = { sessionId: string; userId: string; taskType: 'checkout' | 'editDocument' | 'formFill' | 'mediaUpload'; state: Record<string, unknown>; // серіалізований стейт задачі activeDeviceId: string; updatedAt: number; expiresAt: number; }; 

Granular state: зберігаємо лише необхідні поля. Для форми — step, заповнені поля, статус валідації. Чутливі дані (CVV, PIN) ніколи не зберігаємо. Conflict resolution: останній запис перемагає (LWW) для простоти; для складних задач — vector clocks. Виявлення активних сесій: при відкритті застосунку перевіряємо незавершені сесії.

Як повідомити другий пристрій про сесію?

Існує кілька способів: push-сповіщення (silent push з sessionId), deep link (yourapp://handoff/session/abc123), QR-код, автоматичний опитувач. Автоматичний опитувач дає кращий UX, але вимагає чіткої політики privacy: користувач повинен бачити активні сесії.

Метод сповіщення Затримка UX Вимоги
Push-сповіщення 1–5 секунд Середній Налаштувати APNs/FCM
Deep link Миттєво Високий Обробка URL
QR-код 10–30 секунд Середній Екран з QR
Автоматичний опитувач 10–30 секунд Високий API для списку сесій

Порівняння методів Handoff

Критерій Apple NSUserActivity Серверна сесія Гібрид
Екосистема Тільки Apple Всі платформи Apple + решта
Затримка 0–1 секунда 200–500 мс 0–1 сек (Apple) / 200–500 мс (решта)
Розробка Мінімальна Середня Висока
Універсальність Низька Висока Дуже висока

Що входить в роботу?

  • Проєктування схеми даних для зберігання сесій та API-ендпоінтів.
  • Реалізація серверної логіки (збереження, відновлення, видалення сесій).
  • Інтеграція з клієнтськими застосунками (автозбереження, виявлення активних сесій).
  • Налаштування push-сповіщень (APNs/FCM) та deep link (Universal Links / App Links).
  • UI для відновлення сесії (діалог, екран вибору).
  • Документація з інтеграції, рекомендації з безпеки та навчання команди.
  • Підтримка протягом 2 тижнів після релізу.

Етапи розробки handoff-механізму

  1. Проєктування схеми даних для зберігання сесій.
  2. Реалізація серверних ендпоінтів (збереження, відновлення, видалення).
  3. Інтеграція з клієнтськими застосунками (автозбереження, виявлення сесій).
  4. Реалізація сповіщень (push, deep link) та UI для відновлення.
  5. Тестування сценаріїв на різних пристроях та ОС.
  6. Документація з інтеграції та рекомендації з безпеки.

Чек-лист перевірок handoff

  • Сесія коректно зберігається при переході в фон.
  • Дані відновлюються при відкритті на іншому пристрої.
  • Чутливі поля виключені з серіалізації.
  • Push-сповіщення надсилається при збереженні.
  • Deep link верифікується.

Оцінка

Серверна сесія задач з deep link, автозбереженням та UI: від 3 до 5 тижнів. З Apple NSUserActivity + кросплатформним fallback: від 4 до 6 тижнів. Вартість розраховується індивідуально після аналізу проєкту.

Отримайте консультацію — ми допоможемо підібрати оптимальний Handoff-механізм. Замовте розробку handoff у ваш застосунок.