Перенос приложения между Apple Developer аккаунтами нужен в разных ситуациях: приложение продают другому владельцу, проект передают другой компании, меняют структуру владения или просто переносят продукт на другой Developer аккаунт. Для этого Apple предоставляет официальный механизм App Transfer в App Store Connect.
Сам процесс состоит из двух частей. Сначала Account Holder текущего аккаунта подготавливает приложение и отправляет запрос на трансфер. Затем Account Holder принимающего аккаунта проверяет данные, заполняет новую информацию и подтверждает получение приложения.
При корректном переносе приложение не нужно заново публиковать как новый продукт. Оно сохраняет свой Bundle ID, остаётся доступным в App Store, сохраняет рейтинг и отзывы, а пользователи продолжают получать обновления. Но перед запуском трансфера приложение и оба Developer аккаунта должны соответствовать требованиям Apple.
Посмотреть пошаговый разбор: youtu.be/ZQF2IhX1X_s
Что проверить перед App Transfer
Главная ошибка при переносе — сразу нажимать Transfer App, не подготовив аккаунты и само приложение. App Store Connect сначала проверяет набор критериев, и если хотя бы один обязательный пункт не выполнен, отправить трансфер не получится.
Перед началом убедитесь, что аккаунты отправителя и получателя не находятся в процессе изменения или другой незавершённой операции. На обоих аккаунтах должны быть приняты актуальные версии соглашений Apple, включая необходимые Paid Apps и Free Apps agreements.
У приложения должна быть как минимум одна версия, которая уже была выпущена в App Store. Приложение также не должно находиться в несовместимом с трансфером состоянии, например в процессе App Review или ожидания релиза, и не должно быть доступно по pre-order.
Отдельные требования зависят от функций приложения. Например, Apple проверяет In-App Purchases, подписки, iCloud, Sign in with Apple, Game Center, Xcode Cloud, Wallet, App Groups и другие возможности. Поэтому универсального короткого чек-листа для всех проектов нет: итоговый список критериев лучше проверять непосредственно на странице Transfer App.
Шаг 1. Открываем приложение на аккаунте отправителя
Заходим в App Store Connect под аккаунтом, с которого приложение будет передаваться, и открываем раздел Apps. Выбираем нужное приложение.
Перед дальнейшими действиями полезно убедиться, что выбрано именно то приложение и его опубликованная версия находится в корректном состоянии.
Шаг 2. Проверяем TestFlight
Переходим во вкладку TestFlight и проверяем состояние бета-тестирования.
Для приложений, использующих TestFlight, Apple рекомендует выключить beta testing до начала трансфера: удалить билды и тестеров, а также очистить поля Test Information для локализаций. В интерфейсе Transfer App соответствующее требование также может появляться отдельным пунктом в списке критериев.
Если TestFlight уже не используется и ничего не препятствует переносу, можно переходить дальше.
Шаг 3. Переходим в App Information
Возвращаемся во вкладку Distribution и в левом меню открываем App Information.
Именно здесь находится управление трансфером приложения. В этом разделе также удобно заранее проверить часть информации, которая может понадобиться принимающей стороне после отправки запроса.
Прокручиваем страницу до блока Additional Information и нажимаем Transfer App.
Шаг 4. Проверяем критерии Apple
После нажатия Transfer App откроется страница с требованиями к переносу. App Store Connect автоматически проверяет приложение и показывает, какие критерии выполнены.
Не стоит воспринимать этот экран как формальность. Если какой-либо пункт не отмечен как выполненный, сначала нужно разобраться с причиной. App Store Connect обычно указывает, что именно препятствует переносу.
Среди проверок могут быть:
- актуальные соглашения Apple;
- наличие опубликованной версии приложения;
- допустимое состояние текущих submissions;
- состояние In-App Purchases и подписок;
- TestFlight;
- Xcode Cloud;
- Sign in with Apple;
- iCloud и CloudKit;
- отсутствие неоплаченных счетов Apple;
- дополнительные региональные или технические требования.
Для некоторых возможностей подготовка требуется не только в App Store Connect, но и на уровне инфраструктуры приложения. Например, для auto-renewable subscriptions перед трансфером необходимо подготовить app-specific shared secret и передать его получателю. Для приложений с Sign in with Apple, push notifications, keychain sharing или iCloud также нужно учитывать отдельные действия до и после переноса.
Если все критерии выполнены, нажимаем Continue.
Шаг 5. Вводим данные получателя
На следующем экране Apple попросит указать данные принимающего Developer аккаунта.
Нужны два значения:
- Apple Account пользователя с ролью Account Holder на аккаунте получателя;
- Team ID принимающего Apple Developer аккаунта.
В первое поле вводим Apple Account Account Holder. Важно использовать именно данные владельца аккаунта, а не обычного пользователя App Store Connect с ролью Developer, App Manager или Admin.
Во второе поле вводим Team ID.
Team ID — уникальный идентификатор членства в Apple Developer Program. Получатель может посмотреть его после входа на developer.apple.com/account в разделе Membership details.
Перед продолжением обязательно ещё раз проверяем Apple Account и Team ID. Ошибка на этом этапе приведёт как минимум к необходимости отменять запрос и запускать перенос заново.
Шаг 6. Подтверждаем условия трансфера
После проверки данных получателя Apple показывает Application Transfer Agreement — соглашение, регулирующее передачу приложения между Developer аккаунтами.
В нижней части страницы ставим галочку о согласии с условиями и нажимаем Request Transfer.
После отправки запроса приложение получает статус, связанный с ожидающим трансфером. Пока получатель не примет приложение, оно остаётся на аккаунте отправителя, но часть параметров становится недоступна для редактирования.
На странице приложения появляется уведомление о том, что запрос уже отправлен.
На этом действия отправителя в App Store Connect временно заканчиваются.
Шаг 7. Получатель открывает App Transfer
Теперь переходим на принимающий Apple Developer аккаунт.
Account Holder получателя входит в App Store Connect и открывает раздел Business. В блоке App Transfers появится приложение со статусом Waiting for Recipient.
Нажимаем Review, чтобы открыть запрос.
Apple даёт получателю до 60 дней на принятие трансфера. Если запрос не будет принят в этот период, трансфер истечёт.
Шаг 8. Заполняем информацию со стороны получателя
Принимающий аккаунт должен указать новую информацию для приложения. В зависимости от текущей конфигурации App Store Connect может запросить:
- Support URL;
- Marketing URL, если он использовался у приложения ранее;
- Privacy Policy URL, если он был указан ранее;
- App Review Contact Information;
- App Store contact information;
- настройки User Access;
- решение по существующим App Privacy responses.
Часть ссылок можно заранее взять с аккаунта отправителя.
Privacy Policy URL находится в разделе App Privacy.
Support URL и Marketing URL можно посмотреть в данных последней опубликованной версии приложения.
Лучше сохранить эти данные ещё до отправки трансфера. Apple рекомендует отправителю сделать резервную копию информации о приложении, поскольку после завершения переноса приложение будет удалено из его App Store Connect.
Шаг 9. Проверяем App Privacy и принимаем приложение
На стороне получателя важно внимательно проверить раздел App Privacy.
Если предыдущий владелец уже указал, какие данные приложение собирает и как они используются, получатель может сохранить существующие ответы либо очистить их и заполнить заново. Если ответы будут удалены или их не было, заполнить App Privacy потребуется до отправки следующей версии приложения.
После заполнения остальных полей прокручиваем страницу до Terms and Conditions, принимаем условия и подтверждаем получение приложения.
После подтверждения начинается обработка App Transfer. В сценарии простого приложения перенос нередко завершается достаточно быстро, но Apple официально предупреждает, что процесс может занять до двух рабочих дней. На это время приложение может иметь статус Processing App Transfer.
После завершения оба Account Holder получают уведомление, а приложение исчезает из App Store Connect отправителя и появляется у нового владельца.
Что сохраняется после переноса приложения
App Transfer не создаёт новое приложение с нуля. При переносе сохраняются ключевые элементы существующей карточки:
- приложение остаётся доступным для скачивания в App Store;
- сохраняются рейтинг и отзывы;
- пользователи продолжают получать новые версии;
- сохраняется Bundle ID;
- App ID передаётся на Developer аккаунт получателя.
При этом исходный код проекта автоматически через App Store Connect не передаётся. Его, репозиторий, серверную инфраструктуру, ключи и другие рабочие материалы отправитель и получатель должны передать отдельно.
После трансфера получателю также нужно создать новые provisioning profiles, связанные с переданным App ID и его сертификатами.
Что особенно важно проверить у сложных приложений
Если приложение использует только базовые возможности iOS, перенос обычно проходит сравнительно просто. Но для проектов с дополнительными Apple-сервисами подготовка может быть заметно сложнее.
Особого внимания требуют:
Auto-renewable subscriptions. Необходимо корректно передать app-specific shared secret и подготовить серверную часть.
Sign in with Apple. Требуется миграция идентификаторов пользователей и, в зависимости от конфигурации, дополнительные действия с Service ID.
Push Notifications. После переноса нужно убедиться, что принимающая команда сможет продолжать подписывать и отправлять push-уведомления.
Keychain Sharing. После обновления приложения на новом аккаунте может потребоваться изменение keychain group, а пользователям в отдельных конфигурациях понадобится повторная авторизация.
iCloud и CloudKit. Нужно заранее понимать, какие контейнеры используются приложением и как трансфер повлияет на связанные проекты.
Xcode Cloud. Перед переносом связанные данные Xcode Cloud необходимо удалить.
Поэтому App Transfer лучше рассматривать не только как действие в интерфейсе App Store Connect, но и как техническую миграцию проекта между двумя командами.
Что происходит с продажами и аналитикой
После завершения трансфера финансовые данные разделяются по моменту передачи приложения.
Отправитель сохраняет доступ к информации о продажах и выплатах, которые произошли до трансфера, но не видит новые финансовые данные после передачи. Получатель, в свою очередь, получает данные по продажам и выплатам, относящимся к периоду после завершения трансфера.
Также отправитель теряет доступ к App Analytics приложения после передачи. Поэтому перед трансфером полезно заранее сохранить нужную историю, отчёты, метаданные и другую информацию, которая может понадобиться позже.
Вывод
Перенести опубликованное приложение на другой Apple Developer аккаунт можно через официальный App Transfer в App Store Connect. Главное — не начинать перенос без предварительной подготовки.
Сначала проверьте Agreements на обоих аккаунтах, состояние приложения и критерии Transfer App. Затем подготовьте Apple Account Account Holder и Team ID получателя, сохраните метаданные и ссылки приложения и только после этого отправляйте запрос.
Со стороны получателя необходимо открыть трансфер в Business, заполнить новые контактные данные и URL, проверить App Privacy, принять соглашение и подтвердить перенос.
Для простых приложений этого достаточно. Если же проект использует подписки, Sign in with Apple, iCloud, push notifications, Wallet, Game Center, Xcode Cloud или другие сервисы, заранее изучите требования именно для этих возможностей. Тогда App Transfer пройдёт без неожиданных проблем, а приложение продолжит работать для пользователей уже на новом Apple Developer аккаунте.
Individual $350 · Company $650 · Продление $200. Напишите нам — подберём подходящий вариант.
Написать в Telegram