开始

要展示广告并赚取收入,第一步是将 Google 移动广告 SDK 集成到应用中。集成 SDK 后,您可以选择一种广告格式,如原生广告或激励视频广告,然后按照相应步骤进行实现。

准备工作

为了让您的应用做好准备,请完成以下部分中的步骤。

应用前提条件

  • 使用 Android Studio 3.2 或更高版本
  • 确保您应用的 build 文件使用以下值:

    • minSdkVersion16 或更高版本
    • compileSdkVersion28 或更高版本

在您的 AdMob 帐号中设置您的应用

完成以下步骤,将您的应用注册为 AdMob 应用:

  1. 登录注册 AdMob 帐号。

  2. 在 AdMob 中注册您的应用。此步骤将创建一个具有唯一 AdMob 应用 ID 的 AdMob 应用,本指南稍后需要用到此 ID。

配置您的应用

  1. 在您的项目级 build.gradle 文件中,同时在 buildscriptallprojects 两个部分中添加 Google 的 Maven 代码库Maven 中央代码库

    buildscript {
        repositories {
            google()
            mavenCentral()
        }
    }
    
    allprojects {
        repositories {
            google()
            mavenCentral()
        }
    }
    
  2. 将 Google 移动广告 SDK 的依赖项添加到您的模块的应用级 Gradle 文件,通常为 app/build.gradle

    dependencies {
      implementation 'com.google.android.gms:play-services-ads:20.5.0'
    
      // For apps targeting Android 12, add WorkManager dependency.
      constraints {
        implementation('androidx.work:work-runtime:2.7.0') {
            because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads
                       has a bug using PendingIntent without FLAG_IMMUTABLE or
                       FLAG_MUTABLE and will fail in apps targeting S+.'''
        }
      }
    }
    
  3. 将您的 AdMob 应用 ID(可在 AdMob 界面中找到)添加到应用的 AndroidManifest.xml 文件中。为此,请添加包含 android:name="com.google.android.gms.ads.APPLICATION_ID"<meta-data> 代码。您可以在 AdMob 界面中找到您的应用 ID。对于 android:value,请插入您自己的 AdMob 应用 ID,并用英文引号括起来。

    <manifest>
        <application>
            <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
            <meta-data
                android:name="com.google.android.gms.ads.APPLICATION_ID"
                android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
        </application>
    </manifest>
    

    在真实应用中,请使用您的实际 AdMob 应用 ID,而不是上面列出的 ID。不过,如果您只是想在一个 Hello World 应用中试用 SDK,则可使用上面显示的示例应用 ID。

    另请注意,如果未能如上所示添加 <meta-data> 代码,会导致崩溃,并显示以下消息:

    The Google Mobile Ads SDK was initialized incorrectly.
    

    (可选)为之前的版本声明 AD_ID 权限,以便与 Android S 兼容。

    如果您的应用使用 Google 移动广告 SDK 版本 20.4.0 或更高版本,您可以跳过此步骤,因为 SDK 会自动声明 com.google.android.gms.permission.AD_ID 权限并可在广告 ID 可用时随时访问。

    对于使用 Google 移动广告 SDK 版本20.3.0或更低版本,并且以 Android S 为目标平台的应用,则必须在 AndroidManifest.xml 文件中添加 com.google.android.gms.permission.AD_ID 权限,才能以 Android S 为目标平台:

    <manifest>
        <application>
            <meta-data
                android:name="com.google.android.gms.ads.APPLICATION_ID"
                android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    
            <-- For Android S devices & GMA SDK version 20.3.0 or lower -->
            <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
    
        </application>
    </manifest>
    

    如需详细了解 com.google.android.gms.permission.AD_ID 权限声明(包括如何停用),请参阅这篇 Play 管理中心文章

初始化 Google 移动广告 SDK

加载广告之前,请先调用 MobileAds.initialize(),以便让应用初始化 Google 移动广告 SDK。该方法将初始化相应 SDK,并在初始化完成后或 30 秒超时后回调完成监听器。此操作仅需执行一次,最好是在应用启动时执行。

在调用 MobileAds.initialize() 时,Google 移动广告 SDK 或中介合作伙伴 SDK 可能会预加载广告。 如果您需要获得欧洲经济区 (EEA) 用户的同意,请设置任何专门用于特定请求的标记(例如 tagForChildDirectedTreatmenttag_for_under_age_of_consent),或者在加载广告之前采取任何其他相关操作,并确保在初始化移动广告 SDK 之前先完成这些操作。

以下示例说明了如何在 Activity 中调用 initialize() 方法:

示例 MainActivity(节选)

Java

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });
    }
}

Kotlin

import com.google.android.gms.ads.MobileAds

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        MobileAds.initialize(this) {}
    }
}

如果您使用了中介功能,请等到调用完成处理程序后再加载广告,因为这可确保初始化所有中介适配器。

选择一种广告格式

现已导入 Google 移动广告 SDK,您随时可以植入广告了。AdMob 提供了许多不同的广告格式,您可以根据您应用的用户体验选择最契合的一款。

横幅广告是在设备屏幕的顶部或底部展示的矩形广告。用户与应用互动时,横幅广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。

植入横幅广告

插页式广告

插页式广告是全屏广告,它会覆盖整个应用界面,直到用户将其关闭。在应用执行流程的自然停顿点,例如游戏的不同关卡之间,或一项任务完成后,最适合投放这类广告。

植入插页式广告

原生广告

原生广告是一种与您应用的外观和风格融为一体的定制广告。您可以决定这类广告的投放方式和位置,从而让版式与应用的设计风格更为统一。

植入原生广告

激励广告

向观看短视频和与试玩广告及问卷调查互动的用户予以奖励的广告。该广告可供免费畅玩的应用创收。

植入激励广告

其他资源

GitHub 上的 Google 移动广告代码库演示了如何使用此 API 提供的不同广告格式。