Какие сложности могут возникнуть при публикации в App Store и Google Play?
Публикация мобильного приложения в App Store (для iOS) и Google Play (для Android) является завершающим этапом разработки, но нередко именно здесь возникают сложности, связанные как с техническими требованиями платформ, так и с правилами модерации. Процесс включает подготовку артефактов (иконок, скриншотов, метаданных), настройку конфигураций, загрузку билда и прохождение модерации. Ниже подробно описаны возможные сложности, с которыми сталкиваются разработчики при публикации в оба стора.
Общие сложности для обеих платформ
1. Неверные подписи приложения
-
Требуется правильно сгенерированный сертификат (Android Keystore, iOS Distribution Certificate).
-
Приложения с неподписанными или неправильно подписанными файлами (.apk, .aab, .ipa) не принимаются.
-
На iOS нужен Provisioning Profile, связанный с правильным App ID.
2. Ошибки сборки
-
Использование неподдерживаемых архитектур (например, x86 в релизах).
-
Использование DEBUG-билда вместо RELEASE.
-
Некорректная конфигурация Entitlements, Bundle Identifier, Package name.
3. Неправильные или отсутствующие разрешения
-
Указание разрешений в AndroidManifest.xml и Info.plist обязательно.
-
Например, отсутствие описания NSCameraUsageDescription приводит к отклонению в App Store.
-
Запрос лишних или необоснованных разрешений вызывает отказ.
4. Ошибки в иконках и скриншотах
-
Неправильные размеры или формат (например, PNG вместо JPG).
-
Несоответствие требованиям плотности пикселей (dpi).
-
Скриншоты не соответствуют описанному функционалу.
5. Нарушение политики безопасности
-
Использование небезопасных API.
-
Наличие ссылок на внешние ресурсы без шифрования (HTTP вместо HTTPS).
-
Работа с пользовательскими данными без конфиденциальности или без запроса согласия.
Сложности при публикации в Google Play
1. Формат публикации: AAB вместо APK
-
С августа 2021 года Google требует загрузку .aab (Android App Bundle), а не .apk.
-
Xamarin-проекты должны быть настроены соответствующим образом.
2. Политика конфиденциальности
-
Для всех приложений требуется ссылка на политику конфиденциальности.
-
Отсутствие этого документа, даже если приложение не собирает данные, может привести к отказу.
3. Контент, нарушающий правила Google
-
Алкоголь, насилие, дискриминация, обман — все эти темы могут быть причиной блокировки.
-
Даже случайное использование слов может вызвать автоматический отказ.
4. Ошибка проверки Android App Bundle
-
Ошибки в коде ProGuard или Shrinker, неработающие build-скрипты.
-
Несовместимость с Android App Bundle-архитектурой.
5. Обязательное соответствие целевому API уровню
-
Каждый год Google требует обновления targetSdkVersion.
-
Например, в 2025 году минимальный targetSdkVersion может быть 33 или выше.
-
Слишком старые API вызывают автоматический отказ при загрузке.
6. Учет ограничений Scoped Storage
-
Начиная с Android 10+ необходимо использовать MediaStore и Storage Access Framework.
-
Прямой доступ к ExternalStorage блокируется.
7. Длительная модерация и необоснованные отказы
-
Ручная модерация может длиться от 3 часов до 7 дней.
-
Отказы могут быть без подробного объяснения — нужно подавать апелляции через поддержку.
8. Ошибки Google Play Console
-
Неверно заполненное поле категорий, контента, рейтинга контента (IARC).
-
Некорректные данные о монетизации и подписках.
Сложности при публикации в App Store (iOS)
1. Сложности с сертификатами и provisioning profile
-
Разработчики часто путают Development и Distribution сертификаты.
-
App ID, Bundle Identifier, Team ID должны строго соответствовать.
2. Отклонение при review за несоответствие Human Interface Guidelines
-
Apple строго следит за дизайном интерфейса, UX.
-
Низкое качество UI, а также несоответствие стандартам дизайна может привести к отклонению.
3. Использование частных API
- Любая ссылка на закрытые API фреймворка (включая через библиотеки) — причина отказа.
4. Отказ из-за сбоя приложения при запуске
-
App Review команда тестирует приложение на реальных устройствах.
-
Отсутствие прав, падения при старте, баги приводят к моментальному отклонению.
5. Отказ из-за нарушения StoreKit или покупки
-
Если в приложении есть доступ к платному контенту, должен быть использован In-App Purchase.
-
Использование сторонних платёжных систем внутри приложения строго запрещено (в большинстве случаев).
6. Запрос ненужных разрешений
- Если приложение не использует геолокацию, не следует указывать NSLocationWhenInUseUsageDescription — это вызовет подозрения.
7. Ограничения из-за сборов App Tracking Transparency
- Если используется сторонняя аналитика (Facebook, Google Analytics), необходимо запрашивать согласие пользователя через AppTrackingTransparency.
8. Задержки при публикации
-
Время ревью может составлять 2–10 дней, особенно при первой публикации.
-
Отказы требуют внесения исправлений и повторной загрузки билда.
9. Указание верной информации в App Store Connect
- Некорректно указанный возрастной рейтинг, отсутствующий URL политики конфиденциальности, или неполные описания — частая причина отказа.
Проблемы, связанные с Xamarin
1. Размер приложения
- Приложения, собранные на Xamarin, часто весят больше, чем нативные аналоги, что может вызвать претензии со стороны App Store.
2. Поддержка 64-бит
-
Google и Apple требуют обязательной поддержки архитектуры arm64-v8a.
-
Необходимо включать нужные ABI при сборке.
3. Наличие ненужных библиотек
- Использование неиспользуемых NuGet-пакетов увеличивает размер и может вызывать ошибки во время сборки.
4. Ошибки AOT-компиляции (iOS)
- Xamarin.iOS использует Ahead-Of-Time компиляцию, и ошибки AOT могут возникнуть при неверном коде, reflection или использовании dynamic.
Специфические правовые ограничения
-
Для определённых стран (например, Иран, Крым) существуют ограничения на публикацию.
-
Приложения с шифрованием (например, мессенджеры) требуют экспортного разрешения в США для App Store.
Советы для успешной публикации
-
Использовать автоматизацию CI/CD (AppCenter, GitHub Actions) для сборки и подписи.
-
Перед публикацией пройти все этапы в TestFlight (iOS) и Internal Testing (Google Play).
-
Проверить все permissions, descriptions, localizations.
-
Убедиться, что используются последние версии SDK, актуальные библиотеки.
-
Подготовить политику конфиденциальности, техническую поддержку и страницу приложения заранее.
Публикация — не просто загрузка файла, а сложный регламентированный процесс, требующий точного соблюдения всех технических и юридических условий платформ.