Перейти к основному содержимому

2.0.0

Общие сведения

RuStore In-app Review SDK предлагает пользователю оставить оценку и отзыв о вашем приложении в RuStore, не выходя из приложения.

Пользовательский сценарий оценки и отзыва может быть запущен в любое время на протяжении всего пути пользователя в вашем приложении. Пользователь может оценить ваше приложение по шкале от 1 до 5 и оставить отзыв. Отзыв является опциональным.

Пример реализации

Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать SDK отзывов и оценок.

Пример пользовательского сценария

img

Условия корректной работы SDK

Для работы SDK оценок и отзывов необходимо соблюдение следующих условий.

Важно
  • Подпись тестируемой сборки (например, debug) приложения должна совпадать с подписью сборки приложения, которая была загружена в консоль и прошла модерацию ранее (например, release).
  • ОС Android версии 7.0 или выше.
  • На устройстве пользователя установлена актуальная версия RuStore.
  • Пользователь авторизован в RuStore.
  • Приложение должно быть опубликовано в RuStore.

Когда запрашивать оценку и отзыв

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

  • Запускайте процесс после того, как пользователь достаточно использовал ваше приложение.
  • Не запускайте процесс слишком часто — это ухудшит опыт пользователя вашего приложения и ограничит использование SDK оценок.
  • Не используйте призывы к действию, например, кнопку «Оценить приложение» — пользователь уже мог исчерпать лимит запуска процесса.
  • Ваше приложение не должно задавать какие-либо вопросы пользователю перед запуском или во время процесса, в том числе вопросы об их мнении (например, «Вам нравится приложение?») или прогнозирующие вопросы (например, «Вы бы поставили этому приложению 5 звёзд?»).

Рекомендации к дизайну

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

  • Отображайте процесс как есть, без какого-либо вмешательства или изменения текущего дизайна, включая размер, непрозрачность, форму и другие свойства.
  • Ничего не добавляйте поверх или по краям процесса.
  • Процесс должен открываться поверх всех слоёв. После запуска процесса не закрывайте его. Процесс завершится самостоятельно после явного действия пользователя.

Подключение в проект

  1. Скопируйте проекты плагина из официального репозитория RuStore на GitFlic.
  2. Откройте в вашей IDE проект Android из папки godot_plugin_libraries.
  3. Поместите в папку godot_plugin_libraries/libs пакет godot-lib.xxx.yyy.template_release.aar, где xxx.yyy версия вашей редакции Godot Engine.
  4. Выполните сборку проекта командой gradle assemble.

При успешном выполнении сборки в папке godot_example/android/plugins будут созданы файлы:

  • RuStoreGodotReview.gdap;
  • RuStoreGodotReview.aar;
  • RuStoreGodotCore.gdap;
  • RuStoreGodotCore.aar.
предупреждение

Обратите особое внимание, что библиотеки плагинов должны быть собраны под вашу версию Godot Engine.

  1. Скопируйте содержимое папки godot_example/android/plugins в папку your_project/android/plugins.

  2. В пресете сборки Android в списке Плагины отметьте плагины Ru Store Godot Review и Ru Store Godot Core.

Работа с оценками

Подготовка к работе с оценками

Для работы с оценками необходимо создать экземпляр RuStoreGodotReviewManager.

Инициализация

var _review_client: RuStoreGodotReviewManager = null

func _ready:
_review_client = RuStoreGodotReviewManager.get_instance()

Подготовка к запуску оценки приложения

Вызовите request_review_flow заранее, перед вызовом launch_review_flow, чтобы подготовить необходимую информацию для отображения экрана. Срок жизни ReviewInfo — около пяти минут.

Перед использованием метода необходимо единожды выполнить подписку на события:

  • on_request_review_flow_success;
  • on_request_review_flow_failure.
Подписка на события
func _ready():
# Инициализация _review_client

_review_client.on_request_review_flow_success.connect(_on_request_review_flow_success)
_review_clientt.on_request_review_flow_failure.connect(_on_request_review_flow_failure)

func _on_request_review_flow_success():
pass

func _on_request_review_flow_failure(error: RuStoreError):
pass
Вызов метода request_review_flow
_review_client.request_review_flow()

Обратный вызов (callback) on_request_review_flow_failure возвращает объект RuStoreError с информацией об ошибке. Структура ошибки RuStoreError описана в разделе Обработка ошибок.

Запуск оценки приложения

Для запуска формы запроса оценки и отзыва о приложении у пользователя вызовите метод launch_review_flow, используя ранее полученный ReviewInfo.

Перед использованием метода необходимо единожды выполнить подписку на события:

  • on_request_review_flow_success;
  • on_request_review_flow_failure.
Подписка на события
func _ready():
# Инициализация _review_client

_review_client.on_launch_review_flow_success.connect(_on_launch_review_flow_success)
_review_client.on_launch_review_flow_failure.connect(_on_launch_review_flow_failure)

func _on_launch_review_flow_success():
pass

func _on_launch_review_flow_failure(error: RuStoreError):
pass
Вызов метода launch_review_flow
_review_client.launch_review_flow()
Дождитесь уведомления о завершении формы пользователем в on_launch_review_flow_success или on_launch_review_flow_failure, чтобы продолжить работу приложения.

Обратный вызов (callback) on_launch_review_flow_failure возвращает объект RuStoreError с информацией об ошибке. Структура ошибки RuStoreError описана в разделе Обработка ошибок.

После завершения формы оценки вне зависимости от результата (Success или Failure) не рекомендуется отображать какие-либо дополнительные формы, связанные с оценкой и отзывом. Частый вызов launch_review_flow не повлечёт за собой отображения формы оценки для пользователя, допустимое отображение регулируется на стороне RuStore.

Обработка ошибок

Возникающие ошибки можно получить в событиях *_failure.

Структура ошибки

class_name RuStoreError extends Object

var description: String

func _init(json: String = ""):
if json == "":
description = ""
else:
var obj = JSON.parse_string(json)
description = obj["detailMessage"]
  • description – описание ошибки.

Возможные ошибки

  • RuStoreNotInstalledException — на устройстве пользователя не установлен RuStore;
  • RuStoreOutdatedException — версия RuStore, установленная на устройстве пользователя, не поддерживает данный SDK;
  • RuStoreUserUnauthorizedException — пользователь не авторизован в RuStore;
  • RuStoreRequestLimitReached — с момента последнего отображения процесса прошло слишком мало времени;
  • RuStoreReviewExists — этот пользователь уже оценил ваше приложение;
  • RuStoreInvalidReviewInfo — проблемы с ReviewInfo;
  • RuStoreException — базовая ошибка RuStore, от которой наследуются остальные ошибки.