API/Autodoc/Files/RuStoreReviewManager.cs.en.md


Namespaces

Name

Classes

Name
class RuStore::Review::RuStoreReviewManager — A class for working with ratings and reviews. Provides an API for launching a UI form that allows the user to leave a rating and review about your app in “RuStore”.

Source code

using UnityEngine;
using System;
using RuStore.Internal;
using RuStore.Response.Internal;

namespace RuStore.Review {

    public class RuStoreReviewManager {

        public static string PluginVersion = "10.5.0";

        private static RuStoreReviewManager _instance;
        private static bool _isInstanceInitialized;

        private bool _isInitialized;

        public bool IsInitialized => _isInitialized;
        private AndroidJavaObject _managerWrapper;

        public static RuStoreReviewManager Instance {
            get {
                if (!_isInstanceInitialized) {
                    _isInstanceInitialized = true;
                    _instance = new RuStoreReviewManager();
                }
                return _instance;
            }
        }

        private RuStoreReviewManager() {
        }

        public bool Init() {
            if (_isInitialized) {
                Debug.LogError("Error: RuStore In-App Review Manager is already initialized");
                return false;
            }

            if (Application.platform != RuntimePlatform.Android) {
                return false;
            }

            CallbackHandler.InitInstance();
            ActivityInstaller.Instance.Install();

            using (var managerClass = new AndroidJavaClass("ru.rustore.unitysdk.review.RuStoreUnityReviewManager")) {
                _managerWrapper = managerClass.GetStatic<AndroidJavaObject>("INSTANCE");
            }

            _managerWrapper.Call("init", "unity");
            _isInitialized = true;

            return true;
        }

        public void RequestReviewFlow(Action<RuStoreError> onFailure, Action onSuccess) {
            if (!IsPlatformSupported(onFailure)) {
                return;
            }

            var listener = new ReviewResponseListener(onFailure, onSuccess);
            _managerWrapper.Call("requestReviewFlow", listener);
        }

        public void LaunchReviewFlow(Action<RuStoreError> onFailure, Action onSuccess) {
            if (!IsPlatformSupported(onFailure)) {
                return;
            }

            var listener = new ReviewResponseListener(onFailure, onSuccess);
            _managerWrapper.Call("launchReviewFlow", listener);
        }

        private bool IsPlatformSupported(Action<RuStoreError> onFailure) {
            if (Application.platform != RuntimePlatform.Android) {
                onFailure?.Invoke(new RuStoreError() {
                    name = "RuStoreReviewManagerError",
                    description = "Unsupported platform"
                });
                return false;
            }

            return true;
        }
    }
}