Google Play 警告不正确实施 Google Play inApp Billing
Google Play Warning Incorrect Implementation of Google Play inApp Billing
我刚刚收到来自 Google Play
的以下电子邮件
'Hello Google Play Developer,
We detected that your app(s) listed at the end of this email are
invoking the in-app billing service without setting a target package
for the intent. This can enable a malicious package to bypass the Play
store billing system and access items that have not been purchased.
Next Steps
If you are using IabHelper, please start using the latest SDK. If you
are manually invoking the in-app billing service, make sure you are
calling Intent.setPackage(“com.android.vending”) on any intents to
"com.android.vending.billing.InAppBillingService.BIND". Sign in to
your Developer Console and submit the updated version of your app.
Check back after five hours - we’ll show a warning message if the app
hasn’t been updated correctly.'
我不确定这个问题的解决方法是什么。谁能告诉我在哪里指定代码?它是在 Java Class 还是清单中的某处?
修复程序将在您的 Java 中。在您的代码库中搜索具有操作 "com.android.vending.billing.InAppBillingService.BIND"
的 Intent,或者传递到构造函数或通过 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
我们也收到了这个警报,并检查了我们的 apk。
我们发现旧版本的 Google-Play-Service.jar 似乎使用了 "com.android.vending.billing.InAppBillingService.BIND" 的意图,没有设置 setPackage.
我们还检查了最新的 Google-Play-Service.jar,这个很好,所以我建议检查您的图书馆。
您必须使用最新的 SDK 更新您的 IabHelper 文件:
当您覆盖旧文件时,Eclipse 或 Android Studio 会显示错误,您必须修复它们,例如添加 try catch,或向 queryInventory 函数添加一个参数。
如果您更改了新文件中的更新包名称,请记住它。
编辑: 最后我还需要更新 google_play_services.jar lib 包含在我的项目中。更新后,此通知警报已隐藏。我使用的是较旧的 google 播放服务库。现在我使用的是 rev 28 版本。
没有测试这个解决方案,但你仍然可以尝试:在 https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297 或任何你有 setPackage 东西的地方用 serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND");
替换 serviceIntent.setPackage("com.android.vending");
。干杯。
更新:只需更新 Google 播放服务库,对我有用。干杯。
在整个代码库中搜索以下代码语句。
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
无论您在哪里使用了上述意图,都不要忘记在下面添加此代码 serviceIntent.setPackage("com.android.vending");
在我的整个代码库中出现了两次上述意图,一次出现在 IabHelper java 文件中,如果您使用最新的应用计费 sdk,则该语句已经添加,另一次出现,我用这个意图检查 InApp Billing 服务是否可用,我忘记添加 serviceIntent.setPackage("com.android.vending");
,一旦我弄清楚并在开发者控制台中更新我的应用程序,几个小时后警告消息就被删除了。
几天前我收到了同样的警告,并且已经为这样的意图设置了包:
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
通过更新到最新版本的 Google Play Services 并定位 Lollipop (5.1) 而不是 KitKat (4.4)...如果您使用任何 Google Play Apis 确保您将它们更新到最新版本,希望这也能为您解决问题。
解决这个问题的三个要点
- 在您的代码中找到
com.android.vending.billing.InAppBillingService.BIND
。让每个 Intent 调用方法 Intent.setPackage(“com.android.vending”).
- 更新
IabHelper
的SDK。
- 更新 Google 播放服务库项目。
确保正确完成这些事情。每一点撤消都会导致这个问题。如果问题依然存在,可能是你项目中的其他jar有问题。
我收到了同样的警告。我已经在绑定 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,但这没有帮助。然后我注意到 build.gradle 中的依赖项编译 'com.google.android.gms:play-services:6.1.71'。我将其更改为 com.google.android.gms:play-services:9.4.0。这导致了许多编译错误。但是,我没有使用 9.4.0 版本的播放服务,而是使用了 9.4.0 版本的单独 google 服务。在我的例子中,它只有 com.google.android.gms:play-services-auth:9.4.0 和 com.google.android.gms:play-services-drive:9.4.0。这只给出了一些我在代码中修复的编译错误。这然后我推动 google 作为 alpha 播放,等了 2 天。我上传的构建没有弹出警告警报。
谢谢。
编辑:我认为只要设置 setPackage("com.android.vending") 我们就不需要更改 IabHelper.java。我恢复了 IabHelper.java,并上传了一个仅包含 9.4.0 版本的 play-services-drive 和 play-services-auth 更改的构建。它没有发出警告。
我遇到了这个问题,无力更新我们基于 Eclipse 的旧管道。所以我基本上反编译了 google 播放服务的库,修补了 eb.java 和 dx.java 中的漏洞,重新编译了这两个文件并将它们放入原始 JAR 文件中。这是解释 in my blog.
所有答案都正确。我所做的是更新 google 播放服务和 IAB 助手,而不是使用 IAB 助手,我使用了应用购买教程中 google 中描述的方法,它修复了通知。
我刚刚收到来自 Google Play
的以下电子邮件'Hello Google Play Developer,
We detected that your app(s) listed at the end of this email are invoking the in-app billing service without setting a target package for the intent. This can enable a malicious package to bypass the Play store billing system and access items that have not been purchased.
Next Steps
If you are using IabHelper, please start using the latest SDK. If you are manually invoking the in-app billing service, make sure you are calling Intent.setPackage(“com.android.vending”) on any intents to "com.android.vending.billing.InAppBillingService.BIND". Sign in to your Developer Console and submit the updated version of your app. Check back after five hours - we’ll show a warning message if the app hasn’t been updated correctly.'
我不确定这个问题的解决方法是什么。谁能告诉我在哪里指定代码?它是在 Java Class 还是清单中的某处?
修复程序将在您的 Java 中。在您的代码库中搜索具有操作 "com.android.vending.billing.InAppBillingService.BIND"
的 Intent,或者传递到构造函数或通过 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
我们也收到了这个警报,并检查了我们的 apk。 我们发现旧版本的 Google-Play-Service.jar 似乎使用了 "com.android.vending.billing.InAppBillingService.BIND" 的意图,没有设置 setPackage.
我们还检查了最新的 Google-Play-Service.jar,这个很好,所以我建议检查您的图书馆。
您必须使用最新的 SDK 更新您的 IabHelper 文件:
当您覆盖旧文件时,Eclipse 或 Android Studio 会显示错误,您必须修复它们,例如添加 try catch,或向 queryInventory 函数添加一个参数。
如果您更改了新文件中的更新包名称,请记住它。
编辑: 最后我还需要更新 google_play_services.jar lib 包含在我的项目中。更新后,此通知警报已隐藏。我使用的是较旧的 google 播放服务库。现在我使用的是 rev 28 版本。
没有测试这个解决方案,但你仍然可以尝试:在 https://github.com/googlesamples/android-play-billing/blob/master/TrivialDrive/app/src/main/java/com/example/android/trivialdrivesample/util/IabHelper.java#L297 或任何你有 setPackage 东西的地方用 serviceIntent.setPackage("com.android.vending.billing.InAppBillingService.BIND");
替换 serviceIntent.setPackage("com.android.vending");
。干杯。
更新:只需更新 Google 播放服务库,对我有用。干杯。
在整个代码库中搜索以下代码语句。
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
无论您在哪里使用了上述意图,都不要忘记在下面添加此代码 serviceIntent.setPackage("com.android.vending");
在我的整个代码库中出现了两次上述意图,一次出现在 IabHelper java 文件中,如果您使用最新的应用计费 sdk,则该语句已经添加,另一次出现,我用这个意图检查 InApp Billing 服务是否可用,我忘记添加 serviceIntent.setPackage("com.android.vending");
,一旦我弄清楚并在开发者控制台中更新我的应用程序,几个小时后警告消息就被删除了。
几天前我收到了同样的警告,并且已经为这样的意图设置了包:
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
通过更新到最新版本的 Google Play Services 并定位 Lollipop (5.1) 而不是 KitKat (4.4)...如果您使用任何 Google Play Apis 确保您将它们更新到最新版本,希望这也能为您解决问题。
解决这个问题的三个要点
- 在您的代码中找到
com.android.vending.billing.InAppBillingService.BIND
。让每个 Intent 调用方法Intent.setPackage(“com.android.vending”).
- 更新
IabHelper
的SDK。 - 更新 Google 播放服务库项目。 确保正确完成这些事情。每一点撤消都会导致这个问题。如果问题依然存在,可能是你项目中的其他jar有问题。
我收到了同样的警告。我已经在绑定 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,但这没有帮助。然后我注意到 build.gradle 中的依赖项编译 'com.google.android.gms:play-services:6.1.71'。我将其更改为 com.google.android.gms:play-services:9.4.0。这导致了许多编译错误。但是,我没有使用 9.4.0 版本的播放服务,而是使用了 9.4.0 版本的单独 google 服务。在我的例子中,它只有 com.google.android.gms:play-services-auth:9.4.0 和 com.google.android.gms:play-services-drive:9.4.0。这只给出了一些我在代码中修复的编译错误。这然后我推动 google 作为 alpha 播放,等了 2 天。我上传的构建没有弹出警告警报。
谢谢。
编辑:我认为只要设置 setPackage("com.android.vending") 我们就不需要更改 IabHelper.java。我恢复了 IabHelper.java,并上传了一个仅包含 9.4.0 版本的 play-services-drive 和 play-services-auth 更改的构建。它没有发出警告。
我遇到了这个问题,无力更新我们基于 Eclipse 的旧管道。所以我基本上反编译了 google 播放服务的库,修补了 eb.java 和 dx.java 中的漏洞,重新编译了这两个文件并将它们放入原始 JAR 文件中。这是解释 in my blog.
所有答案都正确。我所做的是更新 google 播放服务和 IAB 助手,而不是使用 IAB 助手,我使用了应用购买教程中 google 中描述的方法,它修复了通知。