web-dev-qa-db-fra.com

Implémentation d'annonces natives dans Android avec Admob? c'est possible?

J'essaie d'implémenter des publicités natives dans mon application Android. Mais je veux le faire en utilisant seulement admob. J'ai cherché beaucoup de solutions mais je ne trouvais pas la solution exacte pour le faire. 

Je sais qu'il est possible d'utiliser MoPub .

Ce que je voulais faire est la suivante: Afficher les annonces dans l'élément de liste, ce qui signifie que l'un des éléments ListView/RecyclerView peut être une annonce similaire à l'image ci-dessous .Image

J'ai trouvé des liens et des références, mais cela n'explique pas la bonne mise en œuvre des annonces natives.

Lien 1 : Présentation des annonces natives

Link 2 : Guides Android DFP> Ciblage

Link 3 : Guide de démarrage rapide DFP

S'il n'est pas possible de le faire avec admob, MoPub est la meilleure solution pour moi pour le moment.

Toute aide et conseils seraient utiles. Merci.

10
Amrut Bidri

En complément de ce fil de discussion, vous pouvez désormais très facilement implémenter NativeAds for Admob en suivant le guide fourni par Google, à l'aide de NativeExpressAdView. Pour plus d'informations, consultez la documentation de Google: https://firebase.google.com/docs/admob/Android/native-express?hl=fr

3
Houcine

Récemment j'ai collé avec la même question. Ensuite, j'ai décidé de poster ma solution pour cela sur admobadapter . J'espère que cela vous aidera.

Le usage de base pourrait ressembler à:

    ListView lvMessages;
    AdmobAdapterWrapper adapterWrapper;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initListViewItems();
    }

    /**
     * Inits an adapter with items, wrapping your adapter with a {@link AdmobAdapterWrapper} and setting the listview to this wrapper
     * FIRST OF ALL Please notice that the following code will work on a real devices but emulator!
     */
    private void initListViewItems() {
        lvMessages = (ListView) findViewById(R.id.lvMessages);

        //creating your adapter, it could be a custom adapter as well
        ArrayAdapter<String> adapter  = new ArrayAdapter<String>(this,
                Android.R.layout.simple_list_item_1);

        adapterWrapper = new AdmobAdapterWrapper(this);
        adapterWrapper.setAdapter(adapter); //wrapping your adapter with a AdmobAdapterWrapper.
        //here you can use the following string to set your custom layouts for a different types of native ads
        //adapterWrapper.setInstallAdsLayoutId(R.layout.your_installad_layout);
        //adapterWrapper.setcontentAdsLayoutId(R.layout.your_installad_layout);

        //Sets the max count of ad blocks per dataset, by default it equals to 3 (according to the Admob's policies and rules)
        adapterWrapper.setLimitOfAds(3);

        //Sets the number of your data items between ad blocks, by default it equals to 10.
        //You should set it according to the Admob's policies and rules which says not to
        //display more than one ad block at the visible part of the screen,
        // so you should choose this parameter carefully and according to your item's height and screen resolution of a target devices
        adapterWrapper.setNoOfDataBetweenAds(10);

        //It's a test admob ID. Please replace it with a real one only when you will be ready to deploy your product to the Release!
        //Otherwise your Admob account could be banned
        //String admobUnitId = getResources().getString(R.string.banner_admob_unit_id);
        //adapterWrapper.setAdmobReleaseUnitId(admobUnitId);

        lvMessages.setAdapter(adapterWrapper); // setting an AdmobAdapterWrapper to a ListView

        //preparing the collection of data
        final String sItem = "item #";
        ArrayList<String> lst = new ArrayList<String>(100);
        for(int i=1;i<=100;i++)
            lst.add(sItem.concat(Integer.toString(i)));

        //adding a collection of data to your adapter and rising the data set changed event
        adapter.addAll(lst);
        adapter.notifyDataSetChanged();
    }

Et le résultat ressemblera à ce qui suit

 enter image description here

6
kot331107

Les annonces natives sont incluses dans les services Google Play avec le reste de la publicité DFP/AdMob. Assurez-vous que les éléments suivants sont répertoriés en tant que dépendances dans votre build.gradle (notez que la version 7.5.0 est la version la plus récente de cette publication).

compile "com.google.Android.gms:play-services-base:7.5.0"
compile "com.google.Android.gms:play-services-ads:7.5.0"

Ensuite, vous pouvez afficher des annonces natives

AdLoader adLoader = new AdLoader.Builder(context, "/6499/example/native")
    .forAppInstallAd(new OnAppInstallAdLoadedListener() {
        @Override
        public void onAppInstallAdLoaded(NativeAppInstallAd appInstallAd) {
            // Show the app install ad.
        }
    })
    .forContentAd(new OnContentAdLoadedListener() {
        @Override
        public void onContentAdLoaded(NativeContentAd contentAd) {
            // Show the content ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(int errorCode) {
            // Handle the failure by logging, altering the UI, etc.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Cliquez ici pour une documentation complète.

5
James McCracken

Essayez d’utiliser un autre réseau publicitaire où il propose différents types d’annonces natives. Les développeurs peuvent personnaliser les annonces et les placer et les utiliser. Par exemple, si vous avez besoin de placer des annonces dans une deuxième cellule toutes les 15 lignes, vous pouvez les utiliser comme ceci.

Avocarrot fournit cela.

 AvocarrotInstream myAd = new AvocarrotInstream(<yourListAdapter>);
  myAd.initWithKey( "<your API Key>" );
  myAd.setSandbox(true);
  myAd.setLogger(true ,"ALL"); 

// Populate with In-Stream ads
 myAd.loadAdForPlacement(this,  "<your Placement Name>" );
// Bind the adapter to your list view component
<yourListView>.setAdapter(myAd);// here you are integrating ads to listview
 myAd.setFrequency(2,15); // every 15 cells starting from the 2nd cell. 

Voici Documentation il fournit des annonces en liste et des annonces avec flux.

5
Shadow

Tooleap Ads SDK constitue un moyen simple d'implémenter les annonces natives d'Admob. 

Au lieu de vous obliger à utiliser l'adaptateur listView traditionnel et à afficher l'annonce dans votre contenu, ils affichent les annonces Adm Native en tant que petites bulles flottantes. En appuyant dessus, vous pouvez voir la publicité native complète.

Voici un exemple d'utilisation de leur SDK dans votre classe activity:

BubbleImageAd = new BubbleImageAd(this);
bubbleImageAd.setAdUnitId("YOUR_AD_UNIT_ID");
bubbleImageAd.loadAndShowAd(this);

Vous pouvez les vérifier ici .

enter image description here enter image description here

2
Danny

Eh bien, ce fil est probablement obsolète. Mais à partir de mai 2015, AdMob prend désormais en charge les annonces natives (toujours en version bêta).

https://support.google.com/admob/answer/6239795

En outre, il n'est disponible que pour un nombre limité de développeurs à partir de sa version bêta.

1
Anshu Dwibhashi
Admob in your Android these are the codes needed. 
    <com.google.Android.gms.ads.AdView
              Android:layout_alignParentBottom="true"
                xmlns:ads="http://schemas.Android.com/apk/res-auto"
                Android:id="@+id/adView"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                ads:adSize="SMART_BANNER"
                ads:adUnitId="ca-app-pub-4549020480017205/6066702579"
                />

// Dans votre fichier de classe Java

     AdView mAdView = (AdView) findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);
1
influx

Ajouter ce code à votre adaptateur Listview 

       builder.forAppInstallAd(new NativeAppInstallAd.OnAppInstallAdLoadedListener() {
            @Override
            public void onAppInstallAdLoaded(NativeAppInstallAd ad) {
                FrameLayout frameLayout =
                        (FrameLayout) findViewById(R.id.fl_adplaceholder);
                NativeAppInstallAdView adView = (NativeAppInstallAdView) getLayoutInflater()
                        .inflate(R.layout.ad_app_install, null);
                populateAppInstallAdView(ad, adView);
                frameLayout.removeAllViews();
                frameLayout.addView(adView);
            }
        });

       AdLoader adLoader = builder.withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(int errorCode) {
            Toast.makeText(MainActivity.this, "Failed to load native ad: "
                    + errorCode, Toast.LENGTH_SHORT).show();
        }
      }).build();

        adLoader.loadAd(new AdRequest.Builder().build());

Apportez des modifications à listview Adapter et vous obtiendrez la méthode populateAppInstallAdView () à partir du lien ci-dessous.

Tout est couvert dans cet exemple, veuillez suivre cette procédure https://github.com/googleads/googleads-mobile-Android-examples/tree/master/admob

1
arun

Oui, il est possible que vous utilisiez le code ci-dessous dans un fichier XML.

<com.google.Android.gms.ads.NativeExpressAdView
                    Android:id="@+id/adView"
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_centerHorizontal="true"
                    Android:layout_alignParentBottom="true"
                    ads:adSize="320x300"
                    ads:adUnitId="@string/ad_unit_id">

mAdView.setVideoOptions(new VideoOptions.Builder()
    .setStartMuted(true)
    .build());
mVideoController = mAdView.getVideoController();
mVideoController.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
@Override
public void onVideoEnd() {
    Log.d(LOG_TAG, "Video playback is finished.");
    super.onVideoEnd();
}
});


mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
    if (mVideoController.hasVideoContent()) {
        Log.d(LOG_TAG, "Received an ad that contains a video asset.");
    } else {
        Log.d(LOG_TAG, "Received an ad that does not contain a video asset.");
    }
}
});

mAdView.loadAd(new AdRequest.Builder().build());
0
Sunil Kumar

Il est limité aux éditeurs sélectionnés pour le moment. Vous devrez contacter un responsable de compte Google de votre région pour la mise en œuvre.

0
user6128114