leopard8352
2023-12-04 8871a733498c8d717714b83bb096b7738224541a
提交 | 用户 | 时间
8871a7 1 #include "TapADN.h"
L 2 #include "Taptap.h"
3
4 #if PLATFORM_ANDROID
5
6 #include "Android/AndroidJNI.h"
7 #endif
8
9 TapADN::FTapADNADPlayOverEventHandle TapADN::TapADNADPlayOverEventHandle;
10 TapADN::FTapADNADCacheOverEventHandle TapADN::TapADNADCacheOverEventHandle;
11
12 void TapADN::TapADNRequestPermissionIfNecessary()
13 {
14 #if PLATFORM_ANDROID
15     if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
16     {
17         bool isOptional = false;
18         static jmethodID methodId = FJavaWrapper::FindMethod(Env,
19                 FJavaWrapper::GameActivityClassID, "tapADNRequestPermissionIfNecessary", "()V", isOptional);
20         if (methodId == 0)
21         {
22             TAPLOG_D(TEXT("没找到方法tapADNRequestPermissionIfNecessary"));
23             return;
24         }
25         TAPLOG_D(TEXT("找到方法tapADNRequestPermissionIfNecessary"));
26         FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId);
27     }
28     else
29     {
30         TAPLOG_D(TEXT("没找到JNIEnv"));
31     }
32 #else
33     TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
34 #endif
35 }
36
37 void TapADN::TapADNInit(
38     int32 mediaID,
39     FString mediaName,
40     FString mediaKey,
41     bool enableDebug,
42     int32 avatarLevel)
43 {
44 #if PLATFORM_ANDROID
45     if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
46     {
47         bool isOptional = false;
48         static jmethodID methodId = FJavaWrapper::FindMethod(Env,
49                 FJavaWrapper::GameActivityClassID,
50                 "tapADNInit",
51                 "(ILjava/lang/String;Ljava/lang/String;ZI)V", isOptional);
52         if (methodId == 0)
53         {
54             TAPLOG_D(TEXT("没找到方法TapADNInit"));
55             return;
56         }
57         TAPLOG_D(TEXT("找到方法TapADNInit"));
58
59         auto paramMediaName = FJavaHelper::ToJavaString(Env,mediaName);
60         auto paramMediaKey = FJavaHelper::ToJavaString(Env,mediaKey);
61         FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId,
62             mediaID,
63             *paramMediaName,
64             *paramMediaKey,
65             enableDebug,
66             avatarLevel);
67     }
68     else
69     {
70         TAPLOG_D(TEXT("没找到JNIEnv"));
71     }
72 #else
73     TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
74 #endif
75 }
76
77 void TapADN::TapADNRequestRewardAD(int32 spaceID, FString rewardName, int32 rewardAmount)
78 {
79 #if PLATFORM_ANDROID
80     if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
81     {
82         bool isOptional = false;
83         static jmethodID methodId = FJavaWrapper::FindMethod(Env,
84                 FJavaWrapper::GameActivityClassID,
85                 "tapADNRequestRewardAD",
86                 "(ILjava/lang/String;I)V", isOptional);
87         if (methodId == 0)
88         {
89             TAPLOG_D(TEXT("没找到方法tapADNRequestRewardAD"));
90             return;
91         }
92         TAPLOG_D(TEXT("找到方法tapADNRequestRewardAD"));
93
94         auto paramRewardName = FJavaHelper::ToJavaString(Env,rewardName);
95         FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId,
96             spaceID,
97             *paramRewardName,
98             rewardAmount);
99     }
100     else
101     {
102         TAPLOG_D(TEXT("没找到JNIEnv"));
103     }
104 #else
105     TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
106     TapADNADCacheOverEventHandle.Execute();
107 #endif
108 }
109
110 void TapADN::TapADNPlayRewardAD()
111 {
112 #if PLATFORM_ANDROID
113     if (JNIEnv* Env = FAndroidApplication::GetJavaEnv(true))
114     {
115         bool isOptional = false;
116         static jmethodID methodId = FJavaWrapper::FindMethod(Env,
117                 FJavaWrapper::GameActivityClassID,
118                 "tapADNPlayRewardAD",
119                 "()V", isOptional);
120         if (methodId == 0)
121         {
122             TAPLOG_D(TEXT("没找到方法TapADNPlayRewardAD"));
123             return;
124         }
125         TAPLOG_D(TEXT("找到方法TapADNPlayRewardAD"));
126         
127         FJavaWrapper::CallVoidMethod(Env, FJavaWrapper::GameActivityThis, methodId
128             );
129     }
130     else
131     {
132         TAPLOG_D(TEXT("没找到JNIEnv"));
133     }
134 #else
135     TAPLOG_D(TEXT("不是安卓Native不能调用原生方法"));
136     TapADNADPlayOverEventHandle.Execute();
137 #endif
138 }
139 #if PLATFORM_ANDROID
140 JNI_METHOD void Java_com_epicgames_unreal_GameActivity_nativeRewardAdPlayOver(JNIEnv* jenv,jobject thiz)
141 {
142     TAPLOG_D(TEXT("广告播放完毕"))
143     AsyncTask(ENamedThreads::GameThread, [=]()
144     {
145         TapADN::TapADNADPlayOverEventHandle.Execute();
146     });
147 }
148 JNI_METHOD void Java_com_epicgames_unreal_GameActivity_nativeRewardRequestOver(JNIEnv* jenv,jobject thiz)
149 {
150     TAPLOG_D(TEXT("广告缓存完毕完毕"))
151     AsyncTask(ENamedThreads::GameThread, [=]()
152     {
153         TapADN::TapADNADCacheOverEventHandle.Execute();
154     });
155 }
156 #endif