【Android】Admob 動画リワード広告の実装方法
【Android】Admob 動画リワード広告の実装方法の備忘録
【Windows10】
【Andoroid Studio 3.1.1】
必要な情報は以下です。
パーミッションの追加、広告を使用するための準備は、上記過去記事のインタースティシャル広告 実装方法を参照してください。
RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917"; // Admob Test ID
MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成
mRewardedVideoAd.setRewardedVideoAdListener // 詳細は下記実装を参照
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエスト
mRewardedVideoAd.show(); // 広告の再生;
Admobおじさんが出てくれば、正常に実装できています。
|
【実装イメージ】
public class MainActivity extends AppCompatActivity {
RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成
mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// 動画広告再生に対する報酬を与えたときの処理
}
@Override
public void onRewardedVideoAdLeftApplication() {
// 動画広告から離れるときの処理(ブラウザに行くなど)
}
@Override
public void onRewardedVideoAdClosed() {
// 動画の再生を終了したときの処理
}
@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// 動画の読み込みが失敗したときの処理
}
@Override
public void onRewardedVideoAdLoaded() {
// 動画を再生する準備が完了したときの処理
if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}
@Override
public void onRewardedVideoAdOpened() {
// 動画画面に遷移したときの処理
}
@Override
public void onRewardedVideoStarted() {
// 動画を再生を開始したときの処理
}
@Override
public void onRewardedVideoCompleted() {
// 動画を最後まで見終わったときの処理
}
});
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエスト
}
}
※importはAlt + Enterでいける
Google Playに公開する際は、movie_idを
Admobで取得した動画リワード広告用のIDに変更すればOKです。
movie_id = "ca-app-pub-3940256099942544/5224354917"
↓
movie_id = "ca-app-pub-xxxxxxxxxxxxxxxx/yyyyyyyyyy"
上記実装の場合、MainActivityを起動した直後に、いきなり動画広告が流れます。ユーザーがびっくりしないように動画再生前に再生するかどうかをダイアログ等で聞くのが一般的なようです。
自分が公開しているアプリで例を以下に記載します。
【実際の実装イメージ】
広告非表示を押下でダイアログを表示します
public class MainActivity extends AppCompatActivity {
RewardedVideoAd mRewardedVideoAd;
String movie_id = "ca-app-pub-3940256099942544/5224354917";
Button button_movie_Ad_delete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.MainActivity);
button_movie_Ad_delete = (Button)findViewById(R.id.button_movie_Ad_delete);
MobileAds.initialize(this, movie_id); // 初期化
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); // インスタンスの生成
mRewardedVideoAd.setRewardedVideoAdListener(new RewardedVideoAdListener()
{
@Override
public void onRewarded(RewardItem reward) {
// 動画広告再生に対する報酬を与えたときの処理
}
@Override
public void onRewardedVideoAdLeftApplication() {
// 動画広告から離れるときの処理(ブラウザに行くなど)
}
@Override
public void onRewardedVideoAdClosed() {
// 動画の再生を終了したときの処理
}
@Override
public void onRewardedVideoAdFailedToLoad(int errorCode) {
// 動画の読み込みが失敗したときの処理
}
@Override
public void onRewardedVideoAdLoaded() {
// 動画を再生する準備が完了したときの処理
if (mRewardedVideoAd.isLoaded())
{
mRewardedVideoAd.show();
}
}
@Override
public void onRewardedVideoAdOpened() {
// 動画画面に遷移したときの処理
}
@Override
public void onRewardedVideoStarted() {
// 動画を再生を開始したときの処理
}
@Override
public void onRewardedVideoCompleted() {
// 動画を最後まで見終わったときの処理
// 広告非表示のコードは省略
Toast.makeText(this, "ご視聴ありがとうございました!\n広告が非表示になります。", Toast.LENGTH_LONG).show();
}
});
button_movie_Ad_delete.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// 広告非表示ボタンが押されたときにダイアログを表示する
// AlertDlg.classのコードは省略。自分の好きな処理を実装すればOK
Intent intent = new Intent(getApplication(), AlertDlg.class);
startActivityForResult(intent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ダイアログでユーザーが選択した結果に応じて処理を変える
// 再生するを押下した場合は動画を再生、キャンセルの場合は何もしない
if(globals.Ad_delete_flag == true)
{
movie_view();
}
}
public void movie_view()
{
mRewardedVideoAd.loadAd(movie_id, new AdRequest.Builder().build()); // 広告のリクエスト
Toast.makeText(this, "動画の再生準備をしています。\nしばらくお待ちください。", Toast.LENGTH_LONG).show();
}
}
以上です。
|