Skip to content

Commit

Permalink
Add reward item API to rewarded ads.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 286271053
  • Loading branch information
Samuel Stow authored and maddevrelgithubbot committed Dec 18, 2019
1 parent 68a5f6f commit dfebcac
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -190,19 +190,63 @@ public void run() {
});
}

/** Sets server side verification options. */
public void setServerSideVerificationOptions(
final ServerSideVerificationOptions serverSideVerificationOptions) {
activity.runOnUiThread(
new Runnable() {
@Override
public void run() {
rewardedAd.setServerSideVerificationOptions(serverSideVerificationOptions);
}
});
}
/** Sets server side verification options. */
public void setServerSideVerificationOptions(
final ServerSideVerificationOptions serverSideVerificationOptions) {
activity.runOnUiThread(
new Runnable() {
@Override
public void run() {
rewardedAd.setServerSideVerificationOptions(serverSideVerificationOptions);
}
});
}

public String getMediationAdapterClassName() {
return rewardedAd != null ? rewardedAd.getMediationAdapterClassName() : null;
FutureTask<String> task = new FutureTask<>(new Callable<String>() {
@Override
public String call() {
return rewardedAd.getMediationAdapterClassName();
}
});
activity.runOnUiThread(task);

String result = null;
try {
result = task.get();
} catch (InterruptedException e) {
Log.e(PluginUtils.LOGTAG,
String.format("Unable to check rewarded ad adapter class name: %s",
e.getLocalizedMessage()));
} catch (ExecutionException e) {
Log.e(PluginUtils.LOGTAG,
String.format("Unable to check rewarded ad adapter class name: %s",
e.getLocalizedMessage()));
}
return result;
}

public RewardItem getRewardItem() {
FutureTask<RewardItem> task = new FutureTask<>(new Callable<RewardItem>() {
@Override
public RewardItem call() {
return rewardedAd.getRewardItem();
}
});
activity.runOnUiThread(task);

RewardItem result = null;
try {
result = task.get();
} catch (InterruptedException e) {
Log.e(PluginUtils.LOGTAG,
String.format("Unable to get rewarded ad reward item: %s",
e.getLocalizedMessage()));
} catch (ExecutionException e) {
Log.e(PluginUtils.LOGTAG,
String.format("Unable to get rewarded ad reward item: %s",
e.getLocalizedMessage()));
}
return result;
}
}
9 changes: 9 additions & 0 deletions source/plugin/Assets/GoogleMobileAds/Api/RewardedAd.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,15 @@ public void SetServerSideVerificationOptions(ServerSideVerificationOptions serve
client.SetServerSideVerificationOptions(serverSideVerificationOptions);
}

// Returns the reward item for the loaded rewarded ad.
public Reward GetRewardItem()
{
if (client.IsLoaded()) {
return client.GetRewardItem();
}
return null;
}

// Returns the mediation adapter class name.
public string MediationAdapterClassName()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ public interface IRewardedAdClient
// Returns the mediation adapter class name.
string MediationAdapterClassName();

// Returns the reward item for the loaded rewarded ad.
Reward GetRewardItem();

// Shows the rewarded ad on the screen.
void Show();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,15 @@ public string MediationAdapterClassName()
return null;
}

public Reward GetRewardItem()
{
Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
return null;
}

public void SetServerSideVerificationOptions(ServerSideVerificationOptions serverSideVerificationOptions)
{
Debug.Log("Dummy " + MethodBase.GetCurrentMethod().Name);
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,22 @@ public void DestroyRewardBasedVideoAd()
androidRewardedAd.Call("destroy");
}

// Returns the reward item for the loaded rewarded ad.
public Reward GetRewardItem()
{
AndroidJavaObject rewardItem = this.androidRewardedAd.Call<AndroidJavaObject>("getRewardItem");
if (rewardItem == null) {
return null;
}
string type = rewardItem.Call<string>("getType");
int amount = rewardItem.Call<int>("getAmount");
return new Reward()
{
Type = type,
Amount = (double) amount
};
}

// Returns the mediation adapter class name.
public string MediationAdapterClassName()
{
Expand Down
6 changes: 6 additions & 0 deletions source/plugin/Assets/GoogleMobileAds/Platforms/iOS/Externs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,12 @@ internal static extern void GADUSetRewardedAdCallbacks(
[DllImport("__Internal")]
internal static extern void GADURewardedAdSetServerSideVerificationOptions(IntPtr rewardedAd, IntPtr options);

[DllImport("__Internal")]
internal static extern string GADURewardedAdGetRewardType(IntPtr rewardedAd);

[DllImport("__Internal")]
internal static extern double GADURewardedAdGetRewardAmount(IntPtr rewardedAd);

[DllImport("__Internal")]
internal static extern IntPtr GADUMediationAdapterClassNameForRewardedAd(IntPtr rewardedVideo);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,18 @@ public bool IsLoaded()
return Externs.GADURewardedAdReady(this.RewardedAdPtr);
}

// Returns the reward item for the loaded rewarded ad.
public Reward GetRewardItem()
{
string type = Externs.GADURewardedAdGetRewardType(this.RewardedAdPtr);
double amount = Externs.GADURewardedAdGetRewardAmount(this.RewardedAdPtr);;
return new Reward()
{
Type = type,
Amount = amount
};
}

// Returns the mediation adapter class name.
public string MediationAdapterClassName()
{
Expand Down
14 changes: 14 additions & 0 deletions source/plugin/Assets/Plugins/iOS/GADUInterface.m
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,20 @@ void GADUShowRewardedAd(GADUTypeRewardedAdRef rewardedAd) {
[internalRewardedAd show];
}

/// Returns the type of the reward.
const char *GADURewardedAdGetRewardType(GADUTypeRewardedAdRef rewardedAd) {
GADURewardedAd *internalRewardedAd = (__bridge GADURewardedAd *)rewardedAd;
GADAdReward *reward = internalRewardedAd.rewardedAd.reward;
return cStringCopy(reward.type.UTF8String);
}

/// Returns the amount of the reward.
double GADURewardedAdGetRewardAmount(GADUTypeRewardedAdRef rewardedAd) {
GADURewardedAd *internalRewardedAd = (__bridge GADURewardedAd *)rewardedAd;
GADAdReward *reward = internalRewardedAd.rewardedAd.reward;
return reward.amount.doubleValue;
}

/// Creates an empty GADRequest and returns its reference.
GADUTypeRequestRef GADUCreateRequest() {
GADURequest *request = [[GADURequest alloc] init];
Expand Down

0 comments on commit dfebcac

Please sign in to comment.