前提条件
- Google Mobile Ads SDK 19.7.0 以降。
- スタートガイドを完了している。
必ずテスト広告でテストする
アプリの作成とテストでは、実際の配信中の広告ではなくテスト広告を使用するようにしてください。実際の広告を使用すると、アカウントが停止される可能性があります。
テスト広告を読み込む最も簡単な方法は、Android リワード広告向けのテスト専用広告ユニット ID を使用することです。
/6499/example/rewarded
すべてのリクエストに対してテスト広告を返すように特別に構成されており、独自のアプリでコーディング、テスト、デバッグを行うときに自由に使用できます。ただし、アプリを公開する前に、必ずご自身の広告ユニット ID に置き換えてください。
Mobile Ads SDK のテスト広告の仕組みについて詳しくは、テスト広告をご覧ください。
リワード広告オブジェクトを読み込む
リワード広告を読み込むには、RewardedAd
クラスの静的 load()
メソッドを呼び出して RewardedAdLoadCallback
を渡します。これは通常、Activity
の onCreate()
メソッドで行われます。他の形式の読み込みコールバックと同様に、RewardedAdLoadCallback
は LoadAdError
を利用して、より忠実度の高いエラーの詳細を提供します。
Java
import com.google.android.gms.ads.rewarded.RewardedAd;
public class MainActivity extends Activity {
private RewardedAd rewardedAd;
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
RewardedAd.load(this, "/6499/example/rewarded",
adRequest, new RewardedAdLoadCallback() {
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error.
Log.d(TAG, loadAdError.toString());
rewardedAd = null;
}
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
rewardedAd = ad;
Log.d(TAG, "Ad was loaded.");
}
});
}
}
Kotlin
class MainActivity : AppCompatActivity() {
private var rewardedAd: RewardedAd? = null
private final var TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var adRequest = AdManagerAdRequest.Builder().build()
RewardedAd.load(this,"/6499/example/rewarded", adRequest, object : RewardedAdLoadCallback() {
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedAd = null
}
override fun onAdLoaded(ad: RewardedAd) {
Log.d(TAG, "Ad was loaded.")
rewardedAd = ad
}
})
}
}
FullScreenContentCallback を設定する
FullScreenContentCallback
は、RewardedAd
の表示に関連するイベントを処理します。RewardedAd
を表示する前に、コールバックを次のように設定してください。
Java
rewardedAd.setFullScreenContentCallback(new FullScreenContentCallback() {
@Override
public void onAdClicked() {
// Called when a click is recorded for an ad.
Log.d(TAG, "Ad was clicked.");
}
@Override
public void onAdDismissedFullScreenContent() {
// Called when ad is dismissed.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.");
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.");
rewardedAd = null;
}
@Override
public void onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.");
}
@Override
public void onAdShowedFullScreenContent() {
// Called when ad is shown.
Log.d(TAG, "Ad showed fullscreen content.");
}
});
Kotlin
rewardedAd?.fullScreenContentCallback = object: FullScreenContentCallback() {
override fun onAdClicked() {
// Called when a click is recorded for an ad.
Log.d(TAG, "Ad was clicked.")
}
override fun onAdDismissedFullScreenContent() {
// Called when ad is dismissed.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.")
rewardedAd = null
}
override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.")
rewardedAd = null
}
override fun onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.")
}
override fun onAdShowedFullScreenContent() {
// Called when ad is shown.
Log.d(TAG, "Ad showed fullscreen content.")
}
}
広告を表示する
リワード広告を表示する際、OnUserEarnedRewardListener
オブジェクトを使用して報酬イベントを処理します。
Java
if (rewardedAd != null) {
Activity activityContext = MainActivity.this;
rewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// Handle the reward.
Log.d(TAG, "The user earned the reward.");
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
} else {
Log.d(TAG, "The rewarded ad wasn't ready yet.");
}
Kotlin
rewardedAd?.let { ad ->
ad.show(this, OnUserEarnedRewardListener { rewardItem ->
// Handle the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
Log.d(TAG, "User earned the reward.")
})
} ?: run {
Log.d(TAG, "The rewarded ad wasn't ready yet.")
}
よくある質問
- 初期化の呼び出しにタイムアウトはありますか?
- 10 秒が経過すると、メディエーション ネットワークの初期化が完了していなくても、Google Mobile Ads SDK は
OnInitializationCompleteListener
を呼び出します。 - 初期化コールバックを受け取ったときに、準備が完了していないメディエーション ネットワークがある場合はどうなりますか?
広告は、
OnInitializationCompleteListener
のコールバック内で読み込むことをおすすめします。メディエーション ネットワークの準備ができていない場合でも、Google Mobile Ads SDK はそのネットワークに広告をリクエストします。そのため、タイムアウト後にメディエーション ネットワークが初期化を完了した場合でも、そのセッションの以降の広告リクエストは引き続き処理されます。アプリ セッション中は、
MobileAds.getInitializationStatus()
を呼び出すことで、引き続きすべてのアダプタの初期化ステータスをポーリングできます。- 特定のメディエーション ネットワークの準備ができていない理由を調べるにはどうすればよいですか?
AdapterStatus.getDescription()
は、アダプタが広告リクエストを処理できない理由を表します。onUserEarnedReward()
コールバックは、常にonAdDismissedFullScreenContent()
コールバックの前に呼び出されますか?Google 広告では、
onUserEarnedReward()
の呼び出しはすべてonAdDismissedFullScreenContent()
の前に行われます。メディエーションを介して配信される広告の場合、コールバックの順序は第三者広告ネットワーク SDK の実装によって決定されます。報酬情報を含んだ単一のクローズ コールバックを提供する広告ネットワーク SDK の場合、メディエーション アダプタはonAdDismissedFullScreenContent()
の前にonUserEarnedReward()
を呼び出します。
GitHub の例
次のステップ
次のトピックをご覧ください。