Skip to main content

1.0.0

General

RuStore In-app Review SDK prompts the user to rate your app and leave feedback on RuStore without exiting the app.

Rating and feedback user scenarios may be run at any time throughout the user’s path in your app. The user can rate your app from 1 to 5 and leave feedback. Feedback is optional.

Implementation example

Check out the application example to learn how to properly integrate the Feedback SDK.

User scenario example

img

Prerequisites

For rating and feedback SDK to operate correctly, the following conditions need to be met:

  • Android 7.0 or later.
  • The current version of RuStore is installed on the user's device
  • The user is authorized in RuStore
  • The app must be published in RuStore

When to ask for feedback

Use the tips below to decide when to ask the user to rate and leave feedback: (See below

  • Start the process once the user has been using your app for long enough.

  • Avoid starting it too often as this will impair your app’s user experience and limit the use or SDK ratings.

  • Avoid using calls to action like “Rate App” button as the user could have already reached the process starting limit.

  • Your app should not ask the user any questions before the start or while the process is running, including their opinion (“Do you like the app?”) or predictive questions (“Would you give this app 5 stars?”).

Design recommendations

Use the tips below to decide how to integrate the process:

  • Display the process as is, without any intervention or modification of existing design, including size, opacity, shape and other properties.

  • Add nothing on top or on sides of the process.

  • The process should open on top of all layers. Don’t close the process after starting. The process will close by itself after an express action by the user.

Connecting to project

  1. Copy the plugin projects from the official RuStore repository into the GitFlic directory.
  2. Open the Android project from the godot_plugin_libraries folder in your IDE.
  3. Move the godot-lib.xxx.yyy.template_release.aar package to godot_plugin_libraries / libs, where xxx.yyy is the version of your Godot Engine.
  4. Build the project via gradle assemble command.

If the build is successful, files will be created in godot_example / android / plugins:

  • RuStoreGodotReview.gdap
  • RuStoreGodotReview.aar
  • RuStoreGodotCore.gdap
  • RuStoreGodotCore.aar
caution

Note that the plugin libraries must be built for your version of the Godot engine.

  1. Copy the contents of godot_example/android/plugins to your_project/android/plugins.

  2. Check the Ru Store Godot Review and Ru Store Godot Core plugins in the Plugins list in Android build preset.

Working with user ratings

Getting started with user ratings

To work with evaluations, you need to create an instance of RuStoreGodotReviewManager.

Initialisation

var _review_client: RuStoreGodotReviewManager = null

func _ready:
_review_client = RuStoreGodotReviewManager.get_instance()

Preparing to launch app evaluation

Call request_review_flow in advance before calling launch_review_flow, to prepare necessary information to display. ReviewInfo has a lifetime — about five minutes.

You must subscribe to events once before using this method:

  • on_request_review_flow_success;
  • on_request_review_flow_failure.
Подписка на события
func _ready():
# Initialization of _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()

The on_request_review_flow_failure callback returns RuStoreError with error information. The error structure of RuStoreError is described in Error Handling.

Launching app evaluation

To run the feedback form in your app, call the launch_review_flow method using the previously obtained ReviewInfo.

You must subscribe to events once before using this method:

  • on_request_review_flow_success;
  • on_request_review_flow_failure.
Подписка на события
func _ready():
# Initialization of _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()
Await notification that the user has completed the form in on_launch_review_flow_success or on_launch_review_flow_failure to proceed with the application.

The on_launch_review_flow_failure callback returns RuStoreError with error information. The error structure of RuStoreError is described in Error Handling.

After completing the feedback form, regardless of the outcome (Success or Failure), it is not recommended to display any additional forms related to assessment and feedback. If called frequently, launch_review_flow will not display the feedback window to the user, as the allowed display is regulated by RuStore.

Errors processing

The errors that occur can be retrieved in the events *_failure.

Error structure

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 – error description..

Possible errors

  • RuStoreNotInstalledException — RuStore not installed on user's device;
  • RuStoreOutdatedException — RuStore, installed on the user's device, does not support payment processing functions.;
  • RuStoreUserUnauthorizedException — user not authorized on RuStore;
  • RuStoreRequestLimitReached — not enough time has passed since the process was last shown.;
  • RuStoreReviewExists — this user has already rated your app.;
  • RuStoreInvalidReviewInfo — problems with ReviewInfo;
  • RuStoreException — basic RuStore error, from which all other errors are inherited..