AdMob Rewarded Videoを使用して、アプリケーションユーザーにゲーム通貨を提供します

みなさんこんにちは! この記事では、私の経験を皆さんと共有したいと思います。つまり、AdMob Rewarded Videoを使用してユーザーにゲーム通貨(コインなど)を渡すプロセスがどのように機能するかを示します。



画像



まえがき



約3ヶ月前、私は自分のプロジェクトの開発を始めました。 トピックに関するクイズというAndroidアプリケーションをリリースする予定です。 ごく最近(約2週間前)、地理的な偏りがあるクイズアプリをGoogle Playで公開しました。 はい、これらのクイズには数百、数千ものものがあり、ほとんどの場合、それらはすべてお互いの機能を繰り返していることを完全に理解しています。



そのようなプロジェクトの多くは、インディー開発者からのものである場合(私には思える)、収益化の段階が十分に構成されていません。 あなたがインディーズの場合、あなたの主な目標は広告表示でお金を稼ぐこと、追加コンテンツを販売することなどです。 コンテンツと広告に対する適切なアプローチにより、ほとんどの場合、アプリケーションは視聴者を見つけます。 収益化は、あらゆるプロジェクト/アプリケーションの成功の鍵であると言えます。



私自身のために、 広告 (バナー、インタースティシャル、ビデオ)とソーシャルネットワーク (Facebook、Twitter、VK)での共有といういくつかのタイプの収益化を特定しました。

これらすべての点について、アプリケーションのユーザーは、満足感を得るために報酬を受け取るべきだと思います。



ほとんどの人はバナー広告やインタースティシャル広告を接続してさまざまなチュートリアルを読む方法を知っていますが、おそらく動画広告に出会ったことがなく、ネットワーク上にあまり情報がありません。

これは私にこの記事を書いた。



はじめに



そこで、テストプロジェクトでAdMob Rewarded Video Addの実装を紹介します。 それから、既存のプロジェクトに追加する方法、または将来それを使用する方法を完全に明確にすることができます。 また、コインを保存するためのSharedPreferencesのトピックに間接的に触れます。



ステップ1:

TextView(コインの数を表示)、Videoボタン(クリックすると広告の表示が開始されます)、およびGameボタン(クリックすると1つのコインがユーザーに追加されます)を持つレイアウトを作成する必要があります。



画像



ステップ2:

実装に進みます。

このステップでは、gradleに依存関係を追加し、AdMob広告を初期化し、いくつかの定数を作成します。



依存関係を追加します。



compile 'com.google.firebase:firebase-core:10.2.0' compile 'com.google.firebase:firebase-ads:10.2.0'
      
      





Admobの初期化:



 public class App extends Application { @Override public void onCreate() { super.onCreate(); MobileAds.initialize(this, Constants.ADMOB_ID); } }
      
      





クラスConstants.javaを作成します。



 class Constants { private Constants() { throw new AssertionError(); } static final String PREF_COINS = "pref_coins"; static final String ADMOB_ID = "YOUR_ADMOB_ACCOUNT_ID_HERE"; static final String AD_MOB_REWARDED_VIDEO_ID = "YOUR_ADMOB_ADD_ID"; static final int REWARD_FOR_VIDEO = 20; }
      
      





定数「static final int REWARD_FOR_VIDEO」では、動画広告を視聴するためにユーザーに与えるコインの数を示します。



ステップ3:

このステップでは、実行するアクションについて説明します。つまり、必要なフィールドを作成し、onCreate()メソッドで「Video」ボタンを非アクティブにし、SharePPreferenceにコインの値を書き込み、ビデオ広告をロードするloadRewardVideo()メソッドを記述します。



 public class MainActivity extends AppCompatActivity { private AdRequest mAdRequest; private RewardedVideoAd mRewardedVideoAd; private SharedPreferences mSharedPreferences; private TextView mTextCoins; private Button mButtonVideo; private int coins; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); coins = mSharedPreferences.getInt(PREF_COINS, 0); setContentView(R.layout.activity_main); mButtonVideo = (Button) findViewById(R.id.btn_video); mButtonVideo.setOnClickListener(clickListener); mButtonVideo.setEnabled(false); findViewById(R.id.btn_game).setOnClickListener(clickListener); mTextCoins = (TextView) findViewById(R.id.tv_coins); mTextCoins.setText(getResources().getQuantityString(R.plurals.coins, coins, coins)); //AdMob Rewarded Video mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this); mRewardedVideoAd.setRewardedVideoAdListener(rewardedVideoAdListener); mAdRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .build(); loadRewardVideo(); View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_video: if (mRewardedVideoAd.isLoaded()) { mRewardedVideoAd.show(); } break; case R.id.btn_game: coins++; mTextCoins.setText(getResources().getQuantityString(R.plurals.coins, coins, coins)); break; } } }; private void loadRewardVideo() { mRewardedVideoAd.loadAd(AD_MOB_REWARDED_VIDEO_ID, mAdRequest); } }
      
      





ステップ4:

RewardedVideoAdListenerリスナーを作成します。 onRewardedVideoAdLoaded()メソッドでは、以前にオフにされていたボタンをアクティブにします。 また、すべての主要なアクションをonRewardedメソッドで実行します。このメソッドでは、既存の動画に動画を見るためのコインを追加し、広告の最後にトーストユーザーに20コインの報酬を受け取ったというテキストを表示します。



  private RewardedVideoAdListener rewardedVideoAdListener = new RewardedVideoAdListener() { @Override public void onRewardedVideoAdLoaded() { mButtonVideo.setEnabled(true); } @Override public void onRewardedVideoAdOpened() { } @Override public void onRewardedVideoStarted() { } @Override public void onRewardedVideoAdClosed() { mButtonVideo.setEnabled(false); loadRewardVideo(); } @Override public void onRewarded(RewardItem rewardItem) { coins += REWARD_FOR_VIDEO; mTextCoins.setText(getResources().getQuantityString(R.plurals.coins, coins, coins)); String msg = getResources().getQuantityString(R.plurals.congrats, REWARD_FOR_VIDEO, REWARD_FOR_VIDEO); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); mSharedPreferences.edit().putInt(PREF_COINS, coins).apply(); } @Override public void onRewardedVideoAdLeftApplication() { } @Override public void onRewardedVideoAdFailedToLoad(int i) { } };
      
      





このステップでは、ボタンのクリックにロジックを追加する基本的なアクションを実行し、RewardedVideoAdListenerリスナーでのビデオ広告の動作についても説明しました。



最後に、動画広告にライフサイクルを追加します。



 @Override protected void onPause() { super.onPause(); mSharedPreferences.edit().putInt(PREF_COINS, coins).apply(); if (mRewardedVideoAd != null) { mRewardedVideoAd.pause(this); } } @Override protected void onResume() { super.onResume(); if (mRewardedVideoAd !=null) { mRewardedVideoAd.resume(this); } } @Override protected void onDestroy() { super.onDestroy(); if (mRewardedVideoAd != null) { mRewardedVideoAd.destroy(this); } }
      
      





そしてすべてのすべて。 結果はこのビデオで見ることができます:







PS:この例では、テストプロジェクトでこれを行う方法を示したことを思い出します。 アプリケーションでは、カスタムボタンを使用してこれをより鮮やかにカラフルに実装します。 広告へのアクセスがブロックされないように、投稿へのコメントにアプリケーションへのリンクを残します。



PPS:また、クイズの分野でのAndroidアプリケーションのインディー開発では、カスタムボタンの操作についてのアイデアが必要だと思います。



正しい収益化システムと、 任意の形状とタイプのボタンを作成する機能がすべてです。 次の記事をこのトピックに当てて、ロリポップ以上が搭載されたデバイスでボタンを操作する方法を示したいと思います。



All Articles