Android:如何在应用程序中集成admob?

时间:2013-08-07 05:36:41

标签: android admob

我试图在我的应用程序中整合admob横幅几个小时,但我不能这样做,所以我创建了新的应用程序,唯一的目的是显示admob横幅,但它也不起作用。这是代码

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    AdView adView = new AdView(this, AdSize.BANNER, "XXX");
    adView.setVisibility(View.VISIBLE);

    RelativeLayout layout = new RelativeLayout(this);

    RelativeLayout.LayoutParams adParams =
        new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                                        RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_TOP);

    layout.addView(adView, adParams);
    setContentView(layout);

    AdRequest adRequest = new AdRequest();
    adView.loadAd(adRequest);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

这是我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.zzzzzz_admobtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.zzzzzz_admobtest.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
      android:name="com.google.ads.AdActivity"
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
</application>

</manifest>

我做错了什么?

另外,当我输出adView.isActivated()和adView.isReady()时,它们都是假的。

我使用“XXX”代替ID,因为我没有。这可能是个问题吗?

我正在使用设备。这是关于ligcat的错误

08-07 22:43:04.248:E / ActivityThread(24181):无法找到com.google.plus.platform的提供商信息 08-07 22:43:04.454:E / Ads(24181):JS:未捕获的ReferenceError:未定义AFMA_getSdkConstants(http://media.admob.com/:1) 08-07 22:43:04.454:E / Web控制台(24181):未捕获的ReferenceError:http://media.admob.com/:1未定义AFMA_getSdkConstants

此代码可以修复最后2个错误

   (new Thread() {
        public void run() {
             Looper.prepare();
            adView.loadAd(new AdRequest());
        }
    }).start();

据我所知,第一个不是错误,只是一个警告。 那为什么这不起作用?

7 个答案:

答案 0 :(得分:2)

  

我使用“XXX”代替ID,因为我没有。可能是一个   问题

是。绝对没错。注册Admob帐户。获取一个ID并使用它。

答案 1 :(得分:1)

Android-manifest中缺少元数据标记。查看已有的资源Example

 <meta-data
            android:name="ADMOB_PUBLISHER_ID"
            android:value="XXXX" />

答案 2 :(得分:1)

这个问题有点老了,但我想回答一下,因为出现了新技术,这让AdMob集成变得非常容易。在大多数情况下,您不需要另外编写任何代码,只需创建和.apk文件,Admob将自动注入其中。

  1. 输入FGL Enhance。选择要集成的SDK。您可以使用此服务选择多个不同的SDK,在本教程中,我们只选择“我想自己选择SDK”中的Admob。
  2. 实际上,您只需选中其复选框即可集成20多个SDK。此列表包括各种广告提供商,崩溃报告,杜比音频等

    1. 选择,使用何种开发技术构建您的应用。如果要显示/隐藏横幅,则需要连接轻量级拖放库并添加1行代码。根据您选择的技术,您将获得代码示例和连接器库下载链接。
    2. 但是如果您只是希望横幅一直显示在屏幕上,这是最简单的解决方案,您无需更改游戏代码!这个解决方案叫做ZeroCode,适用于任何开发技术:.apk和.ipa的事件,你可以从HTML5游戏或Game Maker获得。

      1. 在此页面上,您可以选择将在您的应用中显示的广告类型。 插页式广告 - 级别之间的广告 奖励视频 - 视频,奖励观看 灵活的横幅 - 横幅,可以隐藏/显示在游戏代码中 持久横幅 - 横幅,将始终保留在屏幕上(但可以从AdMob设置获得横幅旋转) Pre-Roll - 广告,显示为应用程序启动(如在ketchapp的游戏中)
      2. 最后两种类型标记为ZeroCode。您无需在游戏中对任何内容进行编码即可将其集成。对于我们的示例,我们只选择一个持久性横幅。

        1. 现在上传我们的应用程序。

        2. 在下一个屏幕上,我们可以选择横幅类型。我们可以使用例如SMART_BANNER或AdMob帮助中的任何其他横幅类型。我们还会从AdMob帐户输入横幅ID。在AdMob帐户中创建横幅时,我们可以设置刷新间隔。

        3. 最后一步 - 签名方法选择。您可以使用自己的开发人员证书,然后您可以在注册AdMob后立即将游戏提交到商店。您可以选择测试证书以在自己的设备上测试应用程序。或者,您可以下载未签名的应用并在提交到商店之前在本地进行签名。

        4. 还有一个进度条......

          我们来了!

        5. 对于开发人员来说,Enhance服务是完全免费的。您将从广告中获得相同的金额,就像您手动整合广告一样。 FGL从SDK提供商那里获得收入,因为事实上,FGL Enhance使得SDK对新开发者更具吸引力。

          来源:http://www.airapport.com/2016/09/tutorial-how-to-quickly-integrate-admob.html

答案 3 :(得分:1)

如何将AdMob和Facebook标语广告集成到Android应用程序中

Build.Gradle:

implementation 'com.google.android.gms:play-services-ads:19.1.0'
implementation 'com.facebook.android:audience-network-sdk:5.+'

MyAplication.java:

AudienceNetworkAds.initialize(this);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

Manifest.xml:

<meta-data
     android:name="com.google.android.gms.ads.APPLICATION_ID"
     android:value="App_ID_Here.."/>    //Test App ID For Testing Purpose.
<activity
     android:name="com.facebook.ads.AudienceNetworkActivity"
     android:configChanges="keyboardHidden|orientation|screenSize" />

权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

public class MainActivity extends AppCompatActivity {
    
        private LinearLayout bannerView;
    
            //Banner
        private AdView facebookAdView;
        private com.google.android.gms.ads.AdView admobAdView;
    
            //Interstitial
        private InterstitialAd facebookInterstitialAds;
        private com.google.android.gms.ads.InterstitialAd adMobInterstitialAds;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            bannerView = (LinearLayout) findViewById(R.id.bannerView);
    
            //Load Banner Ads
            showFacebookBannerAds();
    
            //Load Interstitial Ads
            showFacebookInterstitial();
        }
    
        private void showFacebookBannerAds() {
    
            facebookAdView = new AdView(this, "Facebook_Banner_ID", AdSize.BANNER_HEIGHT_50);
            bannerView.addView(facebookAdView);
    
            facebookAdView.setAdListener(new AdListener() {
                @Override
                public void onError(Ad ad, AdError adError) {
                    //If Load Fail then
                    showAdMobBanner();
                }
                @Override
                public void onAdLoaded(Ad ad) {
                }
                @Override
                public void onAdClicked(Ad ad) {
                }
                @Override
                public void onLoggingImpression(Ad ad) {
                }
            });
    
            facebookAdView.loadAd();
        }
    
        private void showAdMobBanner() {
            admobAdView = new com.google.android.gms.ads.AdView(this);
            admobAdView.setAdSize(com.google.android.gms.ads.AdSize.SMART_BANNER);
            admobAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
            bannerView.addView(admobAdView);
    
            admobAdView.loadAd(new AdRequest.Builder().build());
        }
    
    
        //Interstitial Ads
        private void showFacebookInterstitial() {
    
            facebookInterstitialAds = new InterstitialAd(this, "Interstitial_Ad_ID");
            facebookInterstitialAds.setAdListener(new InterstitialAdListener() {
                @Override
                public void onInterstitialDisplayed(Ad ad) {
                }
                @Override
                public void onInterstitialDismissed(Ad ad) {
                    //any work on ads close
                    finish();
                }
                @Override
                public void onError(Ad ad, AdError adError) {
                   //if load fail then
                    loadAdMobInterstitial();
                }
                @Override
                public void onAdLoaded(Ad ad) {
                }
                @Override
                public void onAdClicked(Ad ad) {
                    
                }
                @Override
                public void onLoggingImpression(Ad ad) {
                }
            });
            facebookInterstitialAds.loadAd();
        }
    
        private void loadAdMobInterstitial() {
            adMobInterstitialAds = new com.google.android.gms.ads.InterstitialAd(this);
            adMobInterstitialAds.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
            adMobInterstitialAds.loadAd(new AdRequest.Builder().build());
    
            adMobInterstitialAds.setAdListener(new AdListener() {
                @Override
                public void onAdClosed() {
                    super.onAdClosed();
                    //any work on ads close
                    finish();
                }
            });
        }
    
            //Interstitial Ads show on button click listener
    
        public void showAds(View view){
    
            if (facebookInterstitialAds.isAdLoaded())
                facebookInterstitialAds.show();
            else if (adMobInterstitialAds!=null)
                if (adMobInterstitialAds.isLoaded())
                    adMobInterstitialAds.show();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            if (admobAdView != null)
                admobAdView.pause();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            if (admobAdView != null)
                admobAdView.resume();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (facebookAdView != null)
                facebookAdView.destroy();
            if (admobAdView != null)
                admobAdView.destroy();
    
            if (facebookInterstitialAds != null)
                facebookInterstitialAds.destroy();
        }
    }

答案 4 :(得分:0)

在onCreate中添加两行

AdView ad = (AdView) findViewById(R.id.adView);
ad.loadAd(new AdRequest());

在您的XML中添加AddView,如

 <com.google.ads.AdView
    android:id="@+id/adView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="@string/ads_unit_id"
    ads:loadAdsOnCreate="true" />

答案 5 :(得分:0)

您可以从here

下载完整的源代码

在您的依赖项中添加以下lib

 compile 'com.google.android.gms:play-services-ads:7.8.0'

智能横幅

在xml文件中添加以下内容

   <com.google.android.gms.ads.AdView
    android:id="@+id/ad_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="@string/banner_ad_unit_id" />

在java文件中添加以下内容

    mAdView = (AdView) findViewById(R.id.ad_view);
    AdRequest adRequest = new AdRequest.Builder().build();

    // Start loading the ad in the background.
    mAdView.loadAd(adRequest);

对于非页内广告

 mInterstitialAd = new InterstitialAd(MainActivity.this);
    mInterstitialAd.setAdUnitId(getResources().getString(R.string.full_screen_ad_unit_id));

    AdRequest adRequestFull = new AdRequest.Builder().build();

    mInterstitialAd.loadAd(adRequestFull);
    mInterstitialAd.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            super.onAdLoaded();
            // Full screen advertise will show only after loading complete
            mInterstitialAd.show();
        }
    });

答案 6 :(得分:0)

    adView = (AdView) findViewById(R.id.adView);
    AdRequest request = new AdRequest.Builder()
            .addTestDevice("ca-app-pub-3940256099942544/6300978111")
            .build();

这里已经回答了

https://stackoverflow.com/a/48031375/9155209