android接入admob开屏广告

最近admob推出开屏广告、刚好公司也在做海外广告这块的业务。于是开始接入开屏广告,展示图如下:

个人感觉开屏广告比较像插屏广告、实现如下:

1、添加依赖;

 implementation 'com.google.firebase:firebase-ads:19.4.0'
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

 2、AndroidManifest.xml

<meta-data
    android:name="com.google.android.gms.ads.APPLICATION_ID"
    android:value="ca-app-pub-3940256099942544~3347511713" />

3、关于admob测试广告位:

  String test_appid = "ca-app-pub-3940256099942544~3347511713";
    String test_interId = "ca-app-pub-3940256099942544/1033173712";
    String test_banner = "ca-app-pub-3940256099942544/6300978111";
    String test_native = "ca-app-pub-3940256099942544/2247696110";
    String test_open = "ca-app-pub-3940256099942544/3419835294";

4、Application添加如下代码:

 private static AppOpenManager appOpenManager;
  @Override
    public void onCreate() {
        super.onCreate();
      initOPenScreen();
    }
 private void initOPenScreen() {
        MobileAds.initialize(
                this,
                initializationStatus -> {
                });
        appOpenManager = new AppOpenManager(this);
    }

5、AppOpenManager

package com.duonami.funny.flower.ads;

/**
 * 开屏广告工具类
 */

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.ProcessLifecycleOwner;

import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.appopen.AppOpenAd;

import java.util.Date;

import static androidx.lifecycle.Lifecycle.Event.ON_START;

/**
 * Prefetches App Open Ads and handles lifecycle detection.
 */
public class AppOpenManager implements LifecycleObserver, FlowerApplication.ActivityLifecycleCallbacks {
    private static final String LOG_TAG = "AppOpenManager";
    private static final String AD_UNIT_ID = Constant.release_open;
    private AppOpenAd appOpenAd = null;

    private AppOpenAd.AppOpenAdLoadCallback loadCallback;

    private final FlowerApplication myApplication;
    private Activity currentActivity;
    //展示广告
    private static boolean isShowingAd = false;

    private long loadTime = 0;

    /**
     * Constructor
     */
    public AppOpenManager(FlowerApplication myApplication) {
        this.myApplication = myApplication;
        //监听activity
        this.myApplication.registerActivityLifecycleCallbacks(this);
        ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
    }

    @OnLifecycleEvent(ON_START)
    public void onStart() {
        showAdIfAvailable();
        Log.d(LOG_TAG, "onStart");
    }

    /**
     * Request an ad
     */
    public void fetchAd() {
        // We will implement this below.
        if (isAdAvailable()) {
            return;
        }

        loadCallback = new AppOpenAd.AppOpenAdLoadCallback() {
            /**
             * Called when an app open ad has loaded.
             *
             * @param ad the loaded app open ad.
             */
            @Override
            public void onAppOpenAdLoaded(AppOpenAd ad) {
                AppOpenManager.this.appOpenAd = ad;
                AppOpenManager.this.loadTime = (new Date()).getTime();
                Log.d(LOG_TAG, "openScreenAd is load");
            }

            /**
             * Called when an app open ad has failed to load.
             *
             * @param loadAdError the error.
             */
            @Override
            public void onAppOpenAdFailedToLoad(LoadAdError loadAdError) {
                // Handle the error.
                Log.d(LOG_TAG, "开屏加载失败--" + loadAdError.getMessage());
            }


        };
        AdRequest request = getAdRequest();
        AppOpenAd.load(
                myApplication, AD_UNIT_ID, request,
                AppOpenAd.APP_OPEN_AD_ORIENTATION_PORTRAIT, loadCallback);
    }


    /**
     * Creates and returns ad request.
     */
    private AdRequest getAdRequest() {
        return new AdRequest.Builder().build();
    }

    /**
     * Utility method that checks if ad exists and can be shown.
     */
    public boolean isAdAvailable() {
        return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    }

    @Override
    public void onActivityStarted(Activity activity) {
        currentActivity = activity;
    }

    @Override
    public void onActivityResumed(Activity activity) {
        currentActivity = activity;
    }

    @Override
    public void onActivityStopped(Activity activity) {
    }

    @Override
    public void onActivityPaused(Activity activity) {
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        currentActivity = null;
    }

    /**
     * Shows the ad if one isn't already showing.
     */
    public void showAdIfAvailable() {
        // Only show ad if there is not already an app open ad currently showing
        // and an ad is available.
        if (!isShowingAd && isAdAvailable()) {
            Log.d(LOG_TAG, "Will show ad.");
            FullScreenContentCallback fullScreenContentCallback =
                    new FullScreenContentCallback() {

                        @Override
                        public void onAdDismissedFullScreenContent() {
                            // Set the reference to null so isAdAvailable() returns false.
                            AppOpenManager.this.appOpenAd = null;
                            isShowingAd = false;
                            fetchAd();
                        }

                        @Override
                        public void onAdFailedToShowFullScreenContent(AdError adError) {
                        }

                        @Override
                        public void onAdShowedFullScreenContent() {
                            isShowingAd = true;
                        }

                    };

            appOpenAd.show(currentActivity, fullScreenContentCallback);

        } else {
            Log.d(LOG_TAG, "Can not show ad.");
            fetchAd();
        }
    }

    /**
     * Utility method to check if ad was loaded more than n hours ago.
     */
    private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
        long dateDifference = (new Date()).getTime() - this.loadTime;
        long numMilliSecondsPerHour = 3600000;
        return (dateDifference < (numMilliSecondsPerHour * numHours));
    }
}

整个接入就完成了,运行项目即可展示开屏

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在 Android 应用中接入 AdMob 广告,需要进行以下步骤: 1. 注册 AdMob 账号并创建广告单元 2. 在 Android Studio 中添加 AdMob SDK 3. 在 AndroidManifest.xml 文件中添加必要的权限和服务 4. 在布局文件中添加 AdView 控件 5. 在代码中加载广告并显示 以下是一个简单的示例: 1. 注册 AdMob 账号并创建广告单元 在 AdMob 的网站上注册账号,并创建一个广告单元。记下广告单元 ID,稍后将用到。 2. 在 Android Studio 中添加 AdMob SDK 在 app 模块的 build.gradle 文件中添加以下依赖: ```groovy implementation 'com.google.android.gms:play-services-ads:20.4.0' ``` 3. 在 AndroidManifest.xml 文件中添加必要的权限和服务 添加以下权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` 添加以下服务: ```xml <service android:name="com.google.android.gms.ads.AdService" android:exported="false" /> ``` 4. 在布局文件中添加 AdView 控件 在需要显示广告的布局文件中添加 AdView 控件: ```xml <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="YOUR_AD_UNIT_ID" /> ``` 将 `adUnitId` 替换为你的广告单元 ID。 5. 在代码中加载广告并显示 在 Activity 或 Fragment 中加载广告并显示: ```java import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 加载 AdView 控件 mAdView = findViewById(R.id.adView); // 创建广告请求 AdRequest adRequest = new AdRequest.Builder().build(); // 加载广告 mAdView.loadAd(adRequest); } @Override protected void onPause() { // 暂停广告 mAdView.pause(); super.onPause(); } @Override protected void onResume() { super.onResume(); // 恢复广告 mAdView.resume(); } @Override protected void onDestroy() { // 销毁广告 mAdView.destroy(); super.onDestroy(); } } ``` 以上就是接入 AdMob 广告的基本步骤。需要注意的是,为了获得更好的广告收益,建议遵循 Google 的广告政策并遵守良好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值