开始使用

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

准备工作

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

应用要满足的前提条件

  • 确保您应用的 build 文件使用以下值:

    • 最低 SDK 版本为 21 或更高
    • 编译 SDK 版本为 34 或更高版本

在您的 AdMob 账号中设置应用

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

  1. 登录注册 AdMob 账号。

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

配置您的应用

  1. 在 Gradle 设置文件中,添加 Google 的 Maven 制品库Maven 中央制品库

    Kotlin

    pluginManagement {
      repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
      }
    }
    
    dependencyResolutionManagement {
      repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
      repositories {
        google()
        mavenCentral()
      }
    }
    
    rootProject.name = "My Application"
    include(":app")

    Groovy

    pluginManagement {
      repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
      }
    }
    
    dependencyResolutionManagement {
      repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
      repositories {
        google()
        mavenCentral()
      }
    }
    
    rootProject.name = "My Application"
    include ':app'
  2. 将 Google 移动广告 SDK 的依赖项添加到应用级 build 文件中:

    Kotlin

    dependencies {
      implementation("com.google.android.gms:play-services-ads:23.6.0")
    }

    Groovy

    dependencies {
      implementation 'com.google.android.gms:play-services-ads:23.6.0'
    }
  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>
    

    对于真实应用,请将示例应用 ID 替换为您的实际 AdMob 应用 ID。如果您只是想在 Hello World 应用中试用 SDK,则可以使用示例 ID。

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

    Missing application ID.
    

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

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

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

    <manifest>
     <application>
       <meta-data
           android:name="com.google.android.gms.ads.APPLICATION_ID"
           android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    
       <!-- For apps targeting Android 13 or higher & 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,并在 Google 移动广告 SDK 和适配器初始化完成后或 30 秒超时后调用完成监听器。此操作仅需执行一次,最好是在应用启动时执行。

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

以下示例展示了如何在 activity 内的后台线程中调用 initialize() 方法:

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);

    new Thread(
            () -> {
              // Initialize the Google Mobile Ads SDK on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
  }
}

Kotlin

import com.google.android.gms.ads.MobileAds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

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

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) {}
    }
  }
}

选择广告格式

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

横幅广告单元展示会占用应用的部分布局的矩形广告。它们可以在设定时段后自动刷新。也就是说,即使用户停留在应用中的同一个屏幕上,他们也会每隔一段时间就看到新广告。此种广告格式也是最容易植入的。

植入横幅广告

插页式广告

插页式广告单元用于在您的应用中展示全屏广告。请将这些广告单元放置在应用界面中的自然停顿点和过渡点,比如在游戏应用中过关后。

植入插页式广告

原生

原生广告是一种广告格式,您可以通过这种广告格式指定素材资源(如标题和号召性用语)在应用中的呈现方式。通过自行设置广告样式,您可以呈现出自然、不突兀的广告展示效果,从而使用户体验更加丰富。

植入原生广告

激励广告

激励广告单元可让用户通过玩游戏、接受调查或观看视频来获得游戏代币、额外的生命或积分等应用内奖励。您可以针对不同广告单元设置不同的奖励,并指定用户将会获得的奖励价值和奖品。

植入激励广告

插页式激励广告

插页式激励广告是一种激励用户的新型广告格式,采用这种格式时,您可以通过在应用中的自然过渡点自动展示的广告向用户提供奖励,如金币或额外的生命数。

与激励广告不同,用户无需自行选择即可观看插页式激励广告。

与激励广告中的选择观看提示不同,激励插页式广告需要一个介绍画面,其中显示提供的奖励,并可以让用户选择退出广告(如果他们想要退出)。

植入插页式激励广告

开屏广告

开屏广告是一种在用户打开或切换回您的应用时展示的广告格式。广告会叠加在加载屏幕上。

植入开屏广告

其他资源

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