请教Admob的interstitial cell插页全屏广告效益如何

AdMob(app内嵌广告)插页广告_IOS_第七城市
AdMob(app内嵌广告)插页广告
插页广告插页式广告是叠加在应用上的全屏广告。它们通常在自然的应用转换点(如游戏关卡之间)显示。本指南阐述如何将插页式广告集成至 Google Mobile Ads iOS 应用中。我们提供的广告单元和示例将返回测试广告。即使您的帐户暂停或停用,测试广告也始终可用。如需了解详细信息,请查看&AdMob 政策&并深入了解无效 Activity。点击自己的实时广告违反 AdMob 政策。在开发和测试期间,请使用测试广告。如果您确实需要在发布前呈现直播广告,请避免点击它们。如果您点击直播广告,您的 AdMob 帐户可能被暂停。先决条件请仔细阅读&入门指南&中的将 SDK 添加到 Xcode 项目&部分。实用指南您可以从 GitHub 下载插页式广告示例,并遵照相关说明将插页式广告添加到您的项目中。OBJECTIVE-C&SWIFT您可能还需要阅读广告事件指南以充分利用插页式广告。 本指南中的部分示例使用广告事件执行更高级的插页式广告集成。将插页式广告添加到项目对于&GADInterstitial,建议您采用以下生命周期:在应用启动时预加载它,并在它准备就绪后选择合适的时机在应用中展示它。以下代码段展示了如何创建&GADInterstitial&属性、初始化该属性以及并通过广告加载它。OBJECTIVE-CSWIFT@import GoogleMobileAds;@interface ViewController ()@property(nonatomic, strong) GADInterstitial *interstitial;@end@implementation ViewController- (void)viewDidLoad {& [super viewDidLoad];& self.interstitial = [[GADInterstitial alloc] initWithAdUnitID:@&ca-app-pub-910&];& GADRequest *request = [GADRequest request];& // Requests test ads on test devices.& request.testDevices = @[@&d2b21a0c9b&];& [self.interstitial loadRequest:request];}当您准备显示插页式广告时,请在尝试显示之前检查它是否已准备就绪。 以下是一个在游戏结束时展示插页式广告的示例。 该应用必须在适当的时间显式调用此方法。OBJECTIVE-CSWIFT- (void)gameOver {& if ([self.interstitial isReady]) {& & [self.interstitial presentFromRootViewController:self];& }& // Rest of game over logic goes here.}结果以下是显示插页广告后的应用效果。仅加载 GADInterstitial 一次GADInterstitial&是仅限一次性使用的对象。若要请求另一个插页式广告,您需要分配一个新的&GADInterstitial&对象。分配另一个插页式广告的最佳位置是在&GADInterstitialDelegate&上的&interstitialDidDismissScreen:&方法中,以便在上一个插页式广告被清除后下一个插页式广告立即开始加载。您甚至可以考虑将插页式广告的初始化细分到其自身的 Helper 方法中。OBJECTIVE-CSWIFT- (void)viewDidLoad {& [super viewDidLoad];& self.interstitial = [self createAndLoadInterstitial];}- (GADInterstitial *)createAndLoadInterstitial {& GADInterstitial *interstitial =& & & [[GADInterstitial alloc] initWithAdUnitID:@&ca-app-pub-910&];& interstitial.delegate = self;& [interstitial loadRequest:[GADRequest request]];& return interstitial;}- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {& self.interstitial = [self createAndLoadInterstitial];}通过在上一个插页式广告被清除后立即预加载另一个插页式广告,您的应用可以为在下一个逻辑断点再次展示插页式广告做好准备。常见问题解答如何优化插页式广告的用户体验?请参阅插页式广告实现指南。我收到一条消息&Cannot present interstitial.It is not ready&。此错误意味着未成功提取插页广告。要防止出现此警告,请使用isReady&方法检查插页式广告是否已准备好进行展示。我收到错误消息&Request Error:Will not send request because interstitial object has been used&。插页式广告是仅限一次性使用的对象。您必须分配新的插页式广告对象才能进行另一个插页式广告请求。我没有收到任何返回的广告,但收到错误响应&Request Error:No ads to show&。在创建广告单元时,请确保将广告类型指定为&插页式广告&。 插页式广告不会投放到&横幅&类型的广告单元。
Linux-学习笔记(PHP向)&一&
MySQL数据库学习笔记&一&
最新教程周点击榜
微信扫一扫Cocos2d-x 2.x android 集成admob广告(三)banner+interstitial
1、创建一个 cocos2d-x项目 admob_combine
2、Eclipse :import-&admob_combine-&proj.android
3、Eclipse :Import -&libcocos2dx
选择 目录:……/cocos2d-x2.x/cocos2dx/platform/andorid/java,导入
Chapter2: 准备admob 测试帐号;
MY_INTERSTITIAL_ID = “ca-app-pub-910”;
MY_BANNER_ID = “ca-app-pub-111”;
Chapter3:把google-play-service.lib 加入项目android库。
add “google-play-services_lib ” to admob_combine 项目属性下的android 库。
Chapter4: 修改清单文件
1、androidManifest.xml内添加 admob广告支持。
&uses-permission android:name="android.permission.INTERNET"/&
&uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&
android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /&
android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" /&
Chapter5 修改java文件
5.1、路径在src/com.walkiway.admob_combine下
5.2、admob_combine.java
/**************************************************************************** Copyright (c)
Ricardo Quesada Copyright (c)
cocos2d-x.org Copyright (c) 2011 Zynga Inc. Copyright (c)
Chukong Technologies Inc. http://www.cocos2d-x.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ****************************************************************************/
package com.walkiway.admob_
import org.cocos2dx.lib.Cocos2dxA
import com.walkiway.admob_combine.AdmobP
import android.os.B
public class admob_combine extends Cocos2dxActivity {
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdmobPlugin.setActivity(this);
protected void onDestroy() {
AdmobPlugin.destroy();
super.onDestroy();
protected void onResume() {
AdmobPlugin.resume();
super.onResume();
protected void onPause() {
AdmobPlugin.pause();
super.onPause();
System.loadLibrary("cocos2dcpp");
Very Important: cocos2d-x 2.x下必须加这句,3.x下则不需要加
System.loadLibrary("cocos2dcpp");
5.3、com.walkiway.admob_combine下新建class -&AdmobPlugin
编辑AdmobPlugin 代码如下:
package com.walkiway.admob_
import android.app.A
import android.util.L
import android.view.V
import android.view.G
import android.graphics.C
import android.widget.LinearL
import android.widget.RelativeL
import com.google.android.gms.ads.AdL
import com.google.android.gms.ads.AdR
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.AdV
import com.google.android.gms.ads.AdS
import org.cocos2dx.lib.Cocos2dxA
public class AdmobPlugin {
private static Cocos2dxA
private static final String TAG = "cocos2d";
private static InterstitialA
private static AdView adV
private final static String MY_INTERSTITIAL_ID = "ca-app-pub-910";
private final static String MY_BANNER_ID = "ca-app-pub-111";
public static void setActivity(Cocos2dxActivity act){
activity =
public static void pause(){
Log.i(TAG, "pause");
if (adView != null) {
Log.i(TAG, "adview.pause");
adView.pause();
public static void destroy(){
Log.i(TAG, "destroy");
if (adView != null) {
Log.i(TAG, "adview.destroy");
adView.destroy();
public static void resume(){
Log.i(TAG, "resume");
if (adView != null) {
Log.i(TAG, "adview.resume");
adView.resume();
public static void showBanner(){
activity.runOnUiThread(new Runnable() {
public void run() {
if(adView == null){
adView = new AdView(activity);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(MY_BANNER_ID);
RelativeLayout relativeLayout=new RelativeLayout(activity);
activity.mFrameLayout.addView( relativeLayout );
RelativeLayout.LayoutParams adViewParams = new RelativeLayout.LayoutParams(
AdView.LayoutParams.WRAP_CONTENT,
AdView.LayoutParams.WRAP_CONTENT);
adViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
relativeLayout.addView(adView, adViewParams);
}catch (Exception e) {
Log.e("AdmobPlugin", e.toString());
AdRequest request = new AdRequest.Builder().addTestDevice("E5FDDF2B808AF").build();
adView.loadAd(request);
adView.setBackgroundColor(Color.BLACK);
adView.setBackgroundColor(0);
adView.setVisibility(View.VISIBLE);
public static void hideBanner(){
activity.runOnUiThread(new Runnable() {
public void run() {
if(adView != null){
adView.setVisibility(View.GONE);
public static void showInterstitial(){
activity.runOnUiThread(new Runnable() {
public void run() {
interstitial = new InterstitialAd(activity);
interstitial.setAdUnitId(MY_INTERSTITIAL_ID);
AdRequest adRequest = new AdRequest.Builder().addTestDevice("E5FDDF2B808AF").build();
interstitial.loadAd(adRequest);
interstitial.setAdListener(new AdListener() {
public void onAdLoaded() {
activity.runOnUiThread(new Runnable() {
public void run() {
interstitial.show();
Very Important: 修改文件后,这句可能报错。
//TO access mFrameLayout in Cocos2d-V3.3 make it public!!
activity.mFrameLayout.addView( relativeLayout );
所以需要接下来这步。
5.4 修改在libcocos2dx/src/org.cocos2dx.lib/Cocos2dxActivity.java
protected static FrameLayout mFrameL修改为
public static FrameLayout mFrameL
Chapter6 修改CPP文件
在class下添加AdmobWrapper.h 和 AdmobWrapper.cpp
#ifndef ADMOB_WRAPPER_H_
#define ADMOB_WRAPPER_H_
class AdmobWrapper{
static AdmobWrapper * getInstance();
static void setup();
static void showBanner();
static void hideBanner();
static void showInterstitial();
#endif /* defined(ADMOB_WRAPPER_H_) */
#include "AdmobWrapper.h"
#include &jni.h&
#include "platform/android/jni/JniHelper.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JAVA_CLASS_NAME "com/walkiway/admob_combine/AdmobPlugin"
using namespace cocos2d;
static AdmobWrapper * s_Instance = NULL;
AdmobWrapper * AdmobWrapper(){
if(s_Instance == NULL){
s_Instance = new AdmobWrapper();
return s_I
void AdmobWrapper(){
void AdmobWrapper(){
JniMethodI
bool isHave = JniHelper(minfo,
JAVA_CLASS_NAME,"showBanner","()V");
if(!isHave){
minfo.env-&CallStaticVoidMethod(minfo.classID,minfo.methodID);
void AdmobWrapper(){
JniMethodI
bool isHave = JniHelper(minfo,
JAVA_CLASS_NAME,"hideBanner","()V");
if(!isHave){
minfo.env-&CallStaticVoidMethod(minfo.classID,minfo.methodID);
void AdmobWrapper(){
JniMethodI
bool isHave = JniHelper(minfo,
JAVA_CLASS_NAME,"showInterstitial","()V");
if(!isHave){
minfo.env-&CallStaticVoidMethod(minfo.classID,minfo.methodID);
Very Important: 为了cpp中直接用 类名::函数名() 引用,.h文件中定义为:static void showBanner();
#include "AdmobWrapper.h"
AdmobWrapper::showInterstitial();
Chapter6: 编辑Android.mk 加入编译AdmobWrapper.cpp
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp\
../../Classes/AdmobWrapper.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += chipmunk_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cocos2dx)
$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)
$(call import-module,CocosDenshion/android)
$(call import-module,extensions)
$(call import-module,external/Box2D)
$(call import-module,external/chipmunk)
build_native.sh
Run -& Run as Android Application -& Wait ads to show
本文转载自 u的专栏 , 原文链接: , 转载请保留本声明!
每一个你不满意的现在,都有一个你没有努力的曾经。
Copyright (C) &&
&&Powered by&使用admob移动广告SDK在Android应用中集成插页式广告教程 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 16时,
KeyMob手机广告分为插页式广告与横幅广告,插页式广告是全屏广告,展示时会覆盖其宿主应用的界面。这些广告通常在应用流程的正常转换点展示,&例如,活动之间或游戏关卡之间的暂停时段。应用展示插页式广告时,用户可以选择点按广告,访问其目标网站,也可以将其关闭,返回应用。凭借直接的号召性用&语和较大的尺寸,插页式移动广告的效果十分突出。
代码片段(1)
1.&[代码]移动营销,移动互联网广告,移动广告优化平台&&&&
KeyMob手机广告分为插页式广告与横幅广告,插页式广告是全屏广告,展示时会覆盖其宿主应用的界面。这些广告通常在应用流程的正常转换点展示,例如,活动之间或游戏关卡之间的暂停时段。应用展示插页式广告时,用户可以选择点按广告,访问其目标网站,也可以将其关闭,返回应用。凭借直接的号召性用语和较大的尺寸,插页式移动广告的效果十分突出。
由于插页式广告尺寸较大,因此与传统横幅广告相比,它们平均所需的带宽更多。为了满足这一要求,应用必须异步加载插页式广告(在广告展示前加载)。这可以确保广告在应该展示的时间展示。
本指南说明了如何使用KeyMob移动广告SDK在Android应用中集成插页式广告,并介绍了一个简单的活动类,该类会使用SDK方法预加载并展示测试插页式广告。
一:前提条件
本指南中的示例代码来自一个已加入了KeyMob移动广告SDK 的项目。为了在您的应用中使用SDK,您需要在Android Studio中执行以下操作:
1:下载 Google Repository
2:配置 Gradle
3:修改清单
或在 Eclipse 中执行以下操作:
1:下载 Google Play 服务
2:加入和引用 Google Play 服务库项目
3:修改清单
二:将插页式广告添加至活动
最好提前加载插页式广告,并使其稍后在应用流程的自然暂停点展示。例如,假设一个简单的游戏运行一会后即会结束,然后向用户显示重新开始的按钮。以下代码段说明了如何在用户开始新游戏之前预加载并展示插页式广告:
public class MainActivity extends ActionBarActivity {
InterstitialAd mInterstitialAd;
Button mNewGameB
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNewGameButton=(Button)findViewById(R.id.newgame_button);
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-712");
requestNewInterstitial();
mNewGameButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
beginPlayingGame();
mInterstitialAd.setAdListener(new AdListener() {
public void onAdClosed() {
requestNewInterstitial();
beginPlayingGame();
beginPlayingGame();
private void requestNewInterstitial() {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("YOUR_DEVICE_HASH").build();
mInterstitialAd.loadAd(adRequest);
private void beginPlayingGame() {
// Play for a while, then display the New Game Button
该代码段不是为了介绍新的成员变量mInterstitial,而是为了让您了解活动中代码发生变化的四个位置。我们来分别看一下这些位置。
三:将 InterstitialAd 对象实例化
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-712");
requestNewInterstitial();
在此处构建了成员变量mInterstitialAd,并为其提供了广告单元 ID。虽然横幅广告通常是在 XML 布局文件中定义的,但插页式广告却不是在这类文件中定义的。它们是在应用的Java代码中创建并配置的。在活动有效期内,一个InterstitialAd对象就可用于请求并展示多个插页式广告,因此您只需构建该对象一次。
注意:我们在上文使用的广告单元 ID 会返回测试广告。您可以在为自己的应用创建广告单元。注意,虽然在此示例中我们已将广告单元 ID 硬编码到活动类中,但 ID 值还可以存储在字符串资源文件中。
四:展示插页式广告
mNewGameButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
beginPlayingGame();
此处的新代码会检查插页式广告是否已加载,如果已加载,则会展示该广告。如果没有可展示的广告,则应用会直接进入下一关游戏。
五:创建 AdListener
mInterstitialAd.setAdListener(new AdListener() {
public void onAdClosed() {
requestNewInterstitial();
beginPlayingGame();
我们在此处设置了一个包含onAdClosed事件(在插页式广告关闭时调用)处理程序的AdListener。上述代码会调用requestNewInterstitial方法,以开始下载新广告,并开始新游戏。
六:requestNewInterstitial
private void requestNewInterstitial() {
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("YOUR_DEVICE_HASH").build();
mInterstitialAd.loadAd(adRequest);
此处使用AdRequest.Builder对象创建了一个简单的请求,并且稍后将该请求传递给了InterstitialAd对象的loadAd方法,从而开始请求流程。
注意请求创建过程中addTestDevice方法的使用。在开发和测试应用时确保随时请求测试广告十分重要。使用已发布的广告进行测试违反AdMob政策,可能会导致您的帐户被暂停。如需详细了解测试广告的使用方法,请参阅我们的广告定位指南。
具体是怎么展示插页式广告时该应用的,我就不截图给大家看了。大家不妨自己按照上面的步骤就可以做出来要看到的外观。
开源中国-程序员在线工具:
相关的代码(132)
开源从代码分享开始
大街小巷的其它代码

我要回帖

更多关于 interstitial space 的文章

 

随机推荐