CocosCreator接入GoogleAdMob激励广告

35 篇文章 1 订阅
8 篇文章 0 订阅

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

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

 

一、前提条件

 

二、广告类型

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

插页式广告

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

原生广告

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

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

激励广告

激励视频广告是一种全屏视频广告,用户可选择使用全屏模式观看,以换取应用内奖励。

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

 

三、初始化全局SDK

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

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

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

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

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

输入这行后同步一下:

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

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

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

4.初始化MobileAds

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

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

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中加入以下代码

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接口

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

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

 

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值