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


Namespaces

Name

Classes

Name
class RuStore::UnityInstallReferrer::InstallReferrerClient — SDK Install Referrer — an attribution tool for advertising and analytics systems. It allows you to track the number of installations of your app downloaded from RuStore via advertising links.

Source code

using UnityEngine;
using System;
using RuStore.UnityInstallReferrer.Callbacks;
using RuStore.UnityInstallReferrer.Internal;
using RuStore.UnityInstallReferrer.Model;

namespace RuStore.UnityInstallReferrer {

    public class InstallReferrerClient {

        public static string PluginVersion = "10.5.0";

        private static InstallReferrerClient _instance;
        private static bool _isInstanceInitialized;

        private AndroidJavaObject _clientWrapper;
        private bool _isInitialized;

        public bool IsInitialized => _isInitialized;

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

                return _instance;
            }
        }

        private InstallReferrerClient() {
        }

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

            if (_isInitialized) {
                Debug.LogError("Error: RuStore Install Referrer is already initialized");
                return false;
            }

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

            using (var clientJavaClass = new AndroidJavaClass("ru.rustore.unitysdk.installreferrer.RuStoreUnityInstallReferrerClient")) {
                _clientWrapper = clientJavaClass.GetStatic<AndroidJavaObject>("INSTANCE");
            }

            _isInitialized = true;

            return true;
        }

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

            var listener = new GetInstallReferrerListener(onFailure, onSuccess);
            _clientWrapper.Call("getInstallReferrer", listener);
        }

        public void SendFsaEvent(FsaEvent fsaEvent, Action<RuStoreError> onFailure, Action onSuccess) {
            if (!IsPlatformSupported(onFailure)) return;

            var json = JsonSerializerProvider.Serialize(fsaEvent);

            var listener = new SendFsaEventListener(onFailure, onSuccess);
            _clientWrapper.Call("sendFsaEvent", json, listener);
        }

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

                return false;
            }

            return true;
        }
    }
}