App Review забанил нашу механику. Нотаризация пропустила её — но нашла другое

—

от автора

В июльской статье я писал, как мы распространяем 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 всё равно съели трое суток — реджект дороже самой проверки.

Что стоит проверить перед первой отправкой на нотаризацию

Наш чек-лист, собранный по граблям:

  1. Info.plist: нет ключей под фреймворки, которых нет в коде. ATT — самый частый случай, но правило общее.

  2. Usage-строки — на английском. Ревью идёт на англоязычной системе, русский текст в промпте читается как «непонятно что запрашивает».

  3. Откройте глазами все веб-страницы, которые приложение показывает: вход, восстановление пароля, юридические страницы. Их смотрят.

  4. Если на странице входа есть соцлогины — нужен равноценный вариант (Sign in with Apple или другой, отвечающий 4.8).

  5. Заполните Notes для ревьюера. В обоих наших случаях объяснение в Notes сокращало следующий раунд.

  6. Держите наготове ответ через «Ответить ревьюеру»: часть реджектов закрывается серверной правкой без новой сборки.

Оговорка

Это опыт одного приложения и восьми раундов проверки, а не выборка. Нотаризация могла поймать нас по 2.1 и 4.8 случайно, а у вас найти что-то другое. Но направление, кажется, устойчивое: содержание не проверяют, техническую честность заявок — проверяют, и проверяют человеком на реальном устройстве.

Rate Me живёт на rateme.lv, про саму схему дистрибуции — в июльской статье. Отвечу на вопросы в комментариях.

ссылка на оригинал статьи https://habr.com/ru/articles/1086840/