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

Реалізація Handoff між iPhone та Mac Уявіть: користувач починає редагувати документ на iPhone, а на Mac продовжує з того ж місця. Якщо Handoff налаштовано неправильно, користувач витрачає час на пошук файлу та контексту. Наш досвід показує, що коректна реалізація Handoff підвищує залученість на 2

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація Handoff між iPhone та Mac: покрокове керівництво
Середній
~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

Реалізація 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 вже сьогодні.