Код ошибки 18 play market: Ошибка 18 при загрузке приложений из Google Play

Содержание

коды ошибок от Billing Library и как не облажаться с тестированием / Хабр

Привет, я Влад, core разработчик Adapty SDK для Android. Продолжаю серию статей про то, как внедрять внутренние покупки в приложение Google Play. Остальные посты можно найти по ссылкам:

  1. Android in-app purchases, часть 1: конфигурация и добавление в проект.

  2. Android in-app purchases, часть 2: инициализация и обработка покупок.

  3. Android in-app purchases, часть 3: получение активных покупок и смена подписки.

  4. Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием. — Вы тут.

  5. Android in-app purchases, часть 5: серверная валидация покупок.

Сегодня мы поговорим о кодах ошибок, которые мы можем получить от Billing Library в методе getResponseCode()

Пример того, как мы передавали ошибки в свои колбэки, можно посмотреть в этой статье. С одной ошибкой мы уже знакомы по предыдущим статьям — это USER_CANCELED, когда пользователь закрывает диалог покупки, ничего не купив. Давайте познакомимся с остальными.

Коды ошибок

Начнем с самых простых ошибок – с говорящим названием ERROR (responseCode 6) и чуть более говорящим названием DEVELOPER_ERROR (responseCode 5). Для первого случая гугл пишет в документации «Fatal error during the API action», для второго – «Invalid arguments provided to the API». Например, я смог получить DEVELOPER_ERROR, когда для запроса querySkuDetailsAsync() в билдер в setType() передал пустую строку.

Но не всё так просто. Я пошел дальше и в методе launchBillingFlow() использовал измененный SkuDetails (вытащил json из SkuDetails реального продукта, поменял в нем productId и передал в конструктор новому SkuDetails). По сути это invalid argument, и я ожидал получить DEVELOPER_ERROR, но… получил ERROR.

Отдельного упоминания заслуживает текст, который показывается в диалоге в этом кейсе — сравните английский и русский вариант:

Это, конечно, был искусственный пример. Гораздо ближе к реальности кейс, когда гугл отклонил оплату. Если при тестировании покупок с тестовой карты, о чем мы расскажем в конце статьи, в диалоге покупки выбрать «test card, always declined», вернется также ошибка ERROR, но уже с адекватным текстом.

В третьей статье, где описывалась смена подписки, мы для одного из proration mode увеличили цену годовой подписки почти в 3 раза, но не сказали, какая там должна была быть ошибка, если бы мы этого не сделали. Исправляемся.

Так как там, получается, указан неправильный proration mode, по логике мы должны получить всё ту же DEVELOPER_ERROR. Но нет, мы получаем SERVICE_UNAVAILABLE (responseCode 2). Ее же мы получаем и если указать любое левое число в качестве proration mode (это int, а не enum, нас никто не остановит), и если указать неправильный purchaseToken. Смотрим в документацию про SERVICE_UNAVAILABLE – «Network connection is down». Так, стоп…

При этом еще мы видим интересный диалог.

Что еще любопытно – в кейсе с ERROR при закрытии диалога НЕ через кнопку «ОК» (то есть, теми способами, которые интерпретируются как возврат назад) в onPurchasesUpdated() пришло, собственно, ERROR, а в случае с SERVICE_UNAVAILABLE в аналогичном кейсе приходит USER_CANCELED (но если нажать «ОК» в диалоге, то мы, как и ожидали, получим SERVICE_UNAVAILABLE).

Ну и в случае с отсутствием интернета SERVICE_UNAVAILABLE тоже приходит, тут не соврали.

