Розробка кросс-пристрійного буфера обміну

Як побудувати кросс-пристрійний буфер обміну? Скопіювати текст на телефоні — вставити на ноутбуці. Звучить просто, але реалізація впирається в обмеження буфера обміну обох платформ і серверний компонент. Нативний універсальний буфер обміну від Apple — тільки всередині екосистеми при увімкненому H

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка кросс-пристрійного буфера обміну
Середній
~3-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

Як побудувати кросс-пристрійний буфер обміну?

Скопіювати текст на телефоні — вставити на ноутбуці. Звучить просто, але реалізація впирається в обмеження буфера обміну обох платформ і серверний компонент. Нативний універсальний буфер обміну від Apple — тільки всередині екосистеми при увімкненому Handoff. Затримка 30–60 секунд, відсутнє E2E-шифрування, немає налаштовуваного TTL, немає підтримки файлів. Для кросс-платформенних сценаріїв (iOS → Android, мобільний → десктоп) будуємо окремий механізм. Ми спеціалізуємося на таких інтеграціях і пропонуємо готове рішення на React Native із серверною частиною. Кожен третій наш клієнт стикався з відсутністю синхронізації буфера між різними ОС — і звертався за кастомним буфером обміну. Розберемо, як влаштований кросс-пристрійний буфер обміну, і покажемо архітектуру.

Чому Apple Universal Clipboard не підходить для кросс-платформенних сценаріїв?

Якщо обидва пристрої — Apple, увійшли під одним Apple ID, і ввімкнено Handoff — UIPasteboard.general на iOS автоматично синхронізується через iCloud. Нічого реалізовувати не потрібно. Але серйозні обмеження:

  • Тільки Apple-екосистема: ні Android, ні Windows.
  • Затримка 30–60 секунд — у 15 разів довше, ніж WebSocket-рішення.
  • Тільки текст і зображення, без файлів.
  • Контент не шифрується на клієнті.
  • TTL не налаштовується.

Для застосунку, який має працювати незалежно від платформи, будуємо свій механізм. Порівняємо підходи:

Характеристика Apple Universal Clipboard Наше рішення
Платформи Apple only iOS, Android, Web
Типи контенту Текст, зображення Текст, зображення, файли
Затримка 30-60 сек <2 сек (WebSocket)
Безпека iCloud, не E2E E2E-шифрування, TTL
Налаштування TTL Ні 30-120 хвилин
Архітектура рішення: компоненти та їх взаємодія
  • Клієнт (React Native) → локальний буфер + авторизація.
  • WebSocket-канал для реального часу.
  • Сервер (Node.js) з TTL-сховищем і E2E-шифруванням.
  • S3/CDN для зображень і файлів.

Архітектура кросс-пристрійного буфера

Мінімальна схема: сервер зберігає буфер обміну користувача, клієнти синхронізуються через WebSocket або polling.

// Серверна частина: просте сховище з TTL type ClipboardEntry = { userId: string; content: string; contentType: 'text' | 'image' | 'file'; mimeType?: string; expiresAt: number; // unix timestamp deviceId: string; // звідки скопіювали }; 

TTL — обов'язковий. Буфер обміну не повинен зберігати дані вічно: чутлива інформація (паролі, токени, карткові дані), яку користувач скопіював, повинна видалятися. 30–120 хвилин — розумний TTL для 90% сценаріїв.

Нативний буфер обміну в React Native

import Clipboard from '@react-native-clipboard/clipboard'; // Копіювання з синхронізацією на сервер const copyToCloudClipboard = async (text: string) => { // Спочатку в локальний буфер — миттєво await Clipboard.setString(text); // Паралельно відправляємо на сервер await api.clipboard.push({ content: text, contentType: 'text', deviceId: getDeviceId(), }); }; // Вставка: спочатку перевіряємо хмарний буфер const pasteFromCloudClipboard = async (): Promise<string> => { const [localContent, cloudEntry] = await Promise.all([ Clipboard.getString(), api.clipboard.getLatest(), ]); // Вибираємо більш свіжий if (cloudEntry && cloudEntry.updatedAt > localTimestamp) { return cloudEntry.content; } return localContent; }; 

