Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ builtins
/.idea/
/debug.keystore
/debug.keystore.pass.txt
/.editor_settings
/.vscode
7 changes: 6 additions & 1 deletion extension-admob/src/admob.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,13 @@ static int Lua_LoadRewarded(lua_State* L)
if (lua_type(L, 1) != LUA_TSTRING) {
return DM_LUA_ERROR("Expected string, got %s. Wrong type for Rewarded UnitId variable '%s'.", luaL_typename(L, 1), lua_tostring(L, 1));
}
if (lua_type(L, 2) != LUA_TSTRING) {
return DM_LUA_ERROR("Expected string, got %s. Wrong type for Rewarded UserId variable '%s'.", luaL_typename(L, 2), lua_tostring(L, 2));
}
const char* unitId_lua = luaL_checkstring(L, 1);
LoadRewarded(unitId_lua);
const char* userId_lua = luaL_checkstring(L, 2);
const char* customData_lua = lua_type(L,3) == LUA_TNONE ? nullptr : luaL_checkstring(L, 3);
LoadRewarded(unitId_lua, userId_lua, customData_lua);
return 0;
}

Expand Down
20 changes: 17 additions & 3 deletions extension-admob/src/admob_android.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,20 @@ static void CallVoidMethodCharBoolean(jobject instance, jmethodID method, const
env->DeleteLocalRef(jstr);
}

static void CallVoidMethodCharCharChar(jobject instance, jmethodID method, const char* cstr, const char* cstr2, const char* cstr3)
{
dmAndroid::ThreadAttacher threadAttacher;
JNIEnv* env = threadAttacher.GetEnv();

jstring jstr = env->NewStringUTF(cstr);
jstring jstr2 = env->NewStringUTF(cstr2);
jstring jstr3 = env->NewStringUTF(cstr3);
env->CallVoidMethod(instance, method, jstr, jstr2, jstr3);
env->DeleteLocalRef(jstr);
env->DeleteLocalRef(jstr2);
env->DeleteLocalRef(jstr3);
}

static void CallVoidMethodInt(jobject instance, jmethodID method, int cint)
{
dmAndroid::ThreadAttacher threadAttacher;
Expand All @@ -116,7 +130,7 @@ static void InitJNIMethods(JNIEnv* env, jclass cls)
g_admob.m_ShowAppOpen = env->GetMethodID(cls, "showAppOpen", "()V");
g_admob.m_LoadInterstitial = env->GetMethodID(cls, "loadInterstitial", "(Ljava/lang/String;)V");
g_admob.m_ShowInterstitial = env->GetMethodID(cls, "showInterstitial", "()V");
g_admob.m_LoadRewarded = env->GetMethodID(cls, "loadRewarded", "(Ljava/lang/String;)V");
g_admob.m_LoadRewarded = env->GetMethodID(cls, "loadRewarded", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
g_admob.m_ShowRewarded = env->GetMethodID(cls, "showRewarded", "()V");
g_admob.m_LoadRewardedInterstitial = env->GetMethodID(cls, "loadRewardedInterstitial", "(Ljava/lang/String;)V");
g_admob.m_ShowRewardedInterstitial = env->GetMethodID(cls, "showRewardedInterstitial", "()V");
Expand Down Expand Up @@ -193,9 +207,9 @@ bool IsInterstitialLoaded()
return CallBoolMethod(g_admob.m_AdmobJNI, g_admob.m_IsInterstitialLoaded);
}

void LoadRewarded(const char* unitId)
void LoadRewarded(const char* unitId, const char* userId, const char* customData)
{
CallVoidMethodChar(g_admob.m_AdmobJNI, g_admob.m_LoadRewarded, unitId);
CallVoidMethodCharCharChar(g_admob.m_AdmobJNI, g_admob.m_LoadRewarded, unitId, userId, customData);
}

void ShowRewarded()
Expand Down
10 changes: 9 additions & 1 deletion extension-admob/src/admob_ios.mm
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,14 @@ void SetRewardedAd(GADRewardedAd *newAd) {
rewardedAd = newAd;
}

void LoadRewarded(const char* unitId) {
void LoadRewarded(const char* unitId, const char* userId, const char* customData) {
GADServerSideVerificationOptions *ssvOptions = [[GADServerSideVerificationOptions alloc] init];
if (userId) {
ssvOptions.userIdentifier = [NSString stringWithUTF8String:userId];
}
if (customData) {
ssvOptions.customRewardString = [NSString stringWithUTF8String:customData];
}
[GADRewardedAd
loadWithAdUnitID:[NSString stringWithUTF8String:unitId]
request:createGADRequest()
Expand All @@ -288,6 +295,7 @@ void LoadRewarded(const char* unitId) {
@"error", [NSString stringWithFormat:@"Error domain: \"%@\". %@", [error domain], [error localizedDescription]]);
return;
}
ad.serverSideVerificationOptions = ssvOptions;
SetRewardedAd(ad);
SendSimpleMessage(MSG_REWARDED, EVENT_LOADED);
}];
Expand Down
2 changes: 1 addition & 1 deletion extension-admob/src/admob_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ void LoadAppOpen(const char* unitId, bool showImmediately);
void ShowAppOpen();
void LoadInterstitial(const char* unitId);
void ShowInterstitial();
void LoadRewarded(const char* unitId);
void LoadRewarded(const char* unitId, const char* userId, const char* customData);
void ShowRewarded();
void LoadRewardedInterstitial(const char* unitId);
void ShowRewardedInterstitial();
Expand Down
15 changes: 14 additions & 1 deletion extension-admob/src/java/com/defold/admob/AdmobJNI.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import com.google.android.gms.ads.rewarded.RewardItem;
import com.google.android.gms.ads.rewarded.RewardedAd;
import com.google.android.gms.ads.rewarded.RewardedAdLoadCallback;
import com.google.android.gms.ads.rewarded.ServerSideVerificationOptions;

import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd;
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAdLoadCallback;
Expand Down Expand Up @@ -505,7 +506,18 @@ public boolean isInterstitialLoaded() {

private RewardedAd mRewardedAd;

public void loadRewarded(final String unitId) {
private void setRewardedCustomData(final String userId, final String customData) {
if( userId != null)
{
ServerSideVerificationOptions options = new ServerSideVerificationOptions.Builder()
.setUserId(userId)
.setCustomData(customData != null ? customData : "")
.build();
mRewardedAd.setServerSideVerificationOptions(options);
}
}

public void loadRewarded(final String unitId, final String userId, final String customData) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Expand All @@ -518,6 +530,7 @@ public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// Log.d(TAG, "onAdLoaded");
mRewardedAd = rewardedAd;
sendSimpleMessage(MSG_REWARDED, EVENT_LOADED);
setRewardedCustomData(userId, customData);
mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
Expand Down