Вот остальные коды ошибок с небольшими комментариями, так сказать, honorable mentions.

  • BILLING_UNAVAILABLE (responseCode 3). Гугл поясняет, что «Billing API version is not supported for the type requested». Я смог воспроизвести эту ошибку, разлогинившись из Google-аккаунта, а также на Хуавее без Google Play Services. Возможно, она также воспроизведется на старых телефонах, где не обновляли Google Play.

  • SERVICE_DISCONNECTED (responseCode -1). Приложение иногда дисконнектится от сервиса Google Play. Это может произойти, если Play Store вдруг решит обновиться. Поэтому лучше перестраховаться и коннектиться перед каждым вызовом методов Billing Library, как в предыдущих статьях. А еще мы с гуглом советуем добавить какую-нибудь retry policy, если эта ошибка всё же придет в ответе.

  • SERVICE_TIMEOUT (responseCode -3). Название говорит само за себя — мы слишком долго ждали ответ от Google Play.

  • FEATURE NOT SUPPORTED (responseCode -2). В классе BillingClient есть пять констант FeatureType. Их доступность на данном устройстве можно проверять с помощью метода billingClient.isFeatureSupported(BillingClient.FeatureType.НужнаяФича). У меня на телефоне (Xiaomi Mi A2 Lite) FEATURE_NOT_SUPPORTED вернулось только для SUBSCRIPTIONS_ON_VR. При этом для IN_APP_ITEMS_ON_VR, как и для всех остальных фич, вернулось OK.

  • ITEM_NOT_OWNED (responseCode 8). Возникает при попытке законсьюмить покупку, которой у нас нет. Например, повторно после успешного консьюма.

  • ITEM_ALREADY_OWNED (responseCode 7). А тут наоборот – при попытке купить продукт, который у нас уже есть. В таком кейсе просто нужно обновить UI и сделать кнопку покупки некликабельной.

Самая популярная ошибка

Последняя и, наверное, самая популярная ошибка в начале пути внедрения in-app purchases — это ITEM_UNAVAILABLE (responseCode 4). Она говорит о том, что продукт недоступен для покупки, но не говорит, почему. А причины могут быть самые разные: от тестирования на неправильном аккаунте или неправильной сборке до покупки неактивированного продукта.

Вот чек-лист, что нужно сделать, чтобы избежать ее при тестировании:

  1. Отправить в ваш test track сборку с Billing Library. Это обязательное условие — при этом вы можете тестировать и на дебажных сборках с таким же applicationId, но важно, чтобы хотя бы один раз сборка с Billing Library была загружена в Play Console.

  2. Добавить в этот test track гугл-аккаунты тестировщиков, что особенно актуально для internal testing или закрытой альфы/беты. Там же будет ссылка в разделе How testers join your test, по которой тестировщики должны будут принять приглашение.

  3. Покупать можно только активированный продукт. После создания продукта в Play Console есть кнопка activate, более детально процесс создания продукта мы описывали в первой статье.

  4. Удостовериться, что тестирование на устройстве проходит с гугл-аккаунта, который является тестировщиком. Очевидный пункт, но бывает всякое, и это тоже нужно проверить, если вы получили такую ошибку.

  5. applicationId сборки, с которой тестируется покупка, должно полностью совпадать с applicationId из Play Console. Это особенно важно для тех, у кого добавляется суффикс в дебажных сборках.

  6. Добавить email-адреса тестировщиков в раздел Setup → License Testing в левом меню аккаунта (не приложения), чтобы они покупали продукты бесплатно с тестовой карты, а не с реальной. Еще один плюс, что подписки в данном случае будут иметь тестовую длительность. Не связано с этой ошибкой, но тоже полезное знание.

Заключение

Ошибки способны сильно усложнить работу, поэтому всегда важно понимать, как они могут возникнуть. Учитывая, сколько шагов нужно пройти, чтобы получить доступ к продуктам, проще всего словить ITEM_UNAVAILABLE. Поэтому я надеюсь, что мой чек-лист вам поможет.

Про Adapty

Для более простой работы с ошибками советую попробовать Adapty SDK для внедрения внутренних покупок в приложения. Кроме технической части, Adapty даёт много преимуществ:

  • Встроенная аналитика позволяет быстро понять основные метрики приложения.

  • Когортный анализ отвечает на вопрос, как быстро сходится экономика.

  • А/Б тесты увеличивают выручку приложения.

  • Интеграции с внешними системами позволяют отправлять транзакции в сервисы атрибуции и продуктовой аналитики.

  • Промо-кампании уменьшают отток аудитории.

  • Open source SDK позволяет интегрировать подписки в приложение за несколько часов.

  • Серверная валидация и API для работы с другими платформами.

Познакомьтесь подробнее с этими возможностями, чтобы быстрее внедрить подписки в своё приложение и улучшить конверсии.

Требования для публикации приложений в AppStore и Google Play в 2021 — Разработка на vc.ru

Google Play и Apple App Store на сегодняшний день являются двумя крупнейшими платформами для распространения и продвижения приложений.

11 650 просмотров

