Предупреждение в Google Play Неправильная реализация биллинга Google Play inApp

Я получил только следующее сообщение из Google Play

'Привет, разработчик Google Play,

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

Следующие шаги

Если вы используете IabHelper, начните использовать последний SDK. если ты вручную вызывают службу биллинга в приложении, убедитесь, что вы вызывая Intent.setPackage( "com.android.vending" ) по любым намерениям "Com.android.vending.billing.InAppBillingService.BIND". Войдите в вашей консоли разработчика и отправьте обновленную версию своего приложения. Вернитесь через пять часов - хорошо покажите предупреждение, если приложение не был обновлен правильно.

Я не уверен, в чем проблема для этой проблемы. Может ли кто-нибудь сказать, где указать код? Это где-то в Java-классе или манифесте?

Ответы

Ответ 1

Я получил такое же предупреждение несколько дней назад и уже установил пакет для намерения следующим образом:

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);

Проблема исчезла благодаря обновлению до последних версий сервисов Google Play и таргетинга на Lollipop (5.1) вместо KitKat (4.4)... если вы используете Google Play Apis, убедитесь, что вы обновили их до новейших версий версии и, надеюсь, это исправит для вас тоже.

Ответ 2

Мы также получили это предупреждение и проверили наши апки. Мы обнаружили, что старая версия Google-Play-Service.jar, похоже, использует намерение для "com.android.vending.billing.InAppBillingService.BIND", без настройки setPackage.

Мы также проверили последнюю версию Google-Play-Service.jar, и это было хорошо, поэтому я предлагаю проверить вашу библиотеку.

Ответ 3

Вы должны обновить файлы IabHelper с помощью последнего SDK:

https://github.com/googlesamples/android-play-billing/tree/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util

Когда вы перезаписываете старые файлы, Eclipse или Android Studio будут отображать ошибки, и вы должны их исправить, например, добавить try catch или добавить один параметр в функцию queryInventory.

Помните имя пакета обновления в новых файлах, если вы его изменили.

EDIT: Также мне нужно обновить google_play_services.jar lib, включенный в мой проект. После обновления это уведомление оповещения скрыто. Я использовал более старую библиотеку игр google. Теперь я использую версию версии 28.

Ответ 4

Найдите весь репозиторий кода для следующей инструкции кода.

Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");

Если вы использовали вышеуказанное намерение, не забудьте добавить этот код ниже serviceIntent.setPackage("com.android.vending");

В моей всей базе кода было два случая вышеупомянутого намерения: один из них был в java файле IabHelper, если вы используете последнее в sdk для выставления счетов приложения, это выражение уже было добавлено. В другом случае я использовал это намерение для проверки если служба InApp Billing была доступна, я забыл добавить serviceIntent.setPackage("com.android.vending");, как только я понял, что вне этого и обновил свое приложение в консоли разработчика, предупреждающее сообщение было удалено через несколько часов.

Ответ 5

Исправление будет в вашей Java. Найдите свою кодовую базу для намерения с помощью действия "com.android.vending.billing.InAppBillingService.BIND", либо переданного в конструктор, либо заданного через Intent.setAction(). Прежде чем вызывать bindService() с этим намерением, вы должны явно установить пакет через Intent.setPackage().

Вот пример кода Google в качестве ссылки: https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L296

Ответ 6

Не тестировал это решение, но вы все еще можете попробовать: замените serviceIntent.setPackage("com.android.vending"); на serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND"); в https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297 или в любом месте вы установилиPackage вещь. Приветствия.Забастовкa >

ОБНОВЛЕНИЕ: просто обновите библиотеку Google Play Services, работая для меня. Приветствия.

Ответ 7

Для решения этой проблемы существует три момента.

  • Найдите com.android.vending.billing.InAppBillingService.BIND в своих кодах. Пусть каждое намерение для этого вызывает метод Intent.setPackage("com.android.vending").
  • Обновить SDK IabHelper.
  • Обновить проект библиотеки Google Play. Убедитесь, что все сделано правильно. Каждая проблема отменила эту проблему. Если проблема все еще существует, возможно, что-то не так с другими банками в вашем проекте.

Ответ 8

Я получил такое же предупреждение. Я уже устанавливал пакет при привязке InAppBillingService, но я обнаружил, что проверяю, существует ли InAppBillingService, как это:

boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND"), 0).isEmpty();

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

boolean inAppBillingAvailable = !getPackageManager().queryIntentServices(new Intent("com.android.vending.billing.InAppBillingService.BIND").setPackage("com.android.vending"), 0).isEmpty();

Ответ 9

Наконец-то мне удалось это решить. Сначала я обновил IabHelper, но это не помогло. Затем я заметил, что компиляция зависимостей "com.google.android.gms: play-services: 6.1.71" в build.gradle. Я изменил это на com.google.android.gms: play-services: 9.4.0. Это вызывало множество ошибок компиляции. Но вместо того, чтобы использовать 9.4.0-версию игровых сервисов, я использовал отдельные сервисы google версии 9.4.0. В моем случае это только com.google.android.gms: play-services-auth: 9.4.0 и com.google.android.gms: play-services-drive: 9.4.0. Это дает лишь несколько ошибок компиляции, которые я исправил в коде. Тогда я нажал на игру Google как альфа, ждал 2 дня. Предупреждающее предупреждение не появилось для загруженной сборки.

Спасибо.

Изменить: я не думаю, что нам нужно изменить IabHelper.java, если он устанавливает setPackage ( "com.android.vending" ). Я вернул IabHelper.java и загрузил сборку только с 9.4.0 версиями play-services-drive и play-services-auth. Он не предупреждал.

Ответ 10

У меня была эта проблема и я не мог позволить себе обновить наш старый конвейер, основанный на eclipse. Поэтому я в основном декомпилировал библиотеку сервисов Google Play, исправил уязвимости в eb.java и dx.java, перекомпилировал эти два файла и поместил их в исходный JAR файл. Это объясняется в моем блоге.

Ответ 11

Все ответы верны. То, что я делал, это обновление сервисов google play и помощника IAB, а вместо использования помощника IAB я применил метод, описанный в google в учебнике покупок приложений, и он исправил уведомления.