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

1.0.1

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

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

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

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

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

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

img

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

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

  • ОС Android версии 7.0 или выше.
  • На устройстве пользователя установлена актуальная версия RuStore.
  • Пользователь авторизован в RuStore.
  • Приложение должно быть опубликовано в RuStore.

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

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

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

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

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

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

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

  1. Скопируйте содержимое папки Plugins из официального репозитория RuStore на GitFlic в папку Plugins внутри своего проекта.
  2. Перезапустите Unreal Engine.
  3. В списке плагинов (Edit > Plugins > Project > Mobile) отметьте плагины RuStoreReview и RuStoreCore.
  4. В файле YourProject.Build.cs в списке PublicDependencyModuleNames подключите модули модули RuStoreCore и RuStoreReview.
  5. В настройках проекта (Edit > Project Settings > Android) установите параметр Minimum SDK Version на уровень не ниже 24 и параметр Target SDK Version — не ниже 31.

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

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

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

URuStoreReviewManager::Instance()->Init();

Пример использования в Blueprints:

img
к сведению

Вызов Init() привязывает объект к корню сцены, и, если дальнейшая работа с объектом больше не планируется, для освобождения памяти необходимо выполнить метод Dispose(). Вызов метода Dispose отвяжет объект от корня и безопасно завершит все отправленные запросы.

URuStoreReviewManager::Instance()->Dispose();

Если вам нужно проверить факт инициализации библиотеки, используйте метод getIsInitialized(), его значение true, если библиотека инициализирована, и false, если Init еще не был вызван.

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

Вызовите RequestReviewFlow() заранее, перед вызовом LaunchReviewFlow(), чтобы подготовить необходимую информацию для отображения экрана. Срок жизни ReviewInfo — около пяти минут.
RequestReviewFlow
long requestId = URuStoreReviewManager::Instance()->RequestReviewFlow(
[](long requestId) {
/ Process response
},
[](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
/ Process error
}
);

Пример использования в Blueprints:

Обратный вызов (callback) Failure возвращает структуру FURuStoreError с информацией об ошибке в параметре Error.

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

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

Каждый запрос получает уникальный в рамках одного запуска приложения requestId. Каждое событие возвращает requestId запроса, породившего это событие.

LaunchReviewFlow
long requestId = URuStoreReviewManager::Instance()->LaunchReviewFlow(
[](long requestId) {
/ Process response
},
[](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
/ Process error
}
);

Ниже представлен пример использования в Blueprints.

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

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

Структура ошибки
USTRUCT(BlueprintType)
struct RUSTORECORE_API FURuStoreError
{
GENERATED_USTRUCT_BODY()

FURuStoreError()
{
name = "";
description = "";
}

UPROPERTY(BlueprintReadOnly)
FString name;

UPROPERTY(BlueprintReadOnly)
FString description;
};
  • name — название ошибки.
  • description — описание ошибки.
Возникающие ошибки можно получить в событиях onFailure.

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

История изменений

Версия SDK 1.0.1

Внутреннее обновление SDK.

Версия SDK 1.0

  • Добавлены асинхронные варианты Blueprint-методов вместо подписок на события.
  • Багфиксы.