Не важно: разрабатываете вы приложение самостоятельно, заказываете у профессиональных разработчиков или создаете приложение с помощью no-code инструментов, процесс публикации приложений в магазины происходит для всех одинаково. И важно соблюсти некоторые требование, чтобы ваше приложение успешно прошло модерацию и было опубликовано.

Чтобы избежать каких-либо проблем и возможных отказов в публикации вашего приложения, мы составили список требований, которые необходимо соблюдать для успешной публикации приложения в каждый из сторов.

Google Play Store

Google Play остается основной платформой для распространения приложения для Android, хотя существует множество других альтернативных магазинов.

Чтобы опубликовать и дать возможность пользователям Android загружать и использовать ваше приложение на своих смартфонах и планшетах, вы должны выполнить следующие действия и убедиться, что ваше приложение соответствует требованиям.

Шаг 1: Создайте Google Developer Account

  • Создайте Google Developer Account. Во время регистрации необходимо оплатить взнос в размере 25$, после чего вам будет доступна публикация приложений в магазин.

Шаг 2: Заполните данные о вашем приложении

  • Введите название и описание вашего приложения. Название должно быть уникальным и отражать суть вашего приложения.

Рекомендуемая длина текстов:

  • название приложения: не более 30 символов;
  • короткое описание: не более 80 символов;
  • полное описание не более 4000 символов.

Шаг 3: Загрузите маркетинговые материалы

  • Иконку приложения: 512×512 пикселей, формат 32-битный PNG, с альфа-каналом, допустимый вес: 1024 КБ.
  • Загрузите от 2 до 8 скриншотов вашего приложения: от 320 px до 3840 px при соотношении сторон не более 2:1. Формат JPG или 24-битный PNG без альфа-канала. Для того, чтобы сделать красивые скриншоты прямо с экрана воспользуйтесь приложением Clean Status Bar.
  • Загрузите рекламный баннер: 1024х500 пикселей, JPEG или 24-битный PNG (без альфа-канала). Это необходимо для размещения в Google Play, это первое, что видят пользователи, открывая страницу вашего приложения в сторе.

Важно: Если ваше приложение доступно для планшетов, загрузите дополнительные скриншоты для них.

Совет: площадка Google Play полна различных приложений. Конкуренция серьезная, поскольку в каждой категории есть не менее 100 приложений. Убедитесь, что визуальные элементы и контентная часть привлекают внимание пользователей.

Шаг 4: Политика конфиденциальности и общая информация

  • Установите возрастное ограничение. Для этого войдите в Google Play Developer Console и заполните специальную анкету для каждого из своих приложений. Программы, которым не присвоено ограничение, могут быть заблокированы для отдельных пользователей или стран.
  • Добавьте политику конфиденциальности, чтобы рассказать, как вы обращаетесь с конфиденциальными данными пользователей и устройств.

Шаг 5: Загрузите файл вашего приложения

  • Загрузите файл вашего приложения в формате APK (.
    apk) или ABB (.abb). Это необходимо для запуска вашего приложения на устройстве Android. С августа 2021, Google начал переходить на AВВ, так как этот формат меньше на 15% и его можно загружать быстрее. Скоро ABB станет основным форматом и полностью заменит APK.

Шаг 6: Модерация

  • Теперь просто нужно подождать. Если ваше приложение пройдет модерацию, то оно станет доступным в Google Play Store в течение нескольких часов до нескольких дней.

Причины отказа со стороны Google Play

  • Запрещённый контент. Ваше приложение не будет одобрено, если оно содержит неприемлемый контент, связанный с насилием, домогательствами, незаконными действиями и явным хейтом, которые потенциально могут подвергнуть опасности детей или угрожать обычным пользователям.
  • Украденная интеллектуальная собственность.
    Ваше приложение будет удалено, если вы укажете или скопируете какой-либо бренд, который вам не принадлежит.
  • Проблемы безопасности и конфиденциальности. Google стремится защищать конфиденциальность пользователей. Если будет обнаружено преднамеренное злоупотребление личными данными пользователя — ваше приложение будет строго запрещено.
  • Не соблюдается закон о защите конфиденциальности детей в Интернете (англ. COPPA).
  • Правила выставления счетов не соблюдаются. Включив монетизацию в свое приложение, обязательно укажите все расходы в описании.
  • Реклама не соответствует всем правилам Google.
  • Нарушенная функциональность. Некачественные приложения с множественными сбоями и зависаниями, которые блокируют взаимодействие с пользователем, запрещены в Play Store.

