Google Play предупреждение неправильная реализация Google Play iNAPP биллинга
Я только что получил следующее письмо от Google Play
'Привет Google Play Разработчик,
мы обнаружили, что ваши приложения, перечисленные в конце этого письма, вызов службы биллинга в приложении без установки целевого пакета за намерение. Это может позволить вредоносному пакету обойти игру хранить платежную систему и элементы доступа, которые не были приобретены.
Следующие Шаги
Если вы используете IabHelper, пожалуйста, начните использовать последний SDK. Если вы вручную вызывая службу биллинга в приложении, убедитесь, что вы вызова "намерения".setPackage("com по.андроид.вендинг") на любые намерения "com.андроид.продажа.фактурирование.InAppBillingService.СВЯЗЫВАТЬ." Войдите в консоль разработчика и отправить обновленную версию приложения. Проверьте через пять часов - мы покажем предупреждающее сообщение, если приложение не был обновлен правильно.'
Я не уверен, что это исправление эта проблема. Кто-нибудь может сказать, где указать код? Это где-то в классе Java или Манифесте?
11 ответов
Я получил то же самое предупреждение несколько дней назад и уже устанавливал пакет для намерения следующим образом:
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)... если вы используете какие-либо API Google Play, убедитесь, что вы обновили их до новейших версий и, надеюсь, это исправит его для вас.
мы также получили это предупреждение и проверили наши apks. Мы нашли старую версию Google-Play-сервиса.jar, похоже, использует intent для " com.андроид.продажа.фактурирование.InAppBillingService.BIND", без установки setPackage.
мы также проверили последнюю версию Google-Play-Service.Джар и этот были в порядке, поэтому я бы предложил проверить вашу библиотеку.
Поиск всего репозитория кода для следующего оператора кода.
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
везде, где вы использовали вышеуказанное намерение, не забудьте добавить этот код ниже serviceIntent.setPackage("com.android.vending");
было два вхождения вышеуказанного намерения во всей моей базе кода, один был в файле java IabHelper, если бы вы использовали последний в App billing sdk, этот оператор уже был бы добавлен, другое вхождение, я использовал это намерение, чтобы проверить, доступна ли служба выставления счетов InApp, у меня есть забыл добавить serviceIntent.setPackage("com.android.vending");
, Как только я понял это и обновил свое приложение в консоли разработчика, предупреждающее сообщение было удалено через несколько часов.
вы должны обновить файлы IabHelper с помощью последнего SDK из:
при перезаписи старых файлов Eclipse или Android Studio будут отображаться ошибки, и вы должны их исправить, например, добавить try catch или добавить один параметр в функцию queryInventory.
запомнить имя пакета обновления в новых файлах, если ты изменил его.
EDIT: также, наконец, мне нужно обновить google_play_services.jar lib включен в мой проект. После обновления это уведомление скрыто. Я использовал более старый сервис Google play. Теперь я использую версию rev 28.
исправление будет в вашей 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
есть три момента, чтобы решить эту проблему.
- найти
com.android.vending.billing.InAppBillingService.BIND
в ваши коды. Пусть каждое намерение для этого вызовет методIntent.setPackage(“com.android.vending”).
- обновить SDK
IabHelper
. - обновление проекта Google Play Service library. Убедитесь, что все сделано правильно. Каждый упущенный момент ведет к этой проблеме. Если проблема все еще существует, возможно, что-то не так с другими банками в вашем проекте.
Я получил такое же предупреждение. Я уже устанавливал пакет при привязке 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();
мне наконец-то удалось решить эту проблему. Сначала я обновил IabHelper, но это не помогло. Затем я заметил, что com-компиляция зависимостей.гуглить.андроид.gms: play-услуги: 6.1.71 ' в сборке.градля. Я изменил это на com.гуглить.андроид.gms: play-услуги: 9.4.0. Это вызывало множество ошибок компиляции. Но, вместо того, чтобы использовать 9.4.0 версию play-services, я использовал отдельные сервисы google версии 9.4.0. В моем случае это только COM.гуглить.андроид.gms: play-услуги-auth: 9.4.0 и com.гуглить.андроид.gms: play-услуги-привод: 9.4.0. Это дает только несколько ошибок компиляции, которые я исправил в коде. Затем я нажал на google play как альфа, подождал 2 дня. Предупреждение не появилось для сборки, которую я загрузил.
спасибо.
Edit: я не думаю, что нам нужно изменить IabHelper.java, пока он устанавливает setPackage ("com.андроид.продажа.)" Я вернул IabHelper.java, и загрузил сборку только с версией 9.4.0 play-services-drive и play-services-auth изменения. Он не бросал предупреждения.
не тестировал это решение, но вы все равно можете попробовать: replace serviceIntent.setPackage("com.android.vending");
с serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND");
in https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297 или где - нибудь у вас есть setPackage вещь. Овации.
обновление: просто обновите Google Play Services lib, работал на меня. Овации.
У меня была эта проблема, и я не мог позволить себе обновить наш старый конвейер, основанный в eclipse. Поэтому я в основном декомпилировал библиотеку сервиса google play, исправил уязвимости в eb.java и dx.java, перекомпилировал эти два файла и поместил их в исходный файл JAR. Это объясняется в своем блоге.
все ответы верны. То, что я сделал, это обновления Google play services и IAB helper и вместо использования IAB helper я sed метод, описанный в google в App purchases tutorial, и он исправил уведомления.