Реализация Handoff между iPhone и Mac: пошаговое руководство

Реализация Handoff между iPhone и Mac Представьте: пользователь начинает редактировать документ на iPhone, а на Mac продолжает с того же места. Если Handoff настроен неправильно, пользователь теряет время на поиск файла и контекста. Наш опыт показывает, что корректная реализация Handoff повышает

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, 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 уже сегодня.