1.0.1
Общие сведения
RuStore In-app Review SDK предлагает пользователю оставить оценку и отзыв о вашем приложении в RuStore, не выходя из приложения.
Пользовательский сценарий оценки и отзыва может быть запущен в любое время на протяжении всего пути пользователя в вашем приложении. Пользователь может оценить ваше приложение по шкале от 1 до 5 и оставить отзыв. Отзыв является опциональным.
Пример реализации
Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать SDK отзывов и оценок.
Пример пользовательского сценария
![img](/help/zh/assets/images/user-scenario-967297419e4e84d53a4f61643209d8fb.webp)
Условия корректной работы SDK
Для работы SDK оценок и отзывов необходимо соблюдение следующих условий.
- ОС Android версии 7.0 или выше.
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь авторизован в RuStore.
Приложение должно быть опубликовано в RuStore .
Когда запрашивать оценку и отзыв
Следуйте рекомендациям, чтобы решить, в какой момент запросить оценку и отзыв о приложении у пользователя (см. ниже).
- Запускайте процесс после того, как пользователь достаточно использовал ваше приложение.
- Не запускайте процесс слишком часто — это ухудшит опыт пользователя вашего приложения и ограничит использование SDK оценок.
- Не используйте призывы к действию, например, кнопку «Оценить приложение» — пользователь уже мог исчерпать лимит запуска процесса.
- Ваше приложение не должно задавать какие-либо вопросы пользователю перед запуском или во время процесса, в том числе вопросы об их мнении (например, «Вам нравится приложение?») или прогнозирующие вопросы (например, «Вы бы поставили этому приложению 5 звёзд?»).
Рекомендации к дизайну
Следуйте рекомендациям, чтобы решить, как интегрировать процесс.
- Отображайте процесс как есть, без какого-либо вмешательства или изменения текущего дизайна, включая размер, непрозрачность, форму и д ругие свойства.
- Ничего не добавляйте поверх или по краям процесса.
- Процесс должен открываться поверх всех слоёв. После запуска процесса не закрывайте его. Процесс завершится самостоятельно после явного действия пользователя.
Подключение в проект
- Скопируйте содержимое папки
Plugins
из официального репозитория RuStore на GitFlic в папкуPlugins
внутри своего проекта. - Перезапустите Unreal Engine.
- В списке плагинов (Edit > Plugins > Project > Mobile) отметьте плагины RuStoreReview и RuStoreCore.
- В файле
YourProject.Build.cs
в спискеPublicDependencyModuleNames
подключите модули модулиRuStoreCore
иRuStoreReview
. - В настройках проекта (Edit > Project Settings > Android) установите параметр Minimum SDK Version на уровень не ниже 24 и параметр Target SDK Version — не ниже 31.
Раб ота с оценками
Подготовка к работе с оценками
Для работы с оценками необходимо инициализировать RuStoreReviewManager
.
URuStoreReviewManager::Instance()->Init();
Пример использования в Blueprints:
![img](/help/zh/assets/images/init-up0-f2e7d0d3a6f57401d481fdc82335911a.webp)
![](/help/zh/assets/images/init-up0-f2e7d0d3a6f57401d481fdc82335911a.webp)
Вызов Init()
привязывает объект к корню сцены, и, если дальнейшая работа с объектом больше не планируется, для освобождения памяти необходимо выполнить метод Dispose()
.
Вызов метода Dispose
отвяжет объект от корня и безопасно завершит все отправленные запросы.
URuStoreReviewManager::Instance()->Dispose();
![](/help/zh/assets/images/dispose-up0-1a9292d61d58cc053e3209c75caa426f.webp)
Если вам нужно проверить факт инициализации библиотеки, используйте метод getIsInitialized()
, его значени е true
, если библиотека инициализирована, и false
, если Init
еще не был вызван.
![](/help/zh/assets/images/getIsInitialized-up0-4756a5e0af0ed430ed1e90c8e7d88be8.webp)
Подготовка к запуску оценки приложения
ВызовитеRequestReviewFlow()
заранее, перед вызовом LaunchReviewFlow()
, чтобы подготовить необходимую информацию для отображения экрана. Срок жизни ReviewInfo
— около пяти минут.
RequestReviewFlow
long requestId = URuStoreReviewManager::Instance()->RequestReviewFlow(
[](long requestId) {
// Process response
},
[](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
// Process error
}
);
Пример использования в Blueprints:
![](/help/zh/assets/images/unreal-preparation-up0-f94cc9138f1f6713dcc48cd6cf9b5aa4.webp)
Обратный вызов (callback) Failure
возвращает структуру FURuStoreError
с информацией об ошибке в параметре Error
.
Запуск оценки приложения
Для запуска формы запроса оценки и отзыва о приложении у пользователя вызовите методLaunchReviewFlow()
, используя ранее полученный ReviewInfo
.
Каждый запрос получает уникальный в рамках одного запуска приложения requestId
. Каждое событие возвращает requestId
запроса, породившего это событие.
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.
Обработка ошибок
Возникающие ошибки можно получить в событияхFailure
.
** Структура ошибки **
USTRUCT(BlueprintType)
struct RUSTORECORE_API FURuStoreError
{
GENERATED_USTRUCT_BODY()
FURuStoreError()
{
name = "";
description = "";
}
UPROPERTY(BlueprintReadOnly)
FString name;
UPROPERTY(BlueprintReadOnly)
FString description;
};
name
— название ошибки.description
— описание ошибки.
** Возможные ошибки **
RuStoreNotInstalledException
— на устройстве пользователя не установлен RuStore;RuStoreOutdatedException
— версия RuStore, установленная на устройстве пользователя, не поддерживает данный SDK;RuStoreUserUnauthorizedException
— пользователь не авторизован в RuStore;RuStoreRequestLimitReached
— с момента последнего отображения процесса прошло слишком мало времени;RuStoreReviewExists
— этот пользователь уже оценил ваше приложение;RuStoreInvalidReviewInfo
— проблемы сReviewInfo
;RuStoreException
— базовая ошибка RuStore, от которой наследуются остальные ошибки.