API/Autodoc/Files/URuStoreAppUpdateManager.cpp.md
Source code
// Copyright Epic Games, Inc. All Rights Reserved.
#include "URuStoreCore.h"
using namespace RuStoreSDK;
const FString URuStoreAppUpdateManager::PluginVersion = "10.5.0";
URuStoreAppUpdateManager* URuStoreAppUpdateManager::_instance = nullptr;
bool URuStoreAppUpdateManager::_bIsInstanceInitialized = false;
bool URuStoreAppUpdateManager::GetIsInitialized()
{
return bIsInitialized;
}
URuStoreAppUpdateManager* URuStoreAppUpdateManager::Instance()
{
if (!_bIsInstanceInitialized)
{
_bIsInstanceInitialized = true;
_instance = NewObject<URuStoreAppUpdateManager>(GetTransientPackage());
}
return _instance;
}
void URuStoreAppUpdateManager::SetAllowNativeErrorHandling(bool value)
{
_bAllowNativeErrorHandling = value;
if (bIsInitialized)
{
_clientWrapper->CallVoid("setErrorHandling", value);
}
}
bool URuStoreAppUpdateManager::Init()
{
if (!URuStoreCore::IsPlatformSupported()) return false;
if (bIsInitialized) return false;
_instance->AddToRoot();
URuStoreCore::Instance()->Init();
auto clientJavaClass = MakeShared<AndroidJavaClass>("ru/rustore/unrealsdk/appupdate/RuStoreUnrealAppUpdateManager");
_clientWrapper = clientJavaClass->GetStaticAJObject("INSTANCE");
_clientWrapper->CallVoid("init", FString("unreal"));
bIsInitialized = true;
RegisterListener(this);
return true;
}
void URuStoreAppUpdateManager::Dispose()
{
if (bIsInitialized)
{
UnregisterListener(this);
bIsInitialized = false;
ListenerRemoveAll();
delete _clientWrapper;
_instance->RemoveFromRoot();
}
}
void URuStoreAppUpdateManager::ConditionalBeginDestroy()
{
Super::ConditionalBeginDestroy();
Dispose();
if (_bIsInstanceInitialized) _bIsInstanceInitialized = false;
}
long URuStoreAppUpdateManager::GetAppUpdateInfo(TFunction<void(long, TSharedPtr<FURuStoreAppUpdateInfo, ESPMode::ThreadSafe>)> onSuccess, TFunction<void(long, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe>)> onFailure)
{
if (!URuStoreCore::IsPlatformSupported(onFailure)) return 0;
if (!bIsInitialized) return 0;
auto listener = ListenerBind(new AppUpdateInfoResponseListenerImpl(onSuccess, onFailure, [this](RuStoreListener* item) { ListenerUnbind(item); }));
_clientWrapper->CallVoid("getAppUpdateInfo", listener->GetJWrapper());
return listener->GetId();
}
bool URuStoreAppUpdateManager::CheckIsImmediateUpdateAllowed()
{
if (!URuStoreCore::IsPlatformSupported()) return false;
if (!bIsInitialized) return false;
return _clientWrapper->CallBool("isImmediateUpdateAllowed");
}
int64 URuStoreAppUpdateManager::RegisterListener(TScriptInterface<IRuStoreInstallStateUpdateListenerInterface> stateListener)
{
if (!URuStoreCore::IsPlatformSupported()) return 0;
if (!bIsInitialized) return 0;
if (!stateListeners.Contains(stateListener.GetInterface()))
{
auto listener = ListenerBind(new InstallStateUpdateListenerImpl(
[stateListener](long listenerId, TSharedPtr<FURuStoreInstallState, ESPMode::ThreadSafe> state) {
((IRuStoreInstallStateUpdateListenerInterface*)stateListener.GetInterface())->OnStateUpdated_Implementation(listenerId, *state);
}
));
stateListeners.Add(stateListener.GetInterface(), listener);
_clientWrapper->CallVoid("registerListener", listener->GetJWrapper());
return listener->GetId();
}
return 0;
}
bool URuStoreAppUpdateManager::UnregisterListener(TScriptInterface<IRuStoreInstallStateUpdateListenerInterface> stateListener)
{
if (!URuStoreCore::IsPlatformSupported()) return false;
if (!bIsInitialized) return false;
if (stateListeners.Contains(stateListener.GetInterface()))
{
auto listener = stateListeners[stateListener.GetInterface()];
_clientWrapper->CallVoid("unregisterListener", listener->GetJWrapper());
ListenerUnbind(listener);
return true;
}
return false;
}
long URuStoreAppUpdateManager::StartUpdateFlow(EURuStoreAppUpdateOptions appUpdateOptions, TFunction<void(long, EURuStoreUpdateFlowResult)> onSuccess, TFunction<void(long, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe>)> onFailure)
{
if (!URuStoreCore::IsPlatformSupported(onFailure)) return 0;
if (!bIsInitialized) return 0;
auto _onSuccess = [onSuccess](long requestId, int result) { onSuccess(requestId, (EURuStoreUpdateFlowResult)(result)); };
auto listener = ListenerBind(new UpdateFlowResultListenerImpl(_onSuccess, onFailure, [this](RuStoreListener* item) { ListenerUnbind(item); }));
switch (appUpdateOptions)
{
case EURuStoreAppUpdateOptions::DELAYED:
_clientWrapper->CallVoid("startUpdateFlowDelayed", listener->GetJWrapper());
break;
case EURuStoreAppUpdateOptions::SILENT:
_clientWrapper->CallVoid("startUpdateFlowSilent", listener->GetJWrapper());
break;
case EURuStoreAppUpdateOptions::IMMEDIATE:
_clientWrapper->CallVoid("startUpdateFlowImmediate", listener->GetJWrapper());
break;
default:
_clientWrapper->CallVoid("startUpdateFlowDelayed", listener->GetJWrapper());
}
return listener->GetId();
}
long URuStoreAppUpdateManager::CompleteUpdate(EURuStoreAppUpdateOptions appUpdateOptions, TFunction<void(long, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe>)> onFailure)
{
if (!URuStoreCore::IsPlatformSupported(onFailure)) return 0;
if (!bIsInitialized) return 0;
auto listener = ListenerBind(new AppUpdateErrorListenerImpl(onFailure, [this](RuStoreListener* item) { ListenerUnbind(item); }));
switch (appUpdateOptions)
{
case EURuStoreAppUpdateOptions::FLEXIBLE:
_clientWrapper->CallVoid("completeUpdateFlexible", listener->GetJWrapper());
break;
case EURuStoreAppUpdateOptions::SILENT:
_clientWrapper->CallVoid("completeUpdateSilent", listener->GetJWrapper());
break;
default:
_clientWrapper->CallVoid("completeUpdateFlexible", listener->GetJWrapper());
}
return listener->GetId();
}
void URuStoreAppUpdateManager::GetAppUpdateInfo(int64& requestId)
{
requestId = GetAppUpdateInfo(
[this](long requestId, TSharedPtr<FURuStoreAppUpdateInfo, ESPMode::ThreadSafe> response) {
OnGetAppUpdateInfoResponse.Broadcast(requestId, *response);
},
[this](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
OnGetAppUpdateInfoError.Broadcast(requestId, *error);
}
);
}
void URuStoreAppUpdateManager::StartUpdateFlow(int64& requestId, EURuStoreAppUpdateOptions appUpdateOptions)
{
requestId = StartUpdateFlow(
appUpdateOptions,
[this](long requestId, EURuStoreUpdateFlowResult response) {
OnStartUpdateFlowResponse.Broadcast(requestId, response);
},
[this](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
OnStartUpdateFlowError.Broadcast(requestId, *error);
}
);
}
void URuStoreAppUpdateManager::CompleteUpdate(int64& requestId, EURuStoreAppUpdateOptions appUpdateOptions)
{
requestId = CompleteUpdate(
appUpdateOptions,
[this](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
OnCompleteUpdateError.Broadcast(requestId, *error);
}
);
}
void URuStoreAppUpdateManager::OnStateUpdated_Implementation(int64 listenerId, FURuStoreInstallState& state)
{
OnStateUpdatedInstanceEvent.Broadcast(listenerId, state);
}
- Страницы
- AndroidJavaClass.cpp.en
- AndroidJavaClass.cpp
- AndroidJavaClass.h.en
- AndroidJavaClass.h
- AndroidJavaLog.cpp.en
- AndroidJavaLog.cpp
- AndroidJavaLog.h.en
- AndroidJavaLog.h
- AndroidJavaObject.cpp.en
- AndroidJavaObject.cpp
- AndroidJavaObject.h.en
- AndroidJavaObject.h
- AppUpdateErrorListenerImpl.cpp.en
- AppUpdateErrorListenerImpl.cpp
- AppUpdateErrorListenerImpl.h.en
- AppUpdateErrorListenerImpl.h
- AppUpdateInfoResponseListenerImpl.cpp.en
- AppUpdateInfoResponseListenerImpl.cpp
- AppUpdateInfoResponseListenerImpl.h.en
- AppUpdateInfoResponseListenerImpl.h
- AsyncNodes.en
- AsyncNodes
- AsyncNodes_Files.en
- AsyncNodes_Files
- CallbackHandler.cpp.en
- CallbackHandler.cpp
- CallbackHandler.h.en
- CallbackHandler.h
- EURuStoreAppUpdateOptions.h.en
- EURuStoreAppUpdateOptions.h
- EURuStoreInstallErrorCode.h.en
- EURuStoreInstallErrorCode.h
- EURuStoreInstallStatus.h.en
- EURuStoreInstallStatus.h
- EURuStoreUpdateAvailability.h.en
- EURuStoreUpdateAvailability.h
- EURuStoreUpdateFlowResult.h.en
- EURuStoreUpdateFlowResult.h
- ErrorConverter.cpp.en
- ErrorConverter.cpp
- ErrorConverter.h.en
- ErrorConverter.h
- ErrorListener.cpp.en
- ErrorListener.cpp
- ErrorListener.h.en
- ErrorListener.h
- FURuStoreAppUpdateInfo.h.en
- FURuStoreAppUpdateInfo.h
- FURuStoreError.h.en
- FURuStoreError.h
- FURuStoreFeatureAvailabilityResult.h.en
- FURuStoreFeatureAvailabilityResult.h
- FURuStoreInstallState.h.en
- FURuStoreInstallState.h
- FeatureAvailabilityListenerImpl.cpp.en
- FeatureAvailabilityListenerImpl.cpp
- FeatureAvailabilityListenerImpl.h.en
- FeatureAvailabilityListenerImpl.h
- IAndroidClasses.h.en
- IAndroidClasses.h
- IRuStoreListener.java.en
- IRuStoreListener.java
- InstallStateUpdateListenerImpl.cpp.en
- InstallStateUpdateListenerImpl.cpp
- InstallStateUpdateListenerImpl.h.en
- InstallStateUpdateListenerImpl.h
- Java.en
- Java
- JavaActivity.cpp.en
- JavaActivity.cpp
- JavaActivity.h.en
- JavaActivity.h
- JavaApplication.cpp.en
- JavaApplication.cpp
- JavaApplication.h.en
- JavaApplication.h
- JavaMethodSignature.cpp.en
- JavaMethodSignature.cpp
- JavaMethodSignature.h.en
- JavaMethodSignature.h
- JavaTypeConverter.cpp.en
- JavaTypeConverter.cpp
- JavaTypeConverter.h.en
- JavaTypeConverter.h
- Plugins.en
- Plugins
- Private.en
- Private
- Private_Files.en
- Private_Files
- Public.en
- Public
- Public_Files.en
- Public_Files
- ResponseListener.h.en
- ResponseListener.h
- RuStoreAppUpdate.Build.cs.en
- RuStoreAppUpdate.Build.cs
- RuStoreAppUpdate.cpp.en
- RuStoreAppUpdate.cpp
- RuStoreAppUpdate.h.en
- RuStoreAppUpdate.h
- RuStoreAppUpdate_Files.en
- RuStoreAppUpdate_Files
- RuStoreCore.Build.cs.en
- RuStoreCore.Build.cs
- RuStoreCore.cpp.en
- RuStoreCore.cpp
- RuStoreCore.h.en
- RuStoreCore.h
- RuStoreCoreUtils.java.en
- RuStoreCoreUtils.java
- RuStoreCore_Files.en
- RuStoreCore_Files
- RuStoreImage.java.en
- RuStoreImage.java
- RuStoreListener.cpp.en
- RuStoreListener.cpp
- RuStoreListener.h.en
- RuStoreListener.h
- SimpleResponseListener.cpp.en
- SimpleResponseListener.cpp
- SimpleResponseListener.h.en
- SimpleResponseListener.h
- SimpleResponseListenerT.h.en
- SimpleResponseListenerT.h
- Source.en
- Source
- Source_Files.en
- Source_Files
- UCompleteUpdateNode.cpp.en
- UCompleteUpdateNode.cpp
- UCompleteUpdateNode.h.en
- UCompleteUpdateNode.h
- UGetAppUpdateInfoNode.cpp.en
- UGetAppUpdateInfoNode.cpp
- UGetAppUpdateInfoNode.h.en
- UGetAppUpdateInfoNode.h
- URuStoreAppUpdateManager.cpp.en
- URuStoreAppUpdateManager.cpp
- URuStoreAppUpdateManager.h.en
- URuStoreAppUpdateManager.h
- URuStoreCore.cpp.en
- URuStoreCore.cpp
- URuStoreCore.h.en
- URuStoreCore.h
- URuStoreInstallStateUpdateListenerInterface.h
- UStartUpdateFlowNode.cpp.en
- UStartUpdateFlowNode.cpp
- UStartUpdateFlowNode.h.en
- UStartUpdateFlowNode.h
- UTextureDownloader.cpp.en
- UTextureDownloader.cpp
- UTextureDownloader.h.en
- UTextureDownloader.h
- UnrealPlayerImpl.cpp.en
- UnrealPlayerImpl.cpp
- UnrealPlayerImpl.h.en
- UnrealPlayerImpl.h
- UnrealPlayerWrapper.java.en
- UnrealPlayerWrapper.java
- UpdateFlowResultListenerImpl.cpp.en
- UpdateFlowResultListenerImpl.cpp
- UpdateFlowResultListenerImpl.h.en
- UpdateFlowResultListenerImpl.h
- docs.en
- docs
- unreal_example.en
- unreal_example
- AndroidJavaClass.cpp.en
- AndroidJavaClass.cpp
- AndroidJavaClass.h.en
- AndroidJavaClass.h
- AndroidJavaLog.cpp.en
- AndroidJavaLog.cpp
- AndroidJavaLog.h.en
- AndroidJavaLog.h
- AndroidJavaObject.cpp.en
- AndroidJavaObject.cpp
- AndroidJavaObject.h.en
- AndroidJavaObject.h
- AppUpdateErrorListenerImpl.cpp.en
- AppUpdateErrorListenerImpl.cpp
- AppUpdateErrorListenerImpl.h.en
- AppUpdateErrorListenerImpl.h
- AppUpdateInfoResponseListenerImpl.cpp.en
- AppUpdateInfoResponseListenerImpl.cpp
- AppUpdateInfoResponseListenerImpl.h.en
- AppUpdateInfoResponseListenerImpl.h
- AsyncNodes.en
- AsyncNodes
- AsyncNodes_Files.en
- AsyncNodes_Files
- CallbackHandler.cpp.en
- CallbackHandler.cpp
- CallbackHandler.h.en
- CallbackHandler.h
- EURuStoreAppUpdateOptions.h.en
- EURuStoreAppUpdateOptions.h
- EURuStoreInstallErrorCode.h.en
- EURuStoreInstallErrorCode.h
- EURuStoreInstallStatus.h.en
- EURuStoreInstallStatus.h
- EURuStoreUpdateAvailability.h.en
- EURuStoreUpdateAvailability.h
- EURuStoreUpdateFlowResult.h.en
- EURuStoreUpdateFlowResult.h
- ErrorConverter.cpp.en
- ErrorConverter.cpp
- ErrorConverter.h.en
- ErrorConverter.h
- ErrorListener.cpp.en
- ErrorListener.cpp
- ErrorListener.h.en
- ErrorListener.h
- FURuStoreAppUpdateInfo.h.en
- FURuStoreAppUpdateInfo.h
- FURuStoreError.h.en
- FURuStoreError.h
- FURuStoreFeatureAvailabilityResult.h.en
- FURuStoreFeatureAvailabilityResult.h
- FURuStoreInstallState.h.en
- FURuStoreInstallState.h
- FeatureAvailabilityListenerImpl.cpp.en
- FeatureAvailabilityListenerImpl.cpp
- FeatureAvailabilityListenerImpl.h.en
- FeatureAvailabilityListenerImpl.h
- IAndroidClasses.h.en
- IAndroidClasses.h
- IRuStoreListener.java.en
- IRuStoreListener.java
- InstallStateUpdateListenerImpl.cpp.en
- InstallStateUpdateListenerImpl.cpp
- InstallStateUpdateListenerImpl.h.en
- InstallStateUpdateListenerImpl.h
- Java.en
- Java
- JavaActivity.cpp.en
- JavaActivity.cpp
- JavaActivity.h.en
- JavaActivity.h
- JavaApplication.cpp.en
- JavaApplication.cpp
- JavaApplication.h.en
- JavaApplication.h
- JavaMethodSignature.cpp.en
- JavaMethodSignature.cpp
- JavaMethodSignature.h.en
- JavaMethodSignature.h
- JavaTypeConverter.cpp.en
- JavaTypeConverter.cpp
- JavaTypeConverter.h.en
- JavaTypeConverter.h
- Plugins.en
- Plugins
- Private.en
- Private
- Private_Files.en
- Private_Files
- Public.en
- Public
- Public_Files.en
- Public_Files
- ResponseListener.h.en
- ResponseListener.h
- RuStoreAppUpdate.Build.cs.en
- RuStoreAppUpdate.Build.cs
- RuStoreAppUpdate.cpp.en
- RuStoreAppUpdate.cpp
- RuStoreAppUpdate.h.en
- RuStoreAppUpdate.h
- RuStoreAppUpdate_Files.en
- RuStoreAppUpdate_Files
- RuStoreCore.Build.cs.en
- RuStoreCore.Build.cs
- RuStoreCore.cpp.en
- RuStoreCore.cpp
- RuStoreCore.h.en
- RuStoreCore.h
- RuStoreCoreUtils.java.en
- RuStoreCoreUtils.java
- RuStoreCore_Files.en
- RuStoreCore_Files
- RuStoreImage.java.en
- RuStoreImage.java
- RuStoreListener.cpp.en
- RuStoreListener.cpp
- RuStoreListener.h.en
- RuStoreListener.h
- SimpleResponseListener.cpp.en
- SimpleResponseListener.cpp
- SimpleResponseListener.h.en
- SimpleResponseListener.h
- SimpleResponseListenerT.h.en
- SimpleResponseListenerT.h
- Source.en
- Source
- Source_Files.en
- Source_Files
- UCompleteUpdateNode.cpp.en
- UCompleteUpdateNode.cpp
- UCompleteUpdateNode.h.en
- UCompleteUpdateNode.h
- UGetAppUpdateInfoNode.cpp.en
- UGetAppUpdateInfoNode.cpp
- UGetAppUpdateInfoNode.h.en
- UGetAppUpdateInfoNode.h
- URuStoreAppUpdateManager.cpp.en
- URuStoreAppUpdateManager.cpp
- URuStoreAppUpdateManager.h.en
- URuStoreAppUpdateManager.h
- URuStoreCore.cpp.en
- URuStoreCore.cpp
- URuStoreCore.h.en
- URuStoreCore.h
- URuStoreInstallStateUpdateListenerInterface.h
- UStartUpdateFlowNode.cpp.en
- UStartUpdateFlowNode.cpp
- UStartUpdateFlowNode.h.en
- UStartUpdateFlowNode.h
- UTextureDownloader.cpp.en
- UTextureDownloader.cpp
- UTextureDownloader.h.en
- UTextureDownloader.h
- UnrealPlayerImpl.cpp.en
- UnrealPlayerImpl.cpp
- UnrealPlayerImpl.h.en
- UnrealPlayerImpl.h
- UnrealPlayerWrapper.java.en
- UnrealPlayerWrapper.java
- UpdateFlowResultListenerImpl.cpp.en
- UpdateFlowResultListenerImpl.cpp
- UpdateFlowResultListenerImpl.h.en
- UpdateFlowResultListenerImpl.h
- docs.en
- docs
- unreal_example.en
- unreal_example