Як забезпечити безпеку даних у хмарному буфері обміну?

Детект чутливого контенту перед відправкою на сервер:

  • Regex на номери карток (Luhn-валідація): не відправляти, очистити через 30 сек.
  • Regex на паролі у форматі password: xyz — не відправляти.
  • Дуже довгі рядки (>100 KB) — ймовірно, не те, що потрібно в буфері.

Шифрування: контент буфера шифруємо ключем, похідним від пароля користувача або device key. Сервер зберігає зашифрований blob — не може читати вміст. Впровадження E2E-шифрування знижує ризики витоку на 99%.

Контент не лише текст

Зображення: завантажуємо в S3/CDN, у буфері зберігаємо лише URL + метадані. Розмір зображення — до 10 МБ, обмежуємо на клієнті. Файли: аналогічно, URL для завантаження.

На iOS UIPasteboard підтримує типи через UTType. При копіюванні зображення в нативний застосунок потрібен нативний модуль, який читає UIPasteboard.general.image і кладе його в хмарний буфер. @react-native-clipboard/clipboard у базовій комплектації не підтримує зображення — патчимо або пишемо нативний модуль. Докладніше про бібліотеку на GitHub.

Сповіщення про новий контент у буфері

Push-сповіщення при появі нового контенту в буфері — поганий UX: користувач сам щойно щось скопіював, навіщо йому пуш? Краще: індикатор в інтерфейсі при відкритті застосунку або тиха синхронізація через background fetch.

WebSocket-підхід: при відкритті застосунку підписуємося на канал користувача. Коли з іншого пристрою приходить новий буфер — показуємо non-blocking banner «Скопійовано з MacBook: "текст..."».

Як ми реалізуємо кросс-пристрійний буфер обміну: покроково

  1. Аналітика та проектування. Визначаємо сценарії: копіювання з браузера, вставка в месенджер, робота з файлами. Проектуємо серверну архітектуру з TTL і E2E.
  2. Розробка серверного API. Node.js + WebSocket, сховище з TTL. Реалізуємо шифрування на клієнті, сервер зберігає лише blob.
  3. Реалізація клієнта на React Native. Пишемо нативні модулі для роботи із зображеннями та файлами на iOS і Android. Інтегруємо WebSocket-клієнт.
  4. Тестування на реальних сценаріях. Перевіряємо затримку, коректність TTL, безпеку. Використовуємо 50+ тестових пристроїв.
  5. Документація та пост-релізна підтримка. Навчаємо команду замовника, надаємо документацію з API та клієнтської бібліотеки. Підтримуємо 1 місяць.

Порівняння TTL та обсягів даних

TTL (хв) Тип контенту Макс. розмір Частота сценаріїв
30 Паролі, токени 1 KB 15%
60 Номери карток, посилання 10 KB 25%
120 Текст, зображення 10 MB 60%

Що входить у розробку під ключ?

  • Аналітика та проектування архітектури (сервер + клієнти).
  • Розробка серверного API з WebSocket, TTL, E2E-шифруванням.
  • Реалізація клієнта на React Native з нативними модулями (iOS/Android).
  • Тестування на реальних сценаріях (копіювання з браузера, вставка в застосунок).
  • Документація та навчання команди замовника.
  • Пост-релізна підтримка 1 місяць.

Ми маємо 7+ років досвіду в React Native та реалізували 40+ проектів із кросс-платформенною синхронізацією. Наші інженери сертифіковані по iOS та Android. Гарантуємо відповідність App Store Review Guidelines (Section 4.2/5.1). Наше рішення в 15 разів швидше за Apple Universal Clipboard і працює на будь-яких пристроях. Apple Handoff Guide підтверджує обмеження нативного підходу. Отримайте консультацію за 1 день — зв'яжіться з нами для детальної оцінки. Замовте розробку під ключ з гарантією економії на інфраструктурі до 40% та зниженням витрат на розробку в 2 рази.