В июльской статье я писал, как мы распространяем iOS-приложение мимо App Store через AltStore PAL. Тогда главный вопрос был «а что там с проверкой?». За два месяца у нас накопилась статистика: два раунда App Review и шесть раундов нотаризации, из них два реджекта нотаризации. Теперь есть что рассказать конкретно.
Приложение — Rate Me: люди загружают свои фото и получают оценки от 1 до 10 от других людей. Важно для дальнейшего: именно эта механика и оказалась неприемлемой для App Store.
Коротко: чем нотаризация отличается от App Review
Если вы распространяете приложение через альтернативный маркетплейс (ЕС, Япония, Бразилия), сборка идёт не в App Review, а в нотаризацию. Apple описывает её как базовую проверку, сфокусированную на безопасности, приватности и целостности платформы: автоматика плюс человек проверяют, что приложение не содержит известного вредоносного кода, работает как заявлено и не подсовывает пользователю явное мошенничество (Notarization for iOS apps).
Из этого описания обычно делают вывод «нотаризация — это антивирус, гайдлайны там не применяются». По нашему опыту вывод верен ровно наполовину.
Хронология: восемь раундов проверки
|
Версия |
Тип |
Отправлено |
Вердикт |
Сколько ждали |
|---|---|---|---|---|
|
1.0 (3) |
App Review |
09.07 |
Реджект: 2.1 (ATT) |
|
|
1.0 (3) |
App Review |
10.07 |
Реджект: 1.2 + 5.1.1(v) |
|
|
1.0.3 (5) |
Нотаризация |
11.07 16:42 |
Одобрено 18.07 17:46 |
7 дней |
|
1.0.4 (6) |
Нотаризация |
08.08 11:29 |
Одобрено 09.08 20:32 |
33 часа |
|
1.0.5 (7) |
Нотаризация |
08.09 14:23 |
Реджект 08.09 22:45: 2.1 (ATT) |
8 часов |
|
1.0.5 (8) |
Нотаризация |
08.09 23:04 |
Реджект 10.09 17:04: 4.8 (Login Services) |
42 часа |
|
1.0.5 (8) |
Нотаризация |
10.09 18:38 |
Одобрено 11.09 19:06 |
24 часа |
|
1.1.0 (9) |
Нотаризация |
23.09 11:16 |
Одобрено 23.09 15:02 |
3 часа 46 минут |
Все времена — из App Store Connect, раздел «История» (там же лежат ID пакетов для альтернативного распространения).
Урок 1: контент действительно не смотрят
Реджект, который закрыл нам App Store, — Guideline 1.2: оценивание людей по внешности, objectification. Это не лечится копирайтом: суть приложения такая и есть. Вторым пунктом там же шёл 5.1.1(v) — отсутствие полного удаления аккаунта внутри приложения.
Дальше самое интересное: та же самая механика, без единой правки по сути, прошла нотаризацию — четыре раза. Ни в одном из реджектов нотаризации ни 1.2, ни что-либо про содержание не упоминалось. Для приложений, которым App Store закрыт по контентным причинам, это и есть главный практический вывод: альтернативная дистрибуция — не лазейка, а именно другой тип проверки.
Урок 2: формальные гайдлайны применяются
И вот тут ломается ожидание «нотаризация = антивирус».
Реджект 08.09, Guideline 2.1: «app uses the AppTrackingTransparency framework, but we are unable to locate the ATT permission request». Ревью шло на iPad Pro 11″, iPadOS 26.6.1 — то есть человек реально открыл приложение и искал промпт.
История бага показательна. ATT мы вырезали ещё в июле: ATTrackingManager в коде нет, реклама показывается неперсонализированной. Но в сборку вернулся ключ NSUserTrackingUsageDescription — его перенесли из старой рабочей копии на другой машине, не сверившись с историей. Для Apple это заявка на трекинг: фреймворк декларирован, промпта нет — реджект.
Правило простое: не добавляйте NSUserTrackingUsageDescription, пока в коде нет реального вызова ATTrackingManager.requestTrackingAuthorization. Ровно за это же мы поймали реджект и в App Review двумя месяцами раньше — с зеркальной причиной: ключ был, обёртка была, а вызова не было ни в одном экране.
Урок 3: ревьюер ходит по вашим веб-страницам
Реджект 10.09 по той же отправке, Guideline 4.8 Login Services. Ревьюер (уже другое устройство, iPad Air M3) открыл нашу страницу входа auth.rateme.lv, увидел там кнопки Google и Facebook и потребовал равноценную альтернативу — логин-сервис, который не собирает данные без согласия.
Обратите внимание: кнопки живут не в приложении, а на веб-странице, которая открывается из приложения. Для проверки это всё равно часть продукта.
Чиним — и тут самое полезное наблюдение: бинарник мы не пересобирали. Добавили Sign in with Apple на стороне identity-сервиса (App ID + capability, Services ID, ключ, return URL), проверили, что на странице входа теперь три провайдера, и переотправили ту же сборку (8) с ответом ревьюеру. Одобрено через сутки с небольшим. Если реджект касается серверной части, не нужно гонять новый архив через выгрузку и ожидание — достаточно исправить и ответить.
Сроки: первый раз неделя, дальше часы
Самое приятное наблюдение за два месяца — очередь нотаризации у нас ускорилась на порядок:
-
первая версия, 1.0.3: неделя от отправки до одобрения (проверку начали через три часа, а вердикт пришёл через семь дней);
-
1.0.4: 33 часа;
-
раунды по 1.0.5: от 8 до 42 часов;
-
последняя версия, 1.1.0: 3 часа 46 минут, из них сама проверка — минута.
Я не знаю, это разгон очереди у Apple или репутация конкретного аккаунта, но планировать релиз уже можно на день, а не на неделю. При этом два реджекта подряд по 1.0.5 всё равно съели трое суток — реджект дороже самой проверки.
Что стоит проверить перед первой отправкой на нотаризацию
Наш чек-лист, собранный по граблям:
-
Info.plist: нет ключей под фреймворки, которых нет в коде. ATT — самый частый случай, но правило общее. -
Usage-строки — на английском. Ревью идёт на англоязычной системе, русский текст в промпте читается как «непонятно что запрашивает».
-
Откройте глазами все веб-страницы, которые приложение показывает: вход, восстановление пароля, юридические страницы. Их смотрят.
-
Если на странице входа есть соцлогины — нужен равноценный вариант (Sign in with Apple или другой, отвечающий 4.8).
-
Заполните Notes для ревьюера. В обоих наших случаях объяснение в Notes сокращало следующий раунд.
-
Держите наготове ответ через «Ответить ревьюеру»: часть реджектов закрывается серверной правкой без новой сборки.
Оговорка
Это опыт одного приложения и восьми раундов проверки, а не выборка. Нотаризация могла поймать нас по 2.1 и 4.8 случайно, а у вас найти что-то другое. Но направление, кажется, устойчивое: содержание не проверяют, техническую честность заявок — проверяют, и проверяют человеком на реальном устройстве.
Rate Me живёт на rateme.lv, про саму схему дистрибуции — в июльской статье. Отвечу на вопросы в комментариях.
ссылка на оригинал статьи https://habr.com/ru/articles/1086840/