49
votes

L'API Play Core In-App Review n'affiche pas l'activité d'examen

J'essaie d'utiliser l'API Review (bibliothèque Play Core 1.8.0) de Google qui vient de sortir hier. Voir https://developer.android.com/guide/playcore/in-app-review

J'ai suivi attentivement la section de dépannage, je me suis assuré que l'application est téléchargée à partir de la piste de test interne, mon compte n'a pas d'avis sur l'application, l'application est dans la bibliothèque de cet utilisateur etc. J'ai même essayé avec un tout nouveau compte, mais à chaque fois que com.google.android.finsky.inappreviewdialog.InAppReviewActivity est montré pour disparaître immédiatement.

J'appelle le code suivant à partir de la méthode onResume () de mon activité:

2020-08-06 16:01:29.317 29618-29618/? I/MyApp: [06Aug 16:01:29.317, main]: Rating: requestReviewFlow()
2020-08-06 16:01:29.318 29618-29618/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : requestInAppReview (com.mypackage)
2020-08-06 16:01:29.320 29618-29774/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : Initiate binding to the service.
2020-08-06 16:01:30.081 29618-29618/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.inappreviewservice.InAppReviewService})
***2020-08-06 16:01:30.082 29618-29774/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : linkToDeath***
2020-08-06 16:01:30.355 29618-29637/? I/PlayCore: UID: [10409]  PID: [29618] OnRequestInstallCallback : onGetLaunchReviewFlowInfo
2020-08-06 16:01:30.355 29618-29774/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : Unbind from service.
2020-08-06 17:02:21.590 7478-7478/? I/MyApp: [06Aug 17:02:21.590, main]: Rating: launchReviewFlow() 
2020-08-06 17:02:21.630 1511-4316/? I/ActivityTaskManager: START u0 {cmp=com.android.vending/com.google.android.finsky.inappreviewdialog.InAppReviewActivity (has extras)} from uid 10122
2020-08-06 17:02:21.750 7478-7478/? I/MyApp: [06Aug 17:02:21.750, main]: Rating: launchReviewFlow() success 

Les deux auditeurs reviennent avec succès.

Voici la sortie du journal:

                reviewManager = ReviewManagerFactory.create(AlarmClock.this);
                Logger.logInfo("Rating: requestReviewFlow() ");
                reviewManager.requestReviewFlow().addOnSuccessListener(new OnSuccessListener<ReviewInfo>() {
                    @Override
                    public void onSuccess(ReviewInfo result) {
                        Logger.logInfo("Rating: launchReviewFlow() ");
                        reviewManager.launchReviewFlow(AlarmClock.this, result).addOnSuccessListener(new OnSuccessListener<Void>() {
                            @Override
                            public void onSuccess(Void result) {
                                Logger.logInfo("Rating: launchReviewFlow() success ");
                            }
                        });
                    }
                });

Quelqu'un a réussi à faire fonctionner cela? Tous les conseils. Grand merci!


11 commentaires

Je suis également confronté au même problème @Petr Nalevka Si vous trouvez une solution, partagez-la ici


Merci beaucoup. J'essaie maintenant une implémentation minimale avec mon autre application et je vais voir ..


Je vois le même problème. Le syslog inclut cette exception: Classe non trouvée lors de la suppression du marshalling: com.google.android.play.core.review.b (avec minifyEnabled = false!). Voici le lien vers le suivi des problèmes de Google: issuetracker.google.com/issues/162969017


J'ai implémenté avec succès l'API sur Android, elle ne s'affiche que sur la version publiée via la piste de test interne. Je peux vous envoyer un extrait de code @PetrNalevka. Btw je pense que c'est mal de le déclencher dans onResume, vous devriez le déclencher après avoir apporté une certaine valeur à l'utilisateur, par exemple après avoir défini une alarme dans votre cas.


Même problème ici! Je suppose que c'est encore beaucoup de buggy. Je l'implémentera plus tard sur mes applications. @ DavidVávra, postez-le ici. Merci.


@MPaulo a publié mon code comme réponse ici.


cela fonctionne si j'utilise un compte Gmail. Mon compte GSuite ne fonctionne pas car il ne peut pas laisser d'avis developer.android.com/guide/playcore/in-app-review/...


Votre code est correct. Ne se présentera pas par conception. Vérifiez ici comment tester:developer.android.com/guide/playcore/in-app-review/test


J'ai décidé de ne pas utiliser cette API. Pourquoi devrais-je risquer avec des avis d'utilisateurs si précieux sans raison


