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.
在Google AdMob中新建应用
- 进入AdMob的主页 选择新建应用
- 点击新建广告单元
- 选择你需要的广告类型
- 根据个人需要配置你的广告单元属性然后 点击完成
然后你就能得到你的专属广告id
初始化移动广告 SDK
加载广告之前,请先调用 MobileAds.initialize()
,以便让应用初始化移动广告 SDK。该方法将初始化相应 SDK,并在初始化完成后或 30 秒超时后回调完成监听器。此操作仅需执行一次,最好是在应用启动时执行。
警告:在调用 MobileAds.initialize() 时,移动广告 SDK 或中介合作伙伴 SDK 可能会预加载广告。如果您需要获得欧洲经济区 (EEA) 用户的同意,请设置任何专门用于特定请求的标记(例如 tagForChildDirectedTreatment 或 tag_for_under_age_of_consent),或者在加载广告之前采取任何其他相关操作,并确保在初始化移动广告 SDK 之前先完成这些操作。
以下示例说明了如何在 Activity 中调用 initialize() 方法:
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) {
}
});
}
}
横幅广告(banner)
横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。这类广告会在用户与应用互动时停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,不妨先从横幅广告着手。案例研究。
本指南介绍了如何将 AdMob 横幅广告植入到 Android 应用中。除了提供代码段和操作说明之外,本指南还介绍了如何正确地设置横幅广告的尺寸,并给出了其他资源的链接。
前提条件
- 导入 Google 移动广告 SDK(可以只导入其自身,也可以将其作为 Firebase 的一部分加以导入)。
向布局中添加 AdView
要展示横幅广告,首先要将 AdView
放置到您希望用于展示广告的 Activity
或 Fragment
的布局中。最简单的放置方法是将其添加到相应的 XML 布局文件中。下例展示了某一 Activity 的 AdView
:
# main_activity.xml
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
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>
请注意设置以下必需属性:
-
ads:adSize
- 将此属性设置为要使用的广告尺寸。如果您不想使用该常量定义的标准尺寸,可改为设置自定义尺寸。有关详情,请参阅下面的“横幅广告尺寸”部分。 -
ads:adUnitId
- 将此属性设置为您应用中用于展示广告的广告单元所用的唯一标识符。如果您要在不同的 Activity 中展示横幅广告,则其中每个都需要一个广告单元。
另外,您也可以通过编程方式创建 AdView
:
AdView adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.
警告:请确保以相同的方式设置广告尺寸和广告单元 ID,即确保两者均使用 XML 格式或均以编程方式进行设置。
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的帐号被暂停。
对于 Android 横幅广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:
ca-app-pub-3940256099942544/6300978111
(google 官方提供的simpleID)
该测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中随意使用该测试广告单元 ID。只是一定要在发布应用前用您自己的广告单元 ID 替换该测试广告单元 ID。
如需详细了解移动广告 SDK 的测试广告如何运作,请参阅测试广告。
加载广告
注意:请在主线程中进行对移动广告 SDK 的所有调用。
AdView 放置好后,下一步是加载广告。广告加载是使用 AdView
类中的 loadAd()
方法完成的。此方法需要一个 AdRequest
参数,该参数中包含关于单个广告请求的运行时信息(如定位信息)。
下例显示了如何通过 Activity
的 onCreate()
方法加载广告:
#### MainActivity(节选)
package ...
import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
注意:如果您的广告加载失败,只要已将广告单元配置为定期刷新,就无需再明确请求一个广告;Google 移动广告 SDK 会按照您在 AdMob 界面中指定的频率进行刷新。如果您尚未启用刷新,则需要发出新的请求。
大功告成!您的应用现在就可以展示横幅广告了。
广告事件
要进一步自定义您的广告行为,您可以在广告生命周期内加入许多事件,如加载、打开、关闭等等。您可以通过 AdListener
类监听这些事件。
要将 AdListener
用于 AdView
,请调用 setAdListener()
方法:
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdFailedToLoad(LoadAdError adError) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
});
AdListener
中每种可替换的方法均对应广告生命周期内的一个事件。
横幅广告尺寸
注意:横幅广告容器的尺寸必须至少与横幅广告一样大。如果容器留有内边距,容器的实际尺寸会有所减小。如果容器无法容纳横幅广告,则横幅广告不会展示,并且您的日志中会显示以下警告:
下表列出了标准的横幅广告尺寸。
尺寸(宽 x 高,以 dp 为单位) | 说明 | 适用范围 | AdSize 常量 |
---|---|---|---|
320x50 | 横幅广告 | 手机和平板电脑 | BANNER |
320x100 | 大型横幅广告 | 手机和平板电脑 | LARGE_BANNER |
300x250 | IAB 中矩形 | 手机和平板电脑 | MEDIUM_RECTANGLE |
468x60 | IAB 全尺寸横幅广告 | 平板电脑 | FULL_BANNER |
728x90 | IAB 页首横幅广告 | 平板电脑 | LEADERBOARD |
提供的宽度 x 自适应高度 | 自适应横幅广告 | 手机和平板电脑 | 无 |
屏幕宽度 x 32/50/90 | 智能横幅广告 | 手机和平板电脑 | SMART_BANNER |
要自定义横幅广告尺寸,请设置所需的 AdSize ,如下所示: |
AdSize adSize = new AdSize(300, 50);
针对视频广告启用硬件加速
为了确保视频广告在横幅广告视图中成功展示,必须启用硬件加速。
硬件加速默认处于启用状态,但有些应用可能会选择将其停用。如果您的应用停用了硬件加速,我们建议您为使用广告的 Activity 类启用硬件加速。
启用硬件加速
如果您的应用在全局级别启用硬件加速时无法正常运行,您也可以针对单个 Activity 启用或停用硬件加速。如需启用或停用硬件加速,您可以针对 AndroidManifest.xml
中的 <application>
和 <activity>
元素使用 android:hardwareAccelerated
属性。以下示例展示了如何为整个应用启用硬件加速,但为一个 Activity 停用硬件加速:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
如需详细了解用于控制硬件加速的选项,请参阅硬件加速指南。请注意,如果停用某个 Activity,将无法针对单个广告视图启用硬件加速,因此必须针对该 Activity 本身启用硬件加速。