Comment inclure AdMob dans votre jeu Android avec Unity

Bonjour à tous,

Pour ce premier article je vais vous apprendre comment inclure des publicités AdMob dans votre jeu Android fait avec Unity afin de le monétiser un peu(oui car il vous faudra énormément d’utilisateurs pour que ce soit rentable).

Il existe 2 manières d’inclure AdMob dans votre projet Unity, l’une simple et payante que je n’ai pas testé et l’autre plus complexe mais gratuite que j’ai testé et qui dépanne si vous ne voulez pas investir.

La méthode simple est payante est disponible à cette adresse pour 7£, c’est un package à installer dans son projet Unity. Je ne sais pas comment il se configure.

Je vais à présent vous expliquer pas à pas la méthode plus complexe.

Cette technique nécessite l’utilisation d’Eclipse et du plugin ADT pour Eclipse.

Pour savoir comment paramétrer un plugin Android pour Unity je vous invite à lire mon autre article.

Il y a toutefois une petite différence:

Vous devrez créer le dossier « libs » dan votre projet Android et mettez y ce  fichier : GoogleAdMobAdsSdk-6.1.0.jar. Ce dernier est aussi téléchargeable depuis votre compte AdMob.

Faites ensuite un clic droit sur le nom de votre projet, allez dans « Build Path » puis cliquez sur « Configure Build Path… ».

Une fenêtre s’ouvre, rendez vous dans l’onglet « Libraries », faites tout d’abord « Add JARs… » et trouvez le fichier GoogleAdMobAdsSdk-6.1.0.jar.  Vous devriez un écran de ce genre si tout s’est bien passé:

Rendez vous ensuite dans « Order and Export » et vérifiez que les 2 fichiers .jar que vous venez d’ajouter à votre projet sont bien cochés. Vous pouvez ensuite cliquer sur OK.

Passons à présent à la partie programmation.

Tout d’abord, rendez vous dans votre fichier « AndroidManifest.xml » (Allez dans le dernier onglet en bas le plus à droite dans la fenêtre d’édition, ce sera plus pratique)


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.superespace"
android:versionCode="103"
android:versionName="1.0.3" >

<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="13" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<supports-screens android:smallScreens="false"
android:normalScreens="false"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"
android:requiresSmallestWidthDp="600"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SimpleAdmob"
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>

Ne recopiez pas bêtement, surtout pour les premières lignes :)

Il va falloir ensuite créer une classe pour votre publicité.

Pour ce faire créer d’abord un package ayant pour nom le domaine de votre jeu(pour moi c’était com.superespace mais ça peut être com.example si vous faites juste un test) en faisant un clic droit sur « src », en allant dans « New » puis « Package… ».

Créez ensuite une classe SimpleAdMob dans ce package en y incluant le code suivant:


package com.superespace;

import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.google.ads.Ad;
import com.google.ads.AdListener;
import com.google.ads.AdRequest;
import com.google.ads.AdRequest.ErrorCode;
import com.google.ads.AdSize;
import com.google.ads.AdView;
import com.unity3d.player.UnityPlayerActivity;

public class SimpleAdmob extends UnityPlayerActivity implements AdListener {

private AdView adView;

private LinearLayout layout;

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

setupAdmob();

}

@Override
public void onDestroy() {
if (adView != null) {
adView.destroy();
}
super.onDestroy();
}

private void setupAdmob() {
setupAdmobView();

final String publisherID = "YOUR_PUBLISHER_ID";

adView = new AdView(this,AdSize.BANNER,publisherID);
adView.setAdListener(this);
adView.loadAd(new AdRequest());
adView.setVisibility(View.VISIBLE);
adView.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_VERTICAL);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_BOTTOM, RelativeLayout.TRUE);
//layout.addView(adView,params);
layout.addView(adView,params);
}

private void setupAdmobView(){
layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
//layout.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_VERTICAL);
layout.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_VERTICAL);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_BOTTOM, RelativeLayout.TRUE);
addContentView(layout, params);

}

public void onDismissScreen(Ad arg0) {
// TODO Auto-generated method stub

}

public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
// TODO Auto-generated method stub

}

public void onLeaveApplication(Ad arg0) {
// TODO Auto-generated method stub

}

public void onPresentScreen(Ad arg0) {
// TODO Auto-generated method stub

}

public void onReceiveAd(Ad arg0) {
// TODO Auto-generated method stub

}
}

N’oubliez pas de remplacer « YOUR_PUBLISHER_ID » par celui fourni dans votre compte Google Admob (vous l’aurez en créant une application Android dans Admob)

Jouez avec les propriétés de Gravity et les propriétés d’alignement pour le positionnement au mieux. Pour ma part le résultat n’est pas celui voulu mais il n’était pas catastrophique, ce point de customisation a l’air assez aléatoire mais n’oubliez pas que nous faisons ici de la bidouille ;)

Par la suite je vous conseillerai de désactiver les fichiers de versioning d’Unity si ce n’est pas fait. Allez dans Edit>>Project Settings>>Editor et mettez le Mode de Version Control sur « Disabled ».

Retournez maintenant dans Eclipse.

Ah j’ai oublié de vous parlez d’un petit détail, les icônes du dossier « res » écrasent celles que vous avez défini dans Unity, en fait vous verrez rapidement que c’est mieux car les icones que vous pourrez mettre seront de meilleure qualité qu’avec Unity.

Faites à présent un clic droit sur votre projet comme tout à l’heure mais cette fois choisissez « Export… », allez dans « Java » et choisissez « JAR file ». Je vous conseille fortement d’aller dans le dossier « bin » et de décocher « jarlist.cache » et votre fichier .jar si vous en aviez déjà créé un auparavant, vous devriez avoir quelque chose comme ça:

Veillez à avoir les mêmes paramètres que moi et surtout à exporter votre fichier .jar au même endroit

Si vous avez des erreurs, affichez les, vous comprendrez surement par vous même d’où vient le problème.

Vous voila fin prêt à tester vos publicités.

Tout d’abord essayez de compiler votre jeu sur Unity. si vous avez une erreur de compilation concernant la conversion d’un fichier java vers DEX, je vous recommande d’essayer la manipulation suivante:

Tout d’abord installez le jdk de Java.

Sur Windows 7, faites un clic droit sur « Ordinateur » puis « Propriétés ». Cliquez ensuite sur « Paramètres système avancés ». Dans la fenêtre qui s’ouvre, cliquez sur « Variables d’environnement ». Si elle n’existe pas, créer une variable JAVA_HOME dans « Variables Système » qui dont la valeur est le chemin jusqu’au JDK (pour moi c’est « C:\Progra~1\Java\jdk1.7.0_03″ )

Recompilez. Si vous avez des problèmes, n’hésitez pas à poster des commentaires, je tacherai de vous aider.

N’oubliez pas de réactiver les fichiers de versioning d’Unity si vous utilisez ce système. Ils nous dérangent juste pour l’export en .jar.

J’espère que ce tutoriel vous sera utile :)

Bonne journée à tous.

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Comments

  • Bonjour Romain
    Merci pour ce tutoriel.
    Je n’ai pas encore testé mais ça donne envie. Avant de commencer
    Je voudrai savoir ou vont les pepettes est ce par le google store ?
    faut t’il démarcher des annonseurs ?
    DSL mais Je n’y connais rien en monétisation d’applis.

    Gyuxx20 octobre 2015
  • Dsl pour ma question mais apparement (merci google).
    tout passe par le compte ADmob de ggogle.
    Encore merci pour ce tutoriel.

    Gyuxx20 octobre 2015

Répondre à Josk Annuler la réponse.