CocosCreator接入GoogleAdMob激励广告

我们的App需要通过接入广告的方式来赚取收入,其中GoogleAdMob就是比较简单容易实现的一种。

我在文章中接入GoogleAdmob的方式是通过AndroidStudio原生来接入的。

 

一、前提条件

  • 使用 Android Studio 1.0 或更高版本
  • 定位到 Android API 级别 14 或更高级别
  • 推荐:创建 Google AdMob 帐号并注册应用。

 

二、广告类型

CocosCreator接入GoogleAdMob激励广告_第1张图片横幅广告是在应用布局中占据一处位置的矩形图片或文字广告。用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。

插页式广告

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

原生广告

CocosCreator接入GoogleAdMob激励广告_第3张图片原生广告是一种基于组件的广告格式,可让您自由地自定义素材资源(如标题和号召性用语)在应用中的呈现方式。通过自行选择字体、颜色和其他详细信息,您可以呈现出自然而不突兀的广告展示效果,进而提供更丰富的用户体验。

目前,原生广告尚处于封闭测试阶段,仅面向部分发布商提供。

激励广告

CocosCreator接入GoogleAdMob激励广告_第4张图片激励视频广告是一种全屏视频广告,用户可选择使用全屏模式观看,以换取应用内奖励。

下面,我们将开展激励广告的接入方式。

 

三、初始化全局SDK

1.在app文件夹外部build.gradle文件中增加这两行

CocosCreator接入GoogleAdMob激励广告_第5张图片

allprojects {
    repositories {
        google()
        jcenter()
    }
}

当然,如果有了就不用加了。

2.在app文件夹内部build.gradle文件中增加这一行

implementation 'com.google.android.gms:play-services-ads:17.2.0'

输入这行后同步一下:CocosCreator接入GoogleAdMob激励广告_第6张图片

3.在AndroidManifest.xml里增加以下内容:


    
        
        
    

CocosCreator接入GoogleAdMob激励广告_第7张图片

其中的YOUR_ADMOB_APP_ID就是上图中你的AdMob账号中的“应用ID”

CocosCreator接入GoogleAdMob激励广告_第8张图片

4.初始化MobileAds

加载广告之前,请先使用AdMob“应用ID”调用MobileAds.initialize(),以便让应用初始化移动广告SDK。此操作仅需要执行一次,最好是在应用启动时执行。

在AppActivity.java中加入以下代码:

CocosCreator接入GoogleAdMob激励广告_第9张图片

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

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

        // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
        MobileAds.initialize(this, "YOUR_ADMOB_APP_ID");
    }
    ...
}

至此,初始化已经完成了,如果要接入不同类型的广告,就可以直接接入。

 

四、接入激励广告SDK

当我们接到需要接入广告的需求的时候,可能我们App功能还没开发完成,还没上线到商店里,这样也可以接入广告测试吗?

答案当然是可以。

GoogleAdMob提供了测试广告ID:

广告格式 示例广告单元 ID
横幅广告 ca-app-pub-3940256099942544/6300978111
插页式广告 ca-app-pub-3940256099942544/1033173712
插页式视频广告 ca-app-pub-3940256099942544/8691691433
激励视频广告 ca-app-pub-3940256099942544/5224354917
原生高级广告 ca-app-pub-3940256099942544/2247696110
原生高级视频广告 ca-app-pub-3940256099942544/1044960115

在这里,我们首先初始化激励广告的SDK功能:

1.在AppActivity.java中加入以下代码

CocosCreator接入GoogleAdMob激励广告_第10张图片

public class AppActivity extends Cocos2dxActivity {

    private RewardedVideoAd mRewardedVideoAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
        if (!isTaskRoot()) {
            // Android launched another instance of the root activity into an existing task
            //  so just quietly finish and go away, dropping the user back into the activity
            //  at the top of the stack (ie: the last state of this task)
            // Don't need to finish it again since it's finished in super.onCreate .
            return;
        }
        // DO OTHER INITIALIZATION BELOW
        
        SDKWrapper.getInstance().init(this);
        CAAgent.enableDebug(false);

        // Sample AdMob app ID:
        MobileAds.initialize(this, "不能说");


        // Use an activity context to get the rewarded video instance.
        mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
        mRewardedVideoAd.setRewardedVideoAdListener(this);

        loadRewardedVideoAd();
    }

    private void loadRewardedVideoAd() {
        mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",
                new AdRequest.Builder().build());
    }

    @Override
    public void onRewarded(RewardItem reward) {
        Toast.makeText(this, "onRewarded! currency: " + reward.getType() + "  amount: " +
                reward.getAmount(), Toast.LENGTH_SHORT).show();
        // Reward the user.
    }

    .....
}

2.实现RewardedVideoAdListener接口

CocosCreator接入GoogleAdMob激励广告_第11张图片

public class AppActivity extends Cocos2dxActivity implements RewardedVideoAdListener
    @Override
    public void onRewarded(RewardItem reward) {
        Toast.makeText(this, "onRewarded! currency: " + reward.getType() + "  amount: " +
                reward.getAmount(), Toast.LENGTH_SHORT).show();
        // Reward the user.
    }

    @Override
    public void onRewardedVideoAdLeftApplication() {
        Toast.makeText(this, "onRewardedVideoAdLeftApplication",
                Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoAdClosed() {
        Toast.makeText(this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoAdFailedToLoad(int errorCode) {
        Toast.makeText(this, "onRewardedVideoAdFailedToLoad", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoAdLoaded() {
        Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoAdOpened() {
        Toast.makeText(this, "onRewardedVideoAdOpened", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoStarted() {
        Toast.makeText(this, "onRewardedVideoStarted", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onRewardedVideoCompleted() {
        Toast.makeText(this, "onRewardedVideoCompleted", Toast.LENGTH_SHORT).show();
    }

3.反复播放广告

把上面的onRewardedVideoAdClosed方法修改一下:

@Override
public void onRewardedVideoAdClosed() {
    // Load the next rewarded video ad.
    loadRewardedVideoAd();
}

然后再在我们需要弹出广告的地方调用以下方法:

if (mRewardedVideoAd.isLoaded()) {
    mRewardedVideoAd.show();
}

注意:我们需要在广告加载完成,也就是isLoaded()为true的时候调用。

至此,我们调用广告的功能就完成了!!!。。。。

4.做一个优化:有用的回调

要将父级 Activity 的生命周期事件转发给 RewardedVideoAd 对象,可在父级 Activity 的 onResume()onPause() 和 onDestroy() 方法中分别调用 resume()pause() 和 destroy() 方法。

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

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

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

这一个生命周期的回调有挺大的用处的,大家可以思考一下这个用处是什么。

 

 

你可能感兴趣的:(CocosCreator,接sdk,android,GooglePlay,AdMob,广告SDK,CocosCreator,Android)