Apple App Store

Когда дело доходит до публикации, Apple довольно придирчив и делает процесс публикации вашего приложения намного сложнее, чем Google. Тем не менее, вы по-прежнему можете сделать ваше приложение доступным для пользователей IOS.

Вот как выглядит публикация iOS приложения в App Store в 2021 году.

Шаг 1: Apple Developer Portal

  • Как и в Google Play Store, вам необходимо создать учетную запись разработчика Apple и оплатить регистрационный сбор в размере 100$. Однако, вам нужно будет создать еще несколько дополнительных элементов, таких как сертификат распространения (Distribution Certificate), и настроить свой идентификатор приложения (App ID).

Шаг 2: Заполните данные о вашем приложении

  • Создайте уникальное название и описание приложения. Длина названия не должна превышать 30 символов. Описание должно быть детальное и затрагивать функциональность приложения — количество символов не должно превышать 4000.

Шаг 3: Загрузите маркетинговые материалы

  • Убедитесь, что ваше приложение создано с помощью Xcode 12 и iOS 14 SDK.
  • Загрузите до 5-ти скриншотов на каждое разрешение экрана. Скриншоты не должны содержать прозрачность.
  • Загрузите иконки приложения. Иконка должна быть без скруглений и прозрачности. Для каждого девайса, существуют разные параметры:

— iPhone: 180×180 пикселей или 120×120 пикселей. Формат PNG или JPEG;

— iPad Pro: 167 пикселей;

— iPad, iPad mini: 152×152 пикселей;

— App Store: 1024×1024 пикселей.

Шаг 4: Добавьте маркетинговую информацию

  • Поместите несколько ключевых слов (тегов), чтобы сделать ваше приложение доступным для поиска.
  • URL-адреса поддержки и маркетинга — URL-адреса, по которым пользователи могут найти маркетинговую информацию о приложении.
  • Уточните цены и описание покупок в приложении.

Шаг 5: Дополнительная информация

  • Информация об обновлениях (при подаче новой версии).
  • Включите имя владельца + контактную информацию.
  • Определите категорию и возрастное ограничение. Для этого необходимо заполнить анкету, указав определенные параметры и система автоматически присвоит возрастной рейтинг.

Шаг 6: TestFlight

  • Отправьте свое приложение на бета-тестирование TestFlight, чтобы убедиться, что оно соответствует всем рекомендациям Apple App Store. На рассмотрение вашего приложения перед публикацией или отклонением может уйти от 24 часов до недели.

Причины отказа App Store

  • Множественные ошибки. Ваша заявка будет отклонена при обнаружении каких-либо ошибок. Обязательно заранее протестируйте свое приложение.
  • Незавершенное содержание. Приложение, не имеющее окончательного содержания, не будет доступно в App Store.
  • Плохой интерфейс. Если вы не соблюдаете требования к интерфейсу, указанные в рекомендациях по дизайну, Apple отклонит заявку на публикацию вашего приложения.
  • Неработающие ссылки. Если ссылки в приложении не работают должным образом, это может повысить вероятность отказа.
  • Небрежные описания. Неточность вашего описания и снимков экрана, из-за которых пользователям сложно понять, что делает ваше приложение или обещает недоступные функции, будет отклонена.
  • Недействительная реклама. Проверьте, правильно ли ваше приложение отображает рекламу на всех устройствах.
  • Дублирование приложений. Если вы подаете две одинаковые заявки на публикацию, это может быть основанием для отказа.
  • Низкое качество и небольшое количество функций. Если приложение не предлагает достаточной функциональности и контента или оно предназначено только для небольшого нишевого рынка, приложение также может быть отклонено.

Важно!

С 31 января 2022 года, приложения iOS, в которых можно создавать аккаунты, обязаны предоставлять пользователям опцию удаления. Подробнее о новом правиле от App Store, вы можете найти здесь.

В заключении

Всегда хочется поскорее опубликовать и продемонстрировать свое приложение пользователям. Но прежде чем загрузить его в App Store или Google Play, убедитесь, что вы выполнили все инструкции и ваше приложение соответствует всем требованиями платформ.

Полезные ссылки:

Google Play:

  • Google Play Badges
  • Google Play Content Rating
  • User Data
  • Android App Bundle

