簡體   English   中英

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

[英]Android: how to integrate admob in app?

我試圖在我的應用程序中集成 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: Uncaught ReferenceError: AFMA_getSdkConstants 未定義 ( http://media.admob.com/:1 ) 08-07 22:43:04.454: E/Web Console(24181): Uncaught ReferenceError: AFMA_getSdkConstants 未在http://media.admob定義.com/:1

此代碼可以修復最后 2 個錯誤

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

據我了解,第一個不是錯誤,而只是警告。 那么為什么這不起作用?

我使用“XXX”而不是 ID,因為我沒有。 會不會有問題?

是的。 絕對是的。 注冊一個 Admob 帳戶。 給自己一個 ID 並使用它。

Android-manifest.look 中缺少元數據標簽,查看已經可用的資源示例

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

這個問題有點老了,但我想回答它,因為出現了新技術,這讓 AdMob 集成變得非常容易。 在大多數情況下,您不需要額外編寫任何代碼,只需創建一個 .apk 文件,Admob 就會自動注入其中。

  1. 輸入FGL 增強 選擇要集成的 SDK。 您可以使用此服務選擇多個不同的 SDK,在本教程中,我們將僅從“我想自己選擇 SDK”中選擇 Admob。

實際上,您只需選中其復選框即可集成 20 多個可用的 SDK。 此列表包括各種廣告提供商、崩潰報告、杜比音頻等。

  1. 選擇用於構建您的應用程序的開發技術。 如果要顯示/隱藏橫幅,則需要連接輕量級拖放庫並添加 1 行代碼。 根據您選擇的技術,您將獲得代碼示例和連接器庫下載鏈接。

但是,如果您只想讓橫幅一直顯示在屏幕上,這是最簡單的解決方案,那么您無需更改游戲代碼! 該解決方案稱為 ZeroCode,適用於任何開發技術:.apk 和 .ipa 的事件,您從 HTML5 游戲或 Game Maker 獲得。

  1. 在此頁面上,您可以選擇將在您的應用中顯示的廣告類型。 Interstitial - 關卡之間的廣告 Rewarded Video - 視頻,觀看有獎勵。可用,來自 AdMob 設置) Pre-Roll - 廣告,在應用啟動時顯示(如在 ketchapp 的游戲中)

最后兩種類型被標記為 ZeroCode。 您無需在游戲中編寫任何代碼即可集成它們。 對於我們的示例,我們將只選擇一個 Persistent 橫幅。

  1. 現在上傳我們的應用程序。

  2. 在下一個屏幕上,我們可以選擇橫幅類型。 我們可以使用例如 SMART_BANNER 或 AdMob 幫助中的任何其他橫幅類型。 我們還將輸入來自 AdMob 帳戶的橫幅 ID。 在 AdMob 帳戶中創建橫幅時,我們可以設置刷新間隔。

  3. 最后一步——簽名方式選擇。 您可以使用您自己的開發者證書,然后您就可以在注入 AdMob 后立即將游戲提交到商店。 您可以選擇測試證書在您自己的設備上測試應用程序。 或者您可以下載一個未簽名的應用程序並在提交到商店之前在本地簽名。

  4. 又一個進度條...

    我們來了!

Enhance 服務對開發者是完全免費的。 您從廣告中獲得的收益與您手動集成廣告的收益相同。 FGL 從 SDK 提供商那里獲得收入,因為事實上 FGL Enhance 使 SDK 對新開發人員更具吸引力。

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

如何將 AdMob 和 Facebook 橫幅廣告集成到 Android 應用程序中

構建.Gradle:

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

我的應用程序.java:

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

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

在您的 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" />

你可以從這里下載完整的源代碼

在您的依賴項中添加以下庫

 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();
        }
    });
    adView = (AdView) findViewById(R.id.adView);
    AdRequest request = new AdRequest.Builder()
            .addTestDevice("ca-app-pub-3940256099942544/6300978111")
            .build();

已經在這里回答

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM