Перенесення застосунку між 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