#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