| Abstract Method | Parameter Description | Return Value | Purpose | Required |
|---|---|---|---|---|
| isAdReady | - | boolean | Used to determine whether the custom ad platform's Rewarded Video Ad is in a ready state. | Yes |
| show | Activity activity: The Activity context | void | Implement the logic for displaying the custom ad platform's Rewarded Video. | Yes |
Note: The parent class of the Adapter provides externally set mUserId and mCustomData member variables (i.e., the values of ATAdConst.KEY.USER_ID and ATAdConst.KEY.USER_CUSTOM_DATA set through the ATRewardVideoAd#setLocalExtra() method), which can be provided to the custom ad platform to implement the Server-to-Server reward method.
Use the CustomRewardedVideoEventListener member variable of CustomRewardVideoAdapter to implement ad event callbacks.
| Callback Method | Parameter Description | Description |
|---|---|---|
| onRewardedVideoAdPlayStart | - | Callback to the developer when ad playback starts. |
| onRewardedVideoAdPlayEnd | - | Callback to the developer when ad playback ends. |
| onRewardedVideoAdPlayFailed | String errorCode: Error code info String errorMsg: Detailed error info | Callback to the developer when ad playback fails. |
| onRewardedVideoAdClosed | - | Callback to the developer when the ad page is closed. |
| onRewardedVideoAdPlayClicked | - | Callback to the developer when the ad is clicked. |
| onReward | - | Callback to the developer when a reward is distributed to the user. |
Note: When using the member variable CustomRewardedVideoEventListener, null-check handling is required, because the Mediation SDK may internally reclaim this Listener object.
public class FacebookRewardVideoAdapter extends CustomRewardVideoAdapter {
RewardedVideoAd rewardedVideoAd;
String mUnitid;
String mPayload;
/***
* load ad
*/
private void startLoad(final Context context) {
final RewardedVideoAdListener rewardedVideoAdListener = new RewardedVideoAdListener() {
@Override
public void onError(Ad ad, AdError error) {
if (mLoadListener != null) {
mLoadListener.onAdLoadError(error.getErrorCode() + "", "" + error.getErrorMessage());
}
}
@Override
public void onAdLoaded(Ad ad) {
if (mLoadListener != null) {
mLoadListener.onAdCacheLoaded();
}
}
@Override
public void onAdClicked(Ad ad) {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayClicked();
}
}
@Override
public void onLoggingImpression(Ad ad) {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayStart();
}
}
@Override
public void onRewardedVideoCompleted() {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdPlayEnd();
}
if (mImpressionListener != null) {
mImpressionListener.onReward();
}
}
@Override
public void onRewardedVideoClosed() {
if (mImpressionListener != null) {
mImpressionListener.onRewardedVideoAdClosed();
}
}
};
rewardedVideoAd = new RewardedVideoAd(context.getApplicationContext(), mUnitid);
RewardedVideoAd.RewardedVideoAdLoadConfigBuilder adConfig = rewardedVideoAd
.buildLoadAdConfig()
.withAdListener(rewardedVideoAdListener)
.withFailOnCacheFailureEnabled(true)
.withRVChainEnabled(true);
adConfig.withRewardData(new RewardData(mUserId, mUserData));
if (!TextUtils.isEmpty(mPayload)) {
adConfig.withBid(mPayload);
}
rewardedVideoAd.loadAd(adConfig.build());
}
@Override
public void destory() {
try {
if (rewardedVideoAd != null) {
rewardedVideoAd.setAdListener(null);
rewardedVideoAd.destroy();
}
} catch (Exception e) {
}
}
@Override
public void loadCustomNetworkAd(Context context, Map<String, Object> serverExtras, Map<String, Object> localExtras) {
if (serverExtras.containsKey("unit_id")) {
mUnitid = (String) serverExtras.get("unit_id");
} else {
if (mLoadListener != null) {
mLoadListener.onAdLoadError("", "facebook sdkkey is empty.");
}
return;
}
FacebookInitManager.getInstance().initSDK(context.getApplicationContext(), serverExtras);
if (serverExtras.containsKey("payload")) {
mPayload = serverExtras.get("payload").toString();
}
startLoad(context);
}
@Override
public boolean isAdReady() {
if (rewardedVideoAd == null || !rewardedVideoAd.isAdLoaded()) {
return false;
}
if (rewardedVideoAd.isAdInvalidated()) {
return false;
}
return true;
}
@Override
public boolean setUserDataConsent(Context context, boolean isConsent, boolean isEUTraffic) {
return false;
}
@Override
public void show(Activity activity) {
if (rewardedVideoAd != null) {
rewardedVideoAd.show();
}
}
@Override
public String getNetworkSDKVersion() {
return FacebookInitManager.getInstance().getNetworkVersion();
}
@Override
public String getNetworkName() {
return FacebookInitManager.getInstance().getNetworkName();
}
@Override
public String getNetworkPlacementId() {
return mUnitid;
}
}