#include "TapADN.h"
|
#include "Taptap.h"
|
|
#if PLATFORM_ANDROID
|
|
#include "Android/AndroidJNI.h"
|
#endif
|
|
TapADN::FTapADNADPlayOverEventHandle TapADN::TapADNADPlayOverEventHandle;
|
TapADN::FTapADNADCacheOverEventHandle TapADN::TapADNADCacheOverEventHandle;
|
|
void TapADN::TapADNRequestPermissionIfNecessary()
|
{
|
#if PLATFORM_ANDROID
|
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
|
{
|
bool isOptional = false;
|
static jmethodID methodId = FJavaWrapper::FindMethod(Env,
|
FJavaWrapper::GameActivityClassID, "tapADNRequestPermissionIfNecessary", "()V", isOptional);
|
if (methodId == 0)
|
{
|
TAPLOG_D(TEXT("没找到方法tapADNRequestPermissionIfNecessary"));
|
return;
|
}
|
TAPLOG_D(TEXT("找到方法tapADNRequestPermissionIfNecessary"));
|
FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId);
|
}
|
else
|
{
|
TAPLOG_D(TEXT("没找到JNIEnv"));
|
}
|
#else
|
TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
|
#endif
|
}
|
|
void TapADN::TapADNInit(
|
int32 mediaID,
|
FString mediaName,
|
FString mediaKey,
|
bool enableDebug,
|
int32 avatarLevel)
|
{
|
#if PLATFORM_ANDROID
|
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
|
{
|
bool isOptional = false;
|
static jmethodID methodId = FJavaWrapper::FindMethod(Env,
|
FJavaWrapper::GameActivityClassID,
|
"tapADNInit",
|
"(ILjava/lang/String;Ljava/lang/String;ZI)V", isOptional);
|
if (methodId == 0)
|
{
|
TAPLOG_D(TEXT("没找到方法TapADNInit"));
|
return;
|
}
|
TAPLOG_D(TEXT("找到方法TapADNInit"));
|
|
auto paramMediaName = FJavaHelper::ToJavaString(Env,mediaName);
|
auto paramMediaKey = FJavaHelper::ToJavaString(Env,mediaKey);
|
FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId,
|
mediaID,
|
*paramMediaName,
|
*paramMediaKey,
|
enableDebug,
|
avatarLevel);
|
}
|
else
|
{
|
TAPLOG_D(TEXT("没找到JNIEnv"));
|
}
|
#else
|
TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
|
#endif
|
}
|
|
void TapADN::TapADNRequestRewardAD(int32 spaceID, FString rewardName, int32 rewardAmount)
|
{
|
#if PLATFORM_ANDROID
|
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
|
{
|
bool isOptional = false;
|
static jmethodID methodId = FJavaWrapper::FindMethod(Env,
|
FJavaWrapper::GameActivityClassID,
|
"tapADNRequestRewardAD",
|
"(ILjava/lang/String;I)V", isOptional);
|
if (methodId == 0)
|
{
|
TAPLOG_D(TEXT("没找到方法tapADNRequestRewardAD"));
|
return;
|
}
|
TAPLOG_D(TEXT("找到方法tapADNRequestRewardAD"));
|
|
auto paramRewardName = FJavaHelper::ToJavaString(Env,rewardName);
|
FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId,
|
spaceID,
|
*paramRewardName,
|
rewardAmount);
|
}
|
else
|
{
|
TAPLOG_D(TEXT("没找到JNIEnv"));
|
}
|
#else
|
TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
|
TapADNADCacheOverEventHandle.Execute();
|
#endif
|
}
|
|
void TapADN::TapADNPlayRewardAD()
|
{
|
#if PLATFORM_ANDROID
|
if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
|
{
|
bool isOptional = false;
|
static jmethodID methodId = FJavaWrapper::FindMethod(Env,
|
FJavaWrapper::GameActivityClassID,
|
"tapADNPlayRewardAD",
|
"()V", isOptional);
|
if (methodId == 0)
|
{
|
TAPLOG_D(TEXT("没找到方法TapADNPlayRewardAD"));
|
return;
|
}
|
TAPLOG_D(TEXT("找到方法TapADNPlayRewardAD"));
|
|
FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId
|
);
|
}
|
else
|
{
|
TAPLOG_D(TEXT("没找到JNIEnv"));
|
}
|
#else
|
TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
|
TapADNADPlayOverEventHandle.Execute();
|
#endif
|
}
|
#if PLATFORM_ANDROID
|
JNI_METHOD void Java_com_epicgames_unreal_GameActivity_nativeRewardAdPlayOver(JNIEnv* jenv,jobject thiz)
|
{
|
TAPLOG_D(TEXT("广告播放完毕"))
|
AsyncTask(ENamedThreads::GameThread, [=]()
|
{
|
TapADN::TapADNADPlayOverEventHandle.Execute();
|
});
|
}
|
JNI_METHOD void Java_com_epicgames_unreal_GameActivity_nativeRewardRequestOver(JNIEnv* jenv,jobject thiz)
|
{
|
TAPLOG_D(TEXT("广告缓存完毕完毕"))
|
AsyncTask(ENamedThreads::GameThread, [=]()
|
{
|
TapADN::TapADNADCacheOverEventHandle.Execute();
|
});
|
}
|
#endif
|