API/Autodoc/Files/RuStoreAppUpdateManager.cs.en.md
Namespaces
| Name |
|---|
Classes
| Name | |
|---|---|
| class | RuStore::AppUpdate::RuStoreAppUpdateManager — The class implements the API for three update methods. Currently supported: deferred, silent (without UI from RuStore) and forced update. |
Source code
using UnityEngine;
using System;
using RuStore.Internal;
using RuStore.AppUpdate.Internal;
using System.Collections.Generic;
namespace RuStore.AppUpdate {
public class RuStoreAppUpdateManager {
public static string PluginVersion = "10.5.0";
private static RuStoreAppUpdateManager _instance;
private static bool _isInstanceInitialized;
private bool _isInitialized;
public bool IsInitialized => _isInitialized;
private AndroidJavaObject _managerWrapper;
private Dictionary<IInstallStateUpdateListener, InstallStateUpdateListener> _stateListeners = new Dictionary<IInstallStateUpdateListener, InstallStateUpdateListener>();
public static RuStoreAppUpdateManager Instance {
get {
if (!_isInstanceInitialized) {
_isInstanceInitialized = true;
_instance = new RuStoreAppUpdateManager();
}
return _instance;
}
}
private RuStoreAppUpdateManager() {
}
public bool Init() {
if (_isInitialized) {
Debug.LogError("Error: RuStore AppUpdate 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.appupdate.RuStoreUnityAppUpdateManager")) {
_managerWrapper = managerClass.GetStatic<AndroidJavaObject>("INSTANCE");
}
_managerWrapper.Call("init", "unity");
_isInitialized = true;
return true;
}
public void GetAppUpdateInfo(Action<RuStoreError> onFailure, Action<AppUpdateInfo> onSuccess) {
if (!IsPlatformSupported(onFailure)) {
return;
}
var listener = new AppUpdateInfoResponseListener(onFailure, onSuccess);
_managerWrapper.Call("getAppUpdateInfo", listener);
}
public void RegisterListener(IInstallStateUpdateListener listener) {
if (!IsPlatformSupported(null)) {
return;
}
if (!_stateListeners.ContainsKey(listener)) {
var stateListener = new InstallStateUpdateListener(listener);
_stateListeners[listener] = stateListener;
_managerWrapper.Call("registerListener", stateListener);
}
}
public void UnregisterListener(IInstallStateUpdateListener listener) {
if (!IsPlatformSupported(null)) {
return;
}
if (_stateListeners.ContainsKey(listener)) {
var stateListener = _stateListeners[listener];
_managerWrapper.Call("unregisterListener", stateListener);
_stateListeners.Remove(listener);
}
}
public void StartUpdateFlow(UpdateType updateType, Action<RuStoreError> onFailure, Action<UpdateFlowResult> onSuccess) {
if (!IsPlatformSupported(onFailure)) {
return;
}
var listener = new UpdateFlowResultListener(onFailure,
(result) => {
onSuccess?.Invoke((UpdateFlowResult)result);
});
_managerWrapper.Call("startUpdateFlow", updateType.ToString(), listener);
}
public bool IsImmediateUpdateAllowed() {
if (!IsPlatformSupported(null)) {
return false;
}
return _managerWrapper.Call<bool>("isImmediateUpdateAllowed");
}
public void CompleteUpdate(UpdateType updateType, Action<RuStoreError> onFailure) {
if (!IsPlatformSupported(onFailure)) {
return;
}
var listener = new AppUpdateErrorListener(onFailure);
_managerWrapper.Call("completeUpdate", updateType.ToString(), listener);
}
private bool IsPlatformSupported(Action<RuStoreError> onFailure) {
if (Application.platform != RuntimePlatform.Android) {
onFailure?.Invoke(new RuStoreError() {
name = "RuStoreAppUpdateManager Error",
description = "Unsupported platform"
});
return false;
}
return true;
}
}
}
- Страницы
- AppUpdateErrorListener.cs.en
- AppUpdateErrorListener.cs
- AppUpdateInfo.cs.en
- AppUpdateInfo.cs
- AppUpdateInfoResponseListener.cs.en
- AppUpdateInfoResponseListener.cs
- Callbacks.en
- Callbacks
- Callbacks_Files.en
- Callbacks_Files
- CompleteUpdate.cs.en
- CompleteUpdate.cs
- Data.en
- Data
- GetAppUpdateInfo.cs.en
- GetAppUpdateInfo.cs
- IInstallStateUpdateListener.cs.en
- IInstallStateUpdateListener.cs
- Init.cs.en
- Init.cs
- InstallState.cs.en
- InstallState.cs
- InstallStateUpdateListener.cs.en
- InstallStateUpdateListener.cs
- Internal.en
- Internal
- IsImmediateUpdateAllowed.cs.en
- IsImmediateUpdateAllowed.cs
- RegisterListener.cs.en
- RegisterListener.cs
- RuStoreAppUpdateManager.cs.en
- RuStoreAppUpdateManager.cs
- RuStoreAppUpdateManager_Instance.cs.en
- RuStoreAppUpdateManager_Instance.cs
- Runtime.en
- Runtime
- StartUpdateFlow.cs.en
- StartUpdateFlow.cs
- UnregisterListener.cs.en
- UnregisterListener.cs
- UpdateFlowResult.cs.en
- UpdateFlowResult.cs
- UpdateFlowResultListener.cs.en
- UpdateFlowResultListener.cs
- UpdateType.cs.en
- UpdateType.cs
- docs.en
- docs
- examples.en
- examples
- ru.rustore.update.en
- ru.rustore.update
- AppUpdateErrorListener.cs.en
- AppUpdateErrorListener.cs
- AppUpdateInfo.cs.en
- AppUpdateInfo.cs
- AppUpdateInfoResponseListener.cs.en
- AppUpdateInfoResponseListener.cs
- Callbacks.en
- Callbacks
- Callbacks_Files.en
- Callbacks_Files
- CompleteUpdate.cs.en
- CompleteUpdate.cs
- Data.en
- Data
- GetAppUpdateInfo.cs.en
- GetAppUpdateInfo.cs
- IInstallStateUpdateListener.cs.en
- IInstallStateUpdateListener.cs
- Init.cs.en
- Init.cs
- InstallState.cs.en
- InstallState.cs
- InstallStateUpdateListener.cs.en
- InstallStateUpdateListener.cs
- Internal.en
- Internal
- IsImmediateUpdateAllowed.cs.en
- IsImmediateUpdateAllowed.cs
- RegisterListener.cs.en
- RegisterListener.cs
- RuStoreAppUpdateManager.cs.en
- RuStoreAppUpdateManager.cs
- RuStoreAppUpdateManager_Instance.cs.en
- RuStoreAppUpdateManager_Instance.cs
- Runtime.en
- Runtime
- StartUpdateFlow.cs.en
- StartUpdateFlow.cs
- UnregisterListener.cs.en
- UnregisterListener.cs
- UpdateFlowResult.cs.en
- UpdateFlowResult.cs
- UpdateFlowResultListener.cs.en
- UpdateFlowResultListener.cs
- UpdateType.cs.en
- UpdateType.cs
- docs.en
- docs
- examples.en
- examples
- ru.rustore.update.en
- ru.rustore.update