Apple App Store:

  • App Store App Icon
  • App Store Content Rating
  • User Privacy and Data Usage
  • Apps Submission

Устранено Код ошибки 18 — переустановите драйверы для этого устройства

При загрузке Windows 10 может появиться следующее сообщение об ошибке:

«Переустановите драйверы для этого устройства. (Код 18)»

Эта ошибка может появиться в одной из следующих ситуаций:

  1. Перезагрузка ПК после установки нового оборудования или драйвера
  2. При подключении устройства
  3. После удаления Windows 10
  4. 16 драйвер устройства и т. д.

Почему появляется код ошибки 18?

Существует несколько причин, вызывающих Код ошибки диспетчера устройств 18 в Windows 10/8/7 и Windows Server. Установка несовместимого или устаревшего драйвера, установка неисправного оборудования, несовпадение записей в реестре, отсутствие системных файлов или наличие вируса/троянской программы на вашем ПК — основная причина этой ошибки.
 

Как исправить Переустановите драйверы для этого устройства. (Код 18)

Способ 1: исправить с помощью Advanced System Repair Tool

Как мы знаем, наиболее распространенной причиной «Код 18» является поврежденный, поврежденный или устаревший драйвер устройства, поэтому вам нужен расширенный инструмент восстановления системы, который легко устраняет проблемы, связанные с диспетчером устройств. Он также восстанавливает отсутствующие или поврежденные системные файлы, такие как файлы DLL, файлы EXE, файлы sys, файлы OCX, файлы inf и т. д. В большинстве случаев ошибка «Код 18» появляется из-за поврежденных записей реестра. Advanced System Repair Tool также позаботится о файле реестра и легко исправит ошибку.

Windows состоит из огромного количества dll-файлов , exe-файлов, системных файлов, различных типов служб, баз данных, и т. д., поэтому невозможно постоянно отслеживать все файлы. Блестящий инструмент PC Optimizer восстанавливает повреждения, исправляет ошибки, обновляет окна и драйверы, а также устраняет различные типы ошибок без предупреждения .

Outbyte PC Repair Tool легко выполняет все вышеперечисленные задачи и предоставляет вам безошибочную и плавную среду Windows для работы, чтобы вы могли сосредоточиться только на своем бизнесе.


Метод 2: Устранение проблем с поврежденным драйвером

Как вы знаете, основная причина Переустановите драйверы для этого устройства. (Код 18) поврежден или поврежден драйвер устройства. Таким образом, удаление и переустановка драйвера устройства может навсегда решить вашу проблему. Просто удалите драйвер из диспетчера устройств и установите последнюю версию совместимого драйвера.

1. Нажмите на меню запуска и найдите устройство . Теперь откройте Диспетчер устройств из результатов поиска.

2. Выберите Проблемное устройство > Щелкните правой кнопкой мыши на них и выберите Свойства .

3. Перейдите на вкладку Драйвер и нажмите кнопку Удалить , чтобы удалить драйвер.

4. Перезагрузите компьютер.

5. Снова откройте Диспетчер устройств и перейдите к Действие > Поиск аппаратных изменений .

Следуйте инструкциям на экране и устраните ошибку Диспетчер устройств Переустановите драйверы для этого устройства. (Код 18) .

Метод 3. Запустите средство устранения неполадок оборудования и устройств

Средство устранения неполадок оборудования — это эффективный и простой способ решения любых проблем, связанных с устройством. Не только Переустановите драйвера для этого устройства. (Код 18) , но если вы получаете какое-либо другое сообщение об ошибке, связанное с диспетчером устройств, запуск средства устранения неполадок оборудования может быстро исправить эту ошибку.

1. Нажмите Пуск Меню и найдите устранение неполадок . Нажмите на Устранение неполадок из элемента поиска.

2. Щелкните ссылку View All на левой панели . Откроется все меню устранения неполадок.

3. Найдите в списке Оборудование и устройства и нажмите на него. Запустится Устранение неполадок оборудования и устройств .

4. Нажмите Далее , чтобы начать процесс.

Способ 4. Обновите драйвер вручную

Вышеупомянутая ошибка связана с программным обеспечением драйвера, поэтому рекомендуется обновить драйвер вручную.

1. Нажмите Start Menu и найдите устройство . Нажмите Диспетчер устройств в результатах поиска. Откроется диспетчер устройств Windows.

2. Найдите драйвер с желтым восклицательным знаком