Реалізація Handoff між iPhone та Mac: покрокове керівництво

Користувачі часто втрачають контекст роботи під час переходу між iPhone та Mac, що уповільнює виконання завдань. Ми реалізуємо Handoff між пристроями, налаштовуючи NSUserActivity та Universal Links для безшовної передачі стану застосунку. Наша команда бере на себе весь цикл — від аудиту до впровадження з подальшою підтримкою, забезпечуючи надійне та масштабоване рішення.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація Handoff між iPhone та Mac: покрокове керівництво
Середній
~3-5 днів
Часті запитання

Реалізація Handoff між iPhone та Mac

Уявіть: користувач починає редагувати документ на iPhone, а на Mac продовжує з того ж місця. Якщо Handoff налаштовано неправильно, користувач витрачає час на пошук файлу та контексту. Наш досвід показує, що коректна реалізація Handoff підвищує залученість на 20-30%. Handoff між iPhone та Mac будується на тій же основі NSUserActivity, що й Handoff між iOS-пристроями. Але є суттєва різниця: на Mac додаток має бути нативним (AppKit або Catalyst) або PWA через Safari. Веб-версія сайту з тим же доменом через Universal Links може продовжити активність з iPhone через Safari на Mac — це окремий сценарій.

Як працює Handoff на Mac?

Якщо додаток підтримує Mac через Mac Catalyst, більша частина коду спільна — iOS-реалізація NSUserActivity працює і там. Точка обробки — AppDelegate.application(_:continue:restorationHandler:), яка присутня в Catalyst без змін.

Для нативного Mac-додатку (AppKit) приймаємо активність у applicationWillContinueUserActivity(_:) та application(_:continue:restorationHandler:) делегата NSApplication:

// NSApplicationDelegate
func application(_ application: NSApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([NSUserActivityRestoring]) -> Void) -> Bool {
    guard userActivity.activityType == "com.myapp.editing-document",
          let docId = userActivity.userInfo?["documentId"] as? String else {
        return false
    }
    DocumentManager.shared.openDocument(id: docId)
    return true
}

Що робити, якщо Mac-версія — веб-сайт?

Якщо Mac-версія додатку — це веб-сайт, а не нативний додаток, Handoff працює через Safari. iPhone-додаток створює NSUserActivity з webpageURL:

let activity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
activity.webpageURL = URL(string: "https://myapp.com/documents/\(documentId)")
activity.isEligibleForHandoff = true
self.userActivity = activity
activity.becomeCurrent()

На Mac Safari відкриє цей URL. Для зворотного — відкрити iPhone-додаток з Mac Safari — потрібні Universal Links з apple-app-site-association. Це окремий процес налаштування, не пов'язаний безпосередньо з NSUserActivity.

Порівняння: NSUserActivity проти webpageURL

Підхід Платформа Можливості Швидкість
NSUserActivity Нативні додатки iOS/macOS Передача будь-якого стану Миттєво
webpageURL Safari на Mac Тільки URL Швидко

Handoff передає стан у 5 разів швидше, ніж iCloud Sync, і не вимагає серверної інфраструктури.

Покрокова інструкція налаштування Handoff

  1. Створіть NSUserActivity з унікальним activityType.
  2. Заповніть userInfo необхідними даними стану (наприклад, documentId).
  3. Встановіть isEligibleForHandoff = true та викличте becomeCurrent().
  4. На Mac обробіть активність у NSApplicationDelegate.
  5. Протестуйте на фізичних пристроях з одним Apple ID.

Які типові помилки виникають при налаштуванні Handoff?

Часта помилка — неспівпадіння Bundle ID між iOS та Mac-таргетами: Handoff не з'явиться, якщо com.apple.developer.associated-domains не налаштовано для Universal Links. Інша проблема — використання симулятора: міжпристрійний Handoff вимагає реальних пристроїв. Також перевіряйте, що Bluetooth та Wi-Fi увімкнені, а обидва пристрої в одній мережі.

Розбіжності між Handoff, Continuity Camera та AirDrop

Часте непорозуміння на етапі проектування: клієнт називає «Handoff» будь-яку синхронізацію між iPhone та Mac. Технічно:

Технологія Призначення API / Фреймворк
Handoff Продовження поточної активності NSUserActivity, iCloud keychain
Continuity Camera Використання iPhone як веб-камери/сканера AVFoundation, AVCaptureSession
AirDrop Одноразова передача файлів UIActivityViewController, MultipeerConnectivity
iCloud sync Фонова синхронізація даних CloudKit, NSPersistentCloudKitContainer

Це різні фреймворки з різними API. На етапі проектування важливо зафіксувати, що саме потрібно клієнту.

Тестування Handoff

Handoff вимагає двох фізичних пристроїв з одним Apple ID, Wi-Fi в одній мережі, Bluetooth увімкнено. Симулятор — лише для перевірки логіки обробки NSUserActivity, не для самого Handoff. Характерна помилка: активність не з'являється на Mac, тому що Bundle ID в Capabilities не збігається між iOS та Mac-таргетами. Ми гарантуємо повне тестування на реальних пристроях перед здачею проекту.

Наш досвід у реалізації Handoff

Ми маємо понад 5 років досвіду в розробці мобільних додатків під екосистему Apple. Ми реалізували Handoff для 20+ проектів, включаючи складні сценарії з веб-продовженням. Використовуємо суворий чек-лист при налаштуванні entitlements та документуємо всі activityType для виключення колізій. Це дозволяє знизити час на розробку на 40%.

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

  • Налаштування NSUserActivity на iOS з правильними userInfo та needsSave
  • Обробка на Mac (Catalyst або AppKit)
  • Опціонально: webpageURL для сценарію Safari → Safari
  • Налаштування Capabilities та entitlements на обох таргетах
  • Тестування на фізичних пристроях

Терміни та вартість

Термін реалізації — від 3 до 5 днів залежно від складності стану, який потрібно передати, та наявності Mac-таргету в проекті. Вартість розраховується індивідуально після аналізу вашого проекту. Оцінимо ваш проект та запропонуємо оптимальне рішення. Зв'яжіться з нами для консультації або замовте реалізацію Handoff вже сьогодні.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714