如何使用AdMob通过Android应用获利

在本教程中,您将学习如何集成AdMob,以便从自己编写的出色Android应用中获利-来吧,谁不想这么做? AdMob是市场上最大的移动广告平台之一,由Google拥有。

有几种不同的方法可以在Android中通过应用获利:付费下载,付费订阅,应用内购买以及通过展示广告。 您可以将它们组合在一起,但是建议您选择一个模型。 在本教程中,您将学习如何通过展示广告来通过应用获利。

您将在本教程中创建的广告类型包括横幅广告,插页式广告和原生特快广告。 我将解释它们中的每一个,并向您展示如何在应用程序中实现它们。 但是在此之前,让我们首先了解如何集成Mobile Ads SDK并对其进行初始化。

创建一个Android Studio项目

在Android Studio中,创建一个名为MainActivity的新项目。

Android Studio添加活动对话框

包括移动广告SDK

要开始将AdMob与您的应用集成,您需要首先将Mobile Ads SDK包含到您的应用模块build.gradle文件中:

compile 'com.google.android.gms:play-services-ads:11.0.2'

如果您要将Firebase集成到您的应用中,则应使用Firebase的一部分SDK:

compile 'com.google.firebase:firebase-ads:11.0.2'

添加SDK之后,请确保同步项目,以便将库从Internet提取到您的应用程序中。

初始化移动广告

您需要先初始化Mobile Ads SDK,然后才能在Android应用上加载广告,因此请尽早进行。 我们创建一个扩展Application类的类,然后在该类的onCreate()方法中初始化MobileAds SDK,因为在启动应用程序时,该方法仅被调用一次。

import com.google.android.gms.ads.MobileAds;
import android.app.Application;

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MobileAds.initialize(this, "ca-app-pub-3940256099942544/6300978111");
    }
}

提供给MobileAds类的静态方法initialize()的第二个参数应该是注册AdMob时获得的AdMob应用ID。 在这种情况下,我们使用Google提供的公共应用程序ID进行演示。

修改清单文件

我们需要将创建的应用程序类添加到AndroidManifest.xml文件中的应用程序标记名称属性中。

<application
    android:name=".App">
</application>

在此文件中,还请确保包含INTERNET权限,以便Google移动广告可以投放。

<!-- Include required permissions for Google Mobile Ads to run. -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

在下面的代码段中,我们将 AdActivity 添加到了AndroidManifest中。 XML文件   文件中的文件。

<activity android:name="com.google.android.gms.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
          android:theme="@android:style/Theme.Translucent" />

此活动由SDK提供。 在横幅广告中,当用户点击广告时,将其启动即可查看,这对于横幅广告非常有用;对于插页式广告,当用户点击广告时,它用于显示广告。

1.横幅广告

横幅广告覆盖了当前可见屏幕的一部分。 换句话说,您应用程式和广告中的任何内容都会一起显示在萤幕上。 这可以改善用户体验,因为与插页式广告不同,您的用户可以在广告展示期间继续使用您的应用(请稍等片刻,我们稍后会介绍)。 请注意,横幅广告可以是文字或图片。

让我们看看如何实施横幅广告。

在布局中添加横幅广告

AdView是一个自定义ViewGroup ,它将包含横幅广告,因此我们需要编辑activity_banner_ad。 xml布局文件以包含此视图。

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
                xmlns:ads="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="com.chikeandroid.tutsplus_admob.MainActivity">

    <TextView android:text="Hello World"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" />

    <com.google.android.gms.ads.AdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="BANNER"
            ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
    </com.google.android.gms.ads.AdView>
</RelativeLayout>

我们使用属性ads:adSize并将其设置为BANNER来定义AdView大小。 其他可用的替代方法是LARGE_BANNERFULL_BANNERSMART_BANNER等。

ads:adUnitId AdView属性设置为Google提供的示例广告单元。 如果您想从广告中实际赚钱,则必须使用与您的帐户相关联的广告单元进行更新!

