API-интерфейс Play Core In-App Review не показывает действие обзора - PullRequest
25 голосов
/ 06 августа 2020

Я пытаюсь использовать Review API (библиотека Play Core 1.8.0) от Google, который был выпущен только вчера. См. https://developer.android.com/guide/playcore/in-app-review

Я внимательно следил за разделом по устранению неполадок, я убедился, что приложение загружено с внутреннего тестового трека, в моей учетной записи нет обзора приложения, приложение в библиотеке этого пользователя et c .. Я даже попытался использовать совершенно новую учетную запись, но каждый раз com.google. android .finsky.inappreviewdialog.InAppReviewActivity отображается только для того, чтобы немедленно исчезнуть.

Я вызываю следующий код из метода onResume () моего действия:

                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 ");
                            }
                        });
                    }
                });

Оба слушателя возвращают успех.

Вот результат журнала:

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 

Кому-нибудь удалось заставить это работать? Какие-нибудь советы. Большое спасибо!

Ответы [ 9 ]

1 голос
/ 02 сентября 2020

Я поднял вопрос об этом в системе отслеживания проблем Google. У меня такая же проблема.

Для получения дополнительной информации проверьте мой URL отслеживания проблем: https://issuetracker.google.com/issues/167352813

1 голос
/ 18 августа 2020

Для всех пользователей, которым нужен рабочий код JAVA, найдите мой код ниже:

ReviewInfo reviewInfo;
ReviewManager manager;

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();
        }
    });
}

Убедитесь, что реализовано следующее:

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

И обратите внимание, что диалоговое окно будет отображаться только в том случае, если ваше приложение находится в рабочей, альфа-версии или внутреннем тестировании в учетной записи консоли Google Play.

1 голос
/ 01 сентября 2020

Я также видел ту же проблему, мой поток проверки запросов работает, затем поток проверки запуска работает, но ничего не отображается (я заметил, что небольшая линия в центре нижней части экрана ненадолго появляется, и мой звук прерывается на короткое время, так как приложение было приостановлено, а затем возобновлено, но процесс проверки не появился).

Мне удалось заставить его работать, добавив на свое устройство пользователя, которого не было в моем списке тестеров лицензий (консоль разработчика Google ) и ранее не просматривал мое приложение. Один раз мне удалось отобразить всплывающее окно с рейтингом, я отменил операцию, чтобы снова проверить его, но после этого оно больше не появлялось. Кажется, это одноразовая вещь, и они агрессивно защищают пользователя от раздражения всплывающими окнами с обзорами.

Эта функция не кажется полезной для моего случая, у меня есть кнопка на экране настроек, чтобы оценить мое приложение . Поскольку у меня нет возможности узнать, что произошло, я не могу поблагодарить пользователя, я не могу отключить кнопку или отобразить сообщение «вы уже оценили это спасибо», а кнопка просто кажется, что ничего не делает, поэтому похоже Жук. Я предполагаю, что предполагаемое использование - спросить пользователя во время игры, и если он случайно отменяет диалоговое окно, это просто плохо для вас.

В идеале Google должен разрешить пользователям тестирования лицензии отображать это всплывающее окно более одного раза для тестирования целей.

0 голосов
/ 04 сентября 2020

Я просто хочу поделиться кодом, который сегодня надежно работает (2020-09-03). По сути, он был скопирован из официального документа

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);
    }
});

Он был протестирован с внутренним совместным доступом к приложению на Android 10. Он всегда отображал диалоговое окно обзора.

0 голосов
/ 28 августа 2020

Я присоединился к бета-версии в магазине, и она показала. Но просто покажи один раз время.

0 голосов
/ 21 августа 2020

Моя проблема была решена путем приведения контекста и активности к требуемой форме, то есть контекста и активности приложения. Хотя это кажется нелогичным, у меня больше ничего не работало

0 голосов
/ 11 августа 2020

Мой рабочий код:

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}")
        }
    }
}

Проверено в приложении из дорожки внутреннего тестирования (там нет квоты).

0 голосов
/ 06 августа 2020

В документации написано

Чтобы обеспечить удобство работы пользователей, Google Play устанавливает квоту на то, как часто пользователю может быть показано диалоговое окно обзора. Из-за этого вызов метода launchReviewFlow может не всегда отображать диалоговое окно. Например, у вас не должно быть опции призыва к действию (такой как кнопка) для запуска обзора, поскольку пользователь, возможно, уже достиг своей квоты, и поток не будет отображаться, что представляет собой нарушение взаимодействия с пользователем.

Таким образом, вы не ожидаете, что он будет показывать диалоговое окно каждый раз, а также невозможно узнать, отображается ли диалоговое окно или нет, а также пользователь просмотрел ваше приложение или нет

0 голосов
/ 06 августа 2020

В документации указано, что он не будет отображаться каждый раз, когда вы его запрашиваете, поскольку у него есть ограничения по квоте: https://developer.android.com/guide/playcore/in-app-review#quotas

Я просто включил его в свой проект, и он показал диалог только раз. Это немного неудобно, поскольку у нас нет никаких элементов управления.

Кроме того, я заметил, что если вы пытаетесь снова и снова показывать диалог, панель навигации начинает мигать (как будто она хочет показать диалог но его увольняют).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...