Предупреждение в 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 в учебнике покупок приложений, и он исправил уведомления.