Android Rewarded Video - adxcorp/ADXLibrary_Integration GitHub Wiki
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- App ID๋ฅผ ์ด์ฉํ์ฌ MobileAds.initialize()๋ก ๋ฉ์ธ ์กํฐ๋นํฐ์์ ์ด๊ธฐํ
- AdRequest๋ฅผ ์์ฑํ์ฌ GDPR ๊ด๋ จ ์ค์ ์ด ํ์ํ ๊ฒฝ์ฐ extra๋ก npa ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ (ADXConsentStateDenied ์ํ์ผ ๋๋ง npa ๋ฅผ '1' ๋ก ์ถ๊ฐํด์ฃผ์๋ฉด ๋ฉ๋๋ค.)
- AD Unit ID์ ํจ๊ป load()๋ก ๊ด๊ณ ๋ก๋
- ๊ด๊ณ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด onAdLoaded callback ํธ์ถ
- RewardedAd ๊ฐ์ฒด์ null ์ฒดํฌ๋ฅผ ํตํด ํ์ํ ๊ด๊ณ ๊ฐ ์๋์ง ํ์ธ ํ, show()๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ
- ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด onUserEarnedReward callback์ ๋ฐ๊ฒ ๋๋ฏ๋ก, onUserEarnedReward callback์ ๋ฐ์ ๊ฒฝ์ฐ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
public class RewardedVideoAdMobActivity extends AppCompatActivity {
private RewardedAd mRewardedAd;
private final String adUnitID = "<YOUT AD UNIT ID HERE>";
public void loadAd() {
Bundle extras = new Bundle();
if (ADXGDPR.ADXConsentState.values()[ADXGDPR.getResultGDPR(this)] == ADXGDPR.ADXConsentState.ADXConsentStateDenied) {
extras.putString("npa", "1");
}
AdRequest adRequest = new AdRequest.Builder()
.addNetworkExtrasBundle(AdMobAdapter.class, extras)
.build();
RewardedAd.load(this, adUnitID, adRequest, new RewardedAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// Ad successfully loaded.
mRewardedAd = rewardedAd;
mRewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
// Ad failed to display.
}
@Override
public void onAdShowedFullScreenContent() {
// Ad opened.
mRewardedAd = null;
}
@Override
public void onAdDismissedFullScreenContent() {
// Ad closed.
loadAd();
}
@Override
public void onAdImpression() {
}
});
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Ad failed to load.
}
});
}
public void showAd() {
if (mRewardedAd != null) {
mRewardedAd.show(this, new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// User earned reward.
}
});
} else {
Log.d(TAG, "The rewarded ad wasn't loaded yet.");
loadAd();
}
}
@Override
protected void onDestroy() {
mRewardedAd = null;
super.onDestroy();
}
}
Rewarded Video load์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋, ๋ฏธ๋ฆฌ load ํด๋์ ๋ค์ ์ฌ์ฉํ์๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.
- MoPubRewardedAdManager๋ฅผ ํ์ฌ activity๋ก ์ด๊ธฐํ
- RewardedAdListener ์ถ๊ฐ
- loadRewardedAd()๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ก๋
- ๊ด๊ณ ๋ก๋๊ฐ ์๋ฃ๋๋ฉด onRewardedAdLoadSuccess callback ํธ์ถ
- hasRewardedAd()๋ก ํ์ ํ ๊ด๊ณ ๊ฐ ์๋์ง ํ์ธ ํ, showRewardedAd()๋ก ๋ฆฌ์๋ ๋น๋์ค ๋ ธ์ถ
- ๊ด๊ณ ์์ฒญ์ ๋ชจ๋ ์๋ฃํ๋ฉด onRewardedAdCompleted callback์ ๋ฐ๊ฒ ๋๋ฏ๋ก, onRewardedAdCompleted callback์ ๋ฐ์ ๊ฒฝ์ฐ ๋ฆฌ์๋ ์ง๊ธ ์ฒ๋ฆฌ
public class RewardedVideoActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rewarded_video);
MoPubRewardedAdManager.init(this);
MoPubRewardedAdManager.updateActivity(this);
loadRewardedVideoDataMoPub();
mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (MoPubRewardedAds.hasRewardedAd(DefineAdUnitId.REWARDED_VIDEO_AD_UNIT_ID)) {
Log.d(TAG, "isLoaded");
MoPubRewardedAds.showRewardedAd(DefineAdUnitId.REWARDED_VIDEO_AD_UNIT_ID);
} else {
Log.d(TAG, "isNOTLoaded");
loadRewardedVideoDataMoPub();
}
}
});
MoPubRewardedAds.setRewardedAdListener(new MoPubRewardedAdListener() {
@Override
public void onRewardedAdLoadSuccess(String adUnitId) {
// Called when the ad for the given adUnitId has loaded. At this point you should be able to call MoPubRewardedAds.showRewardedAd() to show the ad.
}
@Override
public void onRewardedAdLoadFailure(String adUnitId, MoPubErrorCode moPubErrorCode) {
// Called when the ad fails to load for the given adUnitId. The provided error code will provide more insight into the reason for the failure to load.
}
@Override
public void onRewardedAdStarted(String adUnitId) {
// Called when a rewarded ad starts playing.
}
@Override
public void onRewardedAdShowError(String adUnitId, MoPubErrorCode moPubErrorCode) {
// Called when there is an error while attempting to show the ad.
}
@Override
public void onRewardedAdClicked(String adUnitId) {
// Called when a rewarded ad is clicked.
}
@Override
public void onRewardedAdClosed(String adUnitId) {
// Called when a rewarded ad is closed. At this point your application should resume.
}
@Override
public void onRewardedAdCompleted(Set<String> set, MoPubReward moPubReward) {
// Called when a rewarded ad is completed and the user should be rewarded.
// You can query the reward object with boolean isSuccessful(), String getLabel(), and int getAmount().
}
});
}
private void loadRewardedVideoDataMoPub() {
MoPubRewardedAds.loadRewardedAd(DefineAdUnitId.REWARDED_VIDEO_AD_UNIT_ID);
}
@Override
public void onPause() {
super.onPause();
MoPub.onPause(this);
}
@Override
public void onResume() {
super.onResume();
MoPub.onResume(this);
}
@Override
public void onStart() {
super.onStart();
MoPub.onStart(this);
}
@Override
public void onRestart() {
super.onRestart();
MoPub.onRestart(this);
}
@Override
public void onStop() {
super.onStop();
MoPub.onStop(this);
}
@Override
public void onDestroy() {
super.onDestroy();
MoPub.onDestroy(this);
}
@Override
public void onBackPressed() {
super.onBackPressed();
MoPub.onBackPressed(this);
}
}