Je pense qu'il y a un peu d'obfuscation: stackoverflow.com/a/63650212/10117882


@orium, le fait est que si votre application fonctionne bien, vous pouvez également obtenir plus de bonnes critiques, voyez-le positif


14 Réponses :


-1
votes

La documentation indique qu'il ne sera pas affiché à chaque fois que vous le demanderez car il a des restrictions de quota: https://developer.android.com/guide/playcore/in-app-review#quotas

Je l'ai juste inclus dans mon projet et il n'a montré le dialogue qu'une seule fois. C'est un peu gênant car nous n'avons aucun contrôle là-dessus.

De plus, j'ai remarqué que si vous essayez d'afficher la boîte de dialogue encore et encore, la barre de navigation commence à clignoter (comme si elle voulait afficher la boîte de dialogue mais elle est rejetée).


2 commentaires

Merci beaucoup pour vos commentaires. Je connais les restrictions de quota. Mais pour moi, cela ne s'est pas montré même la première fois et j'ai utilisé différents comptes qui n'ont jamais évalué l'application ni téléchargé l'application pour la première fois. Cela m'a donc fait croire qu'il y avait peut-être un autre problème.


@PetrNalevka Je suis même confronté au même problème. Je reçois le rappel pour un succès complet et ensuite. Mais aucune boîte de dialogue de révision n'est visible. Je me suis assuré d'utiliser une version de version et de pointer également vers un versionCode qui est actuellement actif dans le playStore.



0
votes

La documentation dit

Pour offrir une excellente expérience utilisateur, Google Play applique un quota sur la fréquence à laquelle un utilisateur peut voir la boîte de dialogue de révision. Pour cette raison, l'appel d'une méthode launchReviewFlow peut ne pas toujours afficher une boîte de dialogue. Par exemple, vous ne devriez pas avoir d'option d'appel à l'action (comme un bouton) pour déclencher une révision car un utilisateur peut avoir déjà atteint son quota et le flux ne sera pas affiché, présentant une expérience interrompue à l'utilisateur.

Vous ne vous attendez donc pas à ce qu'il affiche la boîte de dialogue à chaque fois et il n'y a aucun moyen de savoir si la boîte de dialogue est affichée ou non, ni si l'utilisateur a examiné votre application ou non.


2 commentaires

Il devrait y avoir un moyen de le tester de manière fiable


Wow donc c'est essentiellement des ordures! Cela ne sert à rien s'il ne peut s'afficher qu'une seule fois et que nous n'obtenons aucune information d'erreur en fonction du fait qu'il y avait déjà un avis, etc. Pourquoi ne pas toujours l'afficher et si un avis a déjà été laissé, autorisez-les à le modifier?



0
votes

Mon code de travail:

private fun askForReview() {
    val manager = ReviewManagerFactory.create(this)
    manager.requestReviewFlow().addOnCompleteListener { request ->
        if (request.isSuccessful) {
            val reviewInfo = request.result
            manager.launchReviewFlow(this, reviewInfo).addOnFailureListener {
                logWarning("In-app review request failed, reason=$it")
            }.addOnCompleteListener { _ ->
                logInfo("In-app review finished")
            }
        } else {
            logWarning("In-app review request failed, reason=${request.exception}")
        }
    }
}

Testé sur une application à partir de la piste de test interne (il n'y a pas de quota).


1 commentaires

Ce code fonctionnait dans Live. Mais cela n'a pas fonctionné dans Test.



2
votes

Pour tous les utilisateurs qui ont besoin d'un code JAVA fonctionnel, veuillez trouver mon code ci-dessous:

implementation 'com.google.android.play:core:1.8.0'

OnCreate

manager = ReviewManagerFactory.create(this);

private void Review(){
    manager.requestReviewFlow().addOnCompleteListener(new OnCompleteListener<ReviewInfo>() {
        @Override
        public void onComplete(@NonNull Task<ReviewInfo> task) {
            if(task.isSuccessful()){
                reviewInfo = task.getResult();
                manager.launchReviewFlow(MainActivity.this, reviewInfo).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(Exception e) {
                        Toast.makeText(MainActivity.this, "Rating Failed", Toast.LENGTH_SHORT).show();
                    }
                }).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        Toast.makeText(MainActivity.this, "Review Completed, Thank You!", Toast.LENGTH_SHORT).show();
                    }
                });
            }

        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(Exception e) {
            Toast.makeText(MainActivity.this, "In-App Request Failed", Toast.LENGTH_SHORT).show();
        }
    });
}

Assurez-vous que ce qui suit est implémenté:

ReviewInfo reviewInfo;
ReviewManager manager;

Et veuillez également noter que la boîte de dialogue ne s'affichera que si votre application est en production, alpha ou en test interne sur le compte de la console Google Play.


1 commentaires

Merci pour le code, mais quand je l'utilise, il est dit "Examen terminé, merci!" sans rien avant ça. Pouvez-vous me dire comment déterminer si l'application est en production, en alpha ou en test interne? Lorsque je vais sur le Playstore, il est dit "Vous êtes un testeur bêta pour cette application". Je teste simplement l'application localement sur mon propre appareil. Dois-je me retirer de la version bêta pour pouvoir tester?



0
votes

Mon problème a été résolu en transposant le contexte et l'activité sous la forme requise, c'est-à-dire le contexte et l'activité de l'application. Bien que cela semble illogique, rien d'autre n'a fonctionné pour moi


0 commentaires

0
votes

J'ai rejoint la version bêta dans le magasin et cela s'est montré. Mais montrez juste une fois.


1 commentaires

La même chose pour moi. Il n'a montré qu'une seule fois après le téléchargement de l'apk à partir de tests internes. Ils disent dans la documentation qu'après cela, vous pouvez installer directement à partir d'Anroid Studio et tester, mais cela n'est jamais réapparu ...



11
votes

J'ai également vu le même problème, mon flux de révision de demande fonctionne, puis le flux de révision de lancement fonctionne, mais rien ne s'affiche (je remarque que la petite ligne au centre du bas de l'écran apparaît brièvement, et mon audio se coupe brièvement lorsque le l'application est mise en pause, puis reprise, mais aucun flux d'examen n'est apparu).

J'ai pu le faire fonctionner en ajoutant un utilisateur à mon appareil qui ne figurait pas dans ma liste de testeurs de licence (console de développement Google) et qui n'avait pas examiné mon application auparavant. J'ai pu afficher la fenêtre de classement une fois, j'ai annulé l'opération pour pouvoir la tester à nouveau, mais elle ne réapparaîtra pas par la suite. Cela semble être une chose unique et ils se gardent agressivement d'ennuyer l'utilisateur avec des fenêtres contextuelles d'examen.

Cette fonctionnalité ne semble pas utile pour mon cas, j'ai un bouton sur l'écran des paramètres pour évaluer mon application. Comme je n'ai aucun moyen de savoir ce qui s'est passé, je ne peux pas remercier l'utilisateur, je ne peux pas désactiver le bouton ou afficher un message "vous avez déjà noté ce merci", et le bouton semble ne rien faire, il ressemble donc à un bug. Je suppose que l'utilisation prévue est de demander à l'utilisateur pendant le jeu, et s'il annule accidentellement le dialogue, c'est tout simplement dommage pour vous.

Idéalement, Google devrait autoriser les utilisateurs du test de licence à afficher cette fenêtre contextuelle plusieurs fois à des fins de test.


1 commentaires

Wow donc c'est essentiellement des ordures! Cela ne sert à rien s'il ne peut s'afficher qu'une seule fois et que nous n'obtenons aucune information d'erreur en fonction du fait qu'il y avait déjà un avis, etc. Pourquoi ne pas toujours l'afficher et si un avis a déjà été laissé, autorisez-les à le modifier?



19
votes

J'ai soulevé un problème sur le suivi des problèmes de Google à ce sujet. J'ai aussi le même problème.

Pour plus d'informations, consultez l'URL de suivi de mon problème: https://issuetracker.google.com/issues/167352813


0 commentaires

6
votes

Je veux juste partager le code qui fonctionne de manière fiable aujourd'hui (2020-09-03). Il a été essentiellement copié du document officiel

ReviewManager manager = ReviewManagerFactory.create(activity);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
    try {
        if (task.isSuccessful()) {
            // We can get the ReviewInfo object
            ReviewInfo reviewInfo = task.getResult();
            Task<Void> flow = manager.launchReviewFlow(activity, reviewInfo);
            flow.addOnCompleteListener(task2 -> {
                // The flow has finished. The API does not indicate whether the user
                // reviewed or not, or even whether the review dialog was shown. Thus, no
                // matter the result, we continue our app flow.
                utility.logMessageAsync(activity, "In-app review returned.");
            });
        } else {
            // There was some problem, continue regardless of the result.
            goToAppPage(activity);
        }
    } catch (Exception ex) {
        utility.logExceptionAsync(activity, "Exception from openReview():", ex);
    }
});

Il a été testé avec le partage d'application interne sur un Android 10. Il n'a jamais manqué d'afficher la boîte de dialogue d'examen.


5 commentaires

avez-vous testé sur abb ou apk signé?


Oui, le partage d'application interne dans mon cas nécessite un apk chanté. Je n'utilise pas abb pour cette application.


Fonctionne très bien! Je l'ai utilisé sur abb dans le partage d'application interne comme Hong l'a indiqué. J'ai testé avec Android 7, 8, 9


Merci. Je l'utilise après avoir lu les commentaires.


Je l'utilise depuis une semaine et demie et j'ai obtenu de bons résultats (je le montre après m'être assuré que je vais avoir une bonne critique) mais au cours des deux derniers jours, les chiffres ont fortement chuté, je n'ai pas de nouvelles notes, j'ai indications que les utilisateurs sont prêts à évaluer mais aucune note dans le magasin, est-ce que quelqu'un a vécu quelque chose de similaire?



0
votes

Juste pour être clair, vous n'utilisez pas com.mypackage, n'est-ce pas?

2020-08-06 16:01:29.318 29618-29618/? I/PlayCore: UID: [10409]  PID: [29618] ReviewService : requestInAppReview (com.mypackage)

Assurez-vous que l'appId utilisé est celui qui est "détenu" (c'est-à-dire installé par) par le compte sélectionné dans le Play Store de l'appareil.

Je pense que le guide de test (https://developer.android.com/guide/playcore/in-app-review/test ) est clair en termes de comment le tester compte tenu des différentes exigences.

Mes conseils:

  1. N'utilisez qu'un seul compte sur l'appareil
  2. Assurez-vous que le compte a installé l'application (apparaît dans la section Applications et jeux> Bibliothèque du Play Store)
  3. Le compte est un GMAIL, pas un GSuit
  4. Vous pouvez consulter le compte si vous accédez à la page de liste de lecture de l'application.
  5. Le compte n'a pas vérifié
  6. Si vous avez l'intention d'utiliser la piste de test interne, assurez-vous que le compte a rejoint la piste de test.
  7. Lorsque vous passez d'un compte à l'autre et que vous testez des éléments, il peut parfois être utile de "Effacer les données" depuis l'application Play Store.
  8. Essayez tout ce qui précède avec un compte différent

PS: Vous pouvez également tester le partage d'application interne.


0 commentaires

3
votes

Essayez de télécharger votre application sur le partage d'applications interne

J'ai constaté qu'avec le même apk téléchargé sur Test interne par rapport au partage d'application interne, ce dernier est plus fiable pour afficher le flux d'examen intégré à l'application chaque fois que j'essaye de le tester.

Vous devez activer le partage d'application interne dans le Play Store pour pouvoir installer votre application à partir du lien fourni en téléchargeant votre apk.

En gros, allez sur le Play Store, allez dans Paramètres, faites défiler jusqu'à la version Play Store et appuyez dessus plusieurs fois pour "Devenir développeur", puis activez le partage d'application interne.


0 commentaires

-1
votes

Veuillez tester en utilisant FakeReviewManager :)

ReviewManager manager = nouveau FakeReviewManager (contexte);

https://developer.android.com/guide/playcore/in-app-review/test


1 commentaires

Le FakeReviewManage n'est utilisé qu'à des fins de test unitaire ou d'intégration, ce qui signifie qu'il simulera le comportement de l'API une fois la révision terminée.



3
votes

J'ai eu le même problème et je l'ai résolu avec les étapes suivantes:

  1. Ajout de mon fichier APK au canal de test interne
  2. Ajout d'un utilisateur testeur avec un compte gmail ex: email@gmail.com . Les e-mails GSuite ne fonctionnent pas
  3. Avec le courrier du testeur, acceptez le privilège du testeur
  4. Avec un appareil physique signé avec l'e-mail de l'utilisateur du testeur, accédez au Play Store et téléchargez l'application

Ça marche!!

Remarque : si l'application n'est pas encore publiée, vous pouvez utiliser le partage d'applications de la console Google


1 commentaires

Eu le même problème. Il a fallu un certain temps pour comprendre que les comptes G Suite ne fonctionnent pas.



0
votes

J'ai eu exactement le même problème, le dialogue ne m'est jamais apparu ...

Mais même ainsi, je l'ai laissé implémenté dans l'application et l'ai posté sur le Play Store.

Ensuite, j'ai téléchargé et testé la version et tout fonctionne parfaitement.


0 commentaires