广告单元ID标识广告展示位置,您可以在AdMob管理控制台中找到它。 该ID可以告诉AdMob在您的应用上展示的广告类型以及显示格式(图片,文字或视频)。

载入广告

为了最终显示广告,我们需要发出请求,然后将其显示在上面在BannerAdActivity类中创建的AdView中。

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class BannerAdActivity extends AppCompatActivity {
    private AdView mAdView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mAdView = (AdView) findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
                .build();
        mAdView.loadAd(adRequest);
    }
}

我们通过使用构建器创建AdRequest实例来发出广告请求。 然后,我们使用方法addTestDevice() ,传入设备ID作为参数,以接收对该设备的测试广告,在我们的示例中为模拟器。 然后,我们最终调用了AdView方法loadAd() ,该方法接受此AdRequest实例,然后将广告加载到后台线程中(以免阻塞UI /主线程)。

测试广告

此时,我们可以运行我们的项目并查看结果。

应用显示横幅广告

从上方的屏幕截图中,我们可以看到测试横幅广告显示在视图下方。 现在,通过点击与广告互动。

使用AdListener监听广告事件

现在,让我们探讨一下我们可以在广告中观察到的事件或回调。 这些是可用的事件:

// ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ... 
        mAdView.setAdListener(new AdListener() {
        
                    @Override
                    public void onAdLoaded() {
                        super.onAdLoaded();
                        Toast.makeText(MainActivity.this, "onAdLoaded()", Toast.LENGTH_SHORT).show();
                    }
        
                    @Override
                    public void onAdOpened() {
                        super.onAdOpened();
                        Toast.makeText(MainActivity.this, "onAdOpened()", Toast.LENGTH_SHORT).show();
                    }
        
                    @Override
                    public void onAdClosed() {
                        super.onAdClosed();
                        Toast.makeText(MainActivity.this, "onAdClosed()", Toast.LENGTH_SHORT).show();
                    }
        
                    @Override
                    public void onAdFailedToLoad(int i) {
                        super.onAdFailedToLoad(i);
                        Toast.makeText(MainActivity.this, "onAdFailedToLoad()", Toast.LENGTH_SHORT).show();
                    }
        
                    @Override
                    public void onAdLeftApplication() {
                        super.onAdLeftApplication();
                        Toast.makeText(MainActivity.this, "onAdLeftApplication()", Toast.LENGTH_SHORT).show();
                    }
            });
    }

    @Override
    public void onPause() {
        // This method should be called in the parent Activity's onPause() method.
        if (mAdView != null) {
            mAdView.pause();
        }
        super.onPause();
    }
    
    @Override
    public void onResume() {
        super.onResume();
        // This method should be called in the parent Activity's onResume() method.
        if (mAdView != null) {
            mAdView.resume();
        }
    }
    
    @Override
    public void onDestroy() {
        // This method should be called in the parent Activity's onDestroy() method.
        if (mAdView != null) {
            mAdView.destroy();
        }
        super.onDestroy();
    }
}

添加侦听器后,再次运行项目并与广告互动。 通过观看我们创建的敬酒来观察正在调用的事件。

2.非页内广告

我们已经看到了展示横幅广告有多么容易。 现在,让我们看看如何制作插页式广告。

插页式广告是一种覆盖您应用程序整个屏幕的广告,没有空间让您的应用程序其他视图显示(很快就会看到)。 由于这会占用整个屏幕,并且如果网络速度较慢也需要花费一些时间来加载,因此您需要注意不要惹恼用户。 因此,理想情况下,这些插页式广告应该在您的应用中自然休息时显示,例如在游戏中的关卡之间显示,而不是在用户处于其他任务中间时显示。

import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class InterstitialAdActivity extends AppCompatActivity {
    private InterstitialAd mInterstitialAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loadInterstitialAd();
    }

    private void loadInterstitialAd() {
        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.setAdListener(new AdListener() {

            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                Toast.makeText(MainActivity.this, "onAdLoaded()", Toast.LENGTH_SHORT).show();
                if(mInterstitialAd.isLoaded()) {
                    mInterstitialAd.show();
                }
            }

            @Override
            public void onAdFailedToLoad(int i) {
                super.onAdFailedToLoad(i);
                Toast.makeText(MainActivity.this, "onAdFailedToLoad()", Toast.LENGTH_SHORT).show();
            }
        });

        AdRequest adRequest = new AdRequest.Builder().build();
        mInterstitialAd.loadAd(adRequest);
    }
}

在上面的代码中,我们声明和初始化的类的实例InterstitialAdInterstitialAdActivity类。 我们通过将Google提供的参数作为唯一参数传递给setAdUnitId()方法setAdUnitId()设置添加单位ID。

就像我们对横幅广告所做的一样,我们希望监听广告中的事件,因此我们设置了一个监听器来触发onAdLoaded()onAdFailedToLoad(int i)的重载方法。 我们通过使用其构建器创建AdRequest类的实例,然后调用方法loadAd()并将此请求作为参数传递给该方法来发出广告请求。 我们使用isLoaded()方法确定何时加载广告,然后调用show()方法最终显示广告。

您也可以像添加横幅广告一样添加AdListener

测试广告

现在,我们可以运行该应用程序并查看结果。

应用显示插页式广告

在上面的屏幕截图中,您可以看到我们的测试插页式广告正在展示。

3.原生Ads Express

Native Ads Express使您(发布商)能够自定义广告的外观,以使其自然地适合您的应用。 通过定义CSS模板来完成此自定义操作,在该模板中,您可以从AdMob帐户中定义自己的字体,颜色,大小等。 但是,您无法更改图像,说明和标题,这些是由广告商设置的。

定制的广告可以在NativeExpressAdView显示在您的应用中。

在布局中包含NativeExpressAdView

下面,我们在布局文件中包含NativeExpressAdView ,它是一个ViewGroup 。 我们还定义了android:layout_heightandroid:layout_widthwrap_contentads:adSize将为"320x300" ,我们将使用Google提供的NativeExpress广告单元ID(仅用于演示)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:ads="http://schemas.android.com/apk/res-auto"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context="com.chikeandroid.tutsplus_admob.BannerAdActivity">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Native Express Ad!" />

    <com.google.android.gms.ads.NativeExpressAdView
            android:id="@+id/adView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            ads:adSize="320x300"
            ads:adUnitId="ca-app-pub-3940256099942544/2177258514">
    </com.google.android.gms.ads.NativeExpressAdView>

</RelativeLayout>

载入广告

接下来,我们构建AdRequest ,然后开始加载要显示的广告。 我们还将添加代码以响应Activity生命周期回调。 您也可以根据需要添加AdListener ,就像横幅广告一样。

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.NativeExpressAdView;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

public class NativeExpressAdActivity extends AppCompatActivity {
    NativeExpressAdView mNativeExpressAdView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_native_ad);

        mNativeExpressAdView = (NativeExpressAdView) findViewById(R.id.adView);

        AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
        adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);

        mNativeExpressAdView.loadAd(adRequestBuilder.build());
    }

    @Override
    public void onResume() {
        super.onResume();
        mNativeExpressAdView.resume();
    }

    @Override
    public void onPause() {
        mNativeExpressAdView.pause();
        super.onPause();
    }

    @Override
    public void onDestroy() {
        mNativeExpressAdView.destroy();
        super.onDestroy();
    }
}

测试广告

而已! 现在,您可以运行该应用程序,并查看运行中的Native Express广告。

应用显示NativeExpressAdView

创建自己的AdMob帐户

现在我们已经了解了不同类型的广告,您可以继续将它们集成到您的应用程序中。 要开始展示真实的广告并赚钱,您需要一个AdMob帐户-具有与广告客户的真实广告相关联的真实广告单元ID。 只需访问AdMob网站即可注册!

AdMob网站主屏幕

结论

在本教程中,您了解了AdMob以及如何在Android上集成不同的AdMob广告格式,例如横幅广告,插页式广告和原生快速广告。

翻译自: https://code.tutsplus.com/tutorials/how-to-monetize-your-android-apps-with-admob--cms-29255

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值