簡體   English   中英

Facebook 廣告集成到 Android 應用程序中

[英]Facebook ads integration into Android app

我在將橫幅廣告添加到我的 Android 應用程序的此布局中時遇到問題。 但是這個廣告沒有顯示。 ActivityMain.java 中的實現沒有問題,因為當我添加其他布局時,橫幅開始顯示。

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:attribute="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".PlayerActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/gray_background" android:orientation="vertical"> // facebook banner ad <LinearLayout android:id="@+id/banner_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical" /> <developer.shivam.library.CrescentoContainer android:id="@+id/crescentoContainer" android:layout_width="match_parent" android:layout_height="440dp" android:elevation="20dp" android:scaleType="centerCrop" attribute:curvature="50dp"> <com.flaviofaria.kenburnsview.KenBurnsView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/wallpaper" /> <com.cleveroad.play_widget.PlayLayout android:layout_marginTop="?attr/actionBarSize" android:id="@+id/ivPhoto" android:layout_width="260dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> </developer.shivam.library.CrescentoContainer> <include layout="@layout/song_info" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>

截圖

如何在 android 中實現 Facebook 廣告,我將指導您如何實現 Facebook 橫幅廣告、插頁式廣告、原生廣告我使用數據綁定進行查看,因此如果您想通過使用 findviewbyid 手動執行此操作,則由您決定

1. Facebook 橫幅廣告:

gradle 文件中的第一個廣告 facebook 受眾網絡依賴項:

 implementation 'com.facebook.android:audience-network-sdk:6.2.0'


 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityFamousPlacesBinding binding = ActivityFamousPlacesBinding.inflate(getLayoutInflater());
    View view = binding.getRoot();
    setContentView(view);

    com.facebook.ads.AdView adView = new com.facebook.ads.AdView(FamousPlacesActivity.this, getString(R.string.fb_placement_banner), AdSize.BANNER_HEIGHT_50);
    LinearLayout bannerContainer = findViewById(R.id.banner_container);
    /// here is am getting the banner view by enabling databinding you can 
    /// dobygetting the view like
    //  LinearLayout banner_container= findViewById(R.id.banner_container);
    binding.banner_container.addView(adView);
    adView.loadAd(adView.buildLoadAdConfig().withAdListener(new com.facebook.ads.AdListener() {
        @Override
        public void onError(Ad ad, AdError adError) {


        }

        @Override
        public void onAdLoaded(Ad ad) {


        }

        @Override
        public void onAdClicked(Ad ad) {

        }

        @Override
        public void onLoggingImpression(Ad ad) {


        }
    }).build());
}

同步依賴項后,在應用程序標簽下的 mainfest 文件中添加此標簽:

<activity android:name="com.facebook.ads.AudienceNetworkActivity"
          android:configChanges="keyboardHidden|orientation|screenSize"/>

對於 xml 代碼寫這個:

<LinearLayout
    android:id="@+id/banner_container" 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical" />

對於 java 類:請記住,當您聲明 Adview 導入應屬於 Facebook 網絡時:

對於 Facebook 插頁式廣告,

首先聲明這些變量:

 ///in concreate method laod the ads first
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_multi_page);
    // load the interstitial ads
    loadfanads();
}

///Normally we show Interstitial on backpressed it up to you where you wants to show
/// on button click or on backpressed button of any activity
private InterstitialAd interstitialAd;
private void loadfanads() {

    interstitialAd = new InterstitialAd(this, getString(R.string.fb_placement_Interstitial));
    InterstitialAdListener madlistner = new InterstitialAdListener() {
        @Override
        public void onInterstitialDisplayed(Ad ad) {

        }

        @Override
        public void onInterstitialDismissed(Ad ad) {

            //// on Interstitial dismissed
            Intent out = new Intent();
            out.putExtra(ScanConstants.SAVE_PDF, Boolean.TRUE);
            setResult(RESULT_OK, out);
            finish();
        }

        @Override
        public void onError(Ad ad, AdError adError) {

            /// on error ad loading

        }

        @Override
        public void onAdLoaded(Ad ad) {

        }

        @Override
        public void onAdClicked(Ad ad) {
            //// on ad clicked
            Intent out = new Intent();
            out.putExtra(ScanConstants.SAVE_PDF, Boolean.TRUE);
            setResult(RESULT_OK, out);
            finish();
        }

        @Override
        public void onLoggingImpression(Ad ad) {

        }
    };
    interstitialAd.loadAd(interstitialAd.buildLoadAdConfig().withAdListener(madlistner).build());


}

要顯示廣告,您可以實施此方法,我在按下后顯示廣告,但您可以選擇顯示:

     //// on button click view
public void saveNow(View view) {

     if (interstitialAd.isAdLoaded() && interstitialAd!=null && !interstitialAd.isAdInvalidated()){
         interstitialAd.show();
     }
     else {

         Intent out = new Intent();
         out.putExtra(ScanConstants.SAVE_PDF, Boolean.TRUE);
         setResult(RESULT_OK, out);
         finish();
     }
}

對於 Facebook 原生橫幅廣告:

XML 代碼只需添加此布局:

<RelativeLayout
    android:id="@+id/templateContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" />

 for jave code :

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    nativeBannerAd = new NativeBannerAd(this, getString(R.string.fb_placement_native_banner));
    NativeAdListener adlistner = new NativeAdListener() {
        @Override
        public void onMediaDownloaded(Ad ad) {

        }

        @Override
        public void onError(Ad ad, AdError adError) {

        }

        @Override
        public void onAdLoaded(Ad ad) {

            View adView = NativeBannerAdView.render(MainActivity.this, nativeBannerAd, NativeBannerAdView.Type.HEIGHT_120);
            scarymainBinding.templateContainer.addView(adView);


        }

        @Override
        public void onAdClicked(Ad ad) {

        }

        @Override
        public void onLoggingImpression(Ad ad) {

        }
    };

    nativeBannerAd.loadAd(
            nativeBannerAd.buildLoadAdConfig()
                    .withAdListener(adlistner)
                    .build());

}

  

如果您對此有任何疑問,可以問我! 希望你會喜歡這個。

暫無
暫無

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

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