web-dev-qa-db-fra.com

Avertissement Google Play Mise en œuvre incorrecte de Google Play inApp Billing

Je viens de recevoir le courrier électronique suivant de Google Play

'Bonjour développeur Google Play,

Nous avons détecté que vos applications répertoriées à la fin de cet e-mail invoquent le service de facturation intégré à l'application sans définir de package cible Dans ce but. Cela peut permettre à un package illicite de contourner le système de facturation de la boutique Play Et d’accéder aux éléments qui n’ont pas été achetés.

Prochaines étapes

Si vous utilisez IabHelper, commencez à utiliser le dernier SDK. Si vous Appelez manuellement le service de facturation intégré, assurez-vous que Appelez Intent.setPackage («com.Android.vending») pour tout projet d'intention de "Com .Android.vending.billing.InAppBillingService.BIND ". Connectez-vous à Votre console de développeur et envoyez la version mise à jour de votre application. Revenez après cinq heures - nous afficherons un message d'avertissement si l'application N'a pas été utilisée. mis à jour correctement. '

Je ne sais pas quelle est la solution à ce problème. Quelqu'un peut-il dire où spécifier le code? Est-ce quelque part dans Java Class ou dans le manifeste?

17
Jawad Amjad

J'ai reçu le même avertissement il y a quelques jours et j'étais déjà en train de configurer le paquet comme suit:

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

Le problème a disparu en mettant à jour les dernières versions des services Google Play et en ciblant Lollipop (5.1) au lieu de KitKat (4.4) ... si vous utilisez un quelconque api Google Play, assurez-vous de le mettre à jour avec les versions les plus récentes. ça va le réparer pour vous aussi.

3
Graham

Nous avons également reçu cette alerte et vérifié nos données apks. Nous avons constaté que l'ancienne version de Google-Play-Service.jar semble utiliser l'intention de "com.Android.vending.billing.Bill.InAppBillingService.BIND", sans nom paramètre setPackage.

Nous avons également vérifié le dernier fichier Google-Play-Service.jar et celui-ci était correct. Nous vous conseillons donc de consulter votre bibliothèque.

3
user3471022

Vous devez mettre à jour vos fichiers IabHelper avec le dernier SDK de:

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

Lorsque vous écrasez d'anciens fichiers, Eclipse ou Android Studio affiche des erreurs et vous devez les corriger, par exemple, ajoutez try catch ou ajoutez un paramètre à la fonction queryInventory.

Rappelez-vous le nom du package de mise à jour dans les nouveaux fichiers si vous l'avez modifié.

EDIT: Enfin, j'ai également besoin de la mise à jour de la librairie google_play_services.jar incluse dans mon projet. Après la mise à jour, cette alerte de notification est masquée. J'utilisais une ancienne bibliothèque de service de jeu Google. Maintenant, j'utilise la version rev 28.

2
jlgsoftware

Recherchez dans votre référentiel de code entier l'instruction de code suivante. 

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

Où que vous ayez utilisé l'intention ci-dessus, n'oubliez pas d'ajouter ce code ci-dessous serviceIntent.setPackage("com.Android.vending"); 

Il y avait deux occurrences de l'intention ci-dessus dans toute ma base de code, l'une dans le fichier Java d'IabHelper, si vous utilisiez le dernier sdk de facturation d'application, cette instruction serait déjà ajoutée. Une autre occurrence, j'ai utilisé cette intention pour vérifier si InApp Billing le service était disponible, j'ai oublié d'ajouter la serviceIntent.setPackage("com.Android.vending");, une fois que j'ai compris et mis à jour mon application dans la console du développeur, le message d'avertissement a été supprimé après quelques heures.

2
Ezhil

J'avais ce problème et je ne pouvais pas me permettre de mettre à jour notre ancien pipeline basé à Eclipse. J'ai donc essentiellement décompilé la bibliothèque du service de lecture Google, corrigé les vulnérabilités dans eb.Java et dx.Java, recompilé ces deux fichiers et les ai placés dans le fichier JAR d'origine. Ceci est expliqué dans mon blog .

0

Toutes les réponses sont correctes. Ce que j’ai fait, c’est la mise à jour des services de jeu de Google et de l’assistant IAB. Au lieu de l’utiliser, j’ai utilisé la méthode décrite dans google dans le didacticiel sur les achats d’application, qui a corrigé les notifications.

0
Jawad Amjad

N'a pas testé cette solution mais vous pouvez quand même l'essayer: remplacez serviceIntent.setPackage("com.Android.vending"); par serviceIntent.setPackage("com.Android.vending.billing.InAppBillingService.BIND"); dans https://github.com/googlesamples/Android-play-billing/blob/master/TrivialDrive/app/src/main/Java/com /example/Android/trivialdrivesample/util/IabHelper.Java#L297 ou n’importe où vous avez défini un packagePackage. À votre santé.

UPDATE: il suffit de mettre à jour la librairie de services Google Play, qui a fonctionné pour moi. À votre santé.

0
sssemil

Le correctif sera dans votre Java. Recherchez dans votre base de code une intention avec l'action "com.Android.vending.billing.InAppBillingService.BIND", soit passée au constructeur, soit définie via Intent.setAction(). Avant d'appeler bindService() avec cette intention, vous devez définir explicitement le package via Intent.setPackage().

Voici l'exemple de code de Google: https://github.com/googlesamples/Android-play-billing/blob/master/TrivialDrive/app/src/main/Java/com/example/Android/trivialdrivesample/util/ IabHelper.Java # L296

0
grendell

Il y a trois points pour résoudre ce problème.

  1. Trouvez com.Android.vending.billing.InAppBillingService.BIND dans vos codes. Laissez chaque intention à cet appel la méthode Intent.setPackage(“com.Android.vending”).
  2. Mise à jour du SDK de IabHelper.
  3. Mettez à jour le projet de bibliothèque du service Google Play. Assurez-vous que ces opérations ont été effectuées correctement. Chaque point défait conduit à ce problème. Si le problème persiste, il y a peut-être un problème avec les autres pots de votre projet.
0
ColdenBean

J'ai finalement réussi à résoudre ce problème. J'avais d'abord mis à jour IabHelper, mais cela n'a pas aidé. J'ai alors remarqué qu'une dépendance compilait 'com.google.Android.gms: play-services: 6.1.71' dans build.gradle. J'ai changé cela en com.google.Android.gms: play-services: 9.4.0. Cela causait de nombreuses erreurs de compilation. Mais au lieu d’utiliser la version 9.4.0 de play-services, j’ai utilisé les services google individuels de la version 9.4.0. Dans mon cas, il ne s'agit que de com.google.Android.gms: play-services-auth: 9.4.0 et com.google.Android.gms: play-services-drive: 9.4.0. Cela ne donne que quelques erreurs de compilation que j'ai corrigées dans le code. Cela alors j'ai poussé sur Google Play en tant qu'alpha, attendu 2 jours. L'alerte d'avertissement ne s'est pas affichée pour la version que j'ai téléchargée.

Je vous remercie.

Edit: Je ne pense pas que nous ayons besoin de changer IabHelper.Java tant qu'il définit setPackage ("com.Android.vending"). Je suis revenu sur IabHelper.Java et ai téléchargé une version uniquement avec la version 9.4.0 des modifications apportées par play-services-drive et play-services-auth. Il n'a pas lancé d'avertissement.

0
paachi

J'ai reçu le même avertissement. J'étais déjà en train de paramétrer le paquet lorsque j'ai lié InAppBillingService, mais j'ai constaté que je vérifiais si InAppBillingService existe comme ceci:

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

Assurez-vous que vous configurez également le package ici:

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