L’Audience Network vous permet de monétiser vos applications Android et iOS avec des publicités Facebook. Les publicités vidéo avec récompense sont une expérience en plein écran dans laquelle les utilisateurs choisissent de regarder une publicité vidéo en échange de quelque chose de valeur, comme une devise virtuelle, des objets dans l’application, des contenus exclusifs, etc. L’expérience publicitaire consiste en une vidéo courte et une fiche finale avec appel à l’action. Lorsque la vidéo est entièrement terminée, vous recevez un rappel pour accorder la récompense suggérée à l’utilisateur.
Assurez-vous d’avoir lu le Guide de démarrage d’Audience Network et le Guide démarrage de Unity avant de commencer.
Pour afficher une publicité vidéo avec récompense, commencez par créer un objet RewardedVideoAd
dans un script C# rattaché à un GameObject
.
... using AudienceNetwork; ... public class RewardedVideoAdTest : MonoBehaviour { public void LoadRewardedVideo() { // Create the rewarded video unit with a placement ID (generate your own on the Facebook app settings). // Use different ID for each ad placement in your app. this.rewardedVideoAd = new RewardedVideoAd("YOUR_PLACEMENT_ID"); this.rewardedVideoAd.Register(this.gameObject); // Set delegates to get notified on changes or when the user interacts with the ad. this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() { Debug.Log("RewardedVideo ad loaded."); this.isLoaded = true; }); this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) { Debug.Log("RewardedVideo ad failed to load with error: " + error); }); this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() { Debug.Log("RewardedVideo ad logged impression."); }); this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() { Debug.Log("RewardedVideo ad clicked."); }); this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); // Initiate the request to load the ad. this.rewardedVideoAd.LoadAd(); } }
Le créateur d’une publicité RewardedVideoAd
dispose des paramètres suivants :
placementId
, l’ID de placement de l’Audience Network de cette unité de publicité vidéo avec récompense.Vous pouvez ensuite insérer quelques rappels pour vous inscrire aux évènements du cycle de vie de la publicité. Tenez-vous informé de ces évènements en inscrivant un délégué chargé de l’évènement, comme indiqué dans l’exemple ci-dessous :
... // Set delegates to get notified on changes or when the user interacts with the ad. this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() { Debug.Log("RewardedVideo ad loaded."); this.isLoaded = true; }); this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) { Debug.Log("RewardedVideo ad failed to load with error: " + error); }); this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() { Debug.Log("RewardedVideo ad logged impression."); }); this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() { Debug.Log("RewardedVideo ad clicked."); }); this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); ...
Ce rappel ne s’applique qu’à Android.
Les jeux Unity pour Android ne prennent actuellement en charge que l’activité Unity principale pour l’Activity
du launchMode
d’une singleTask
. Reportez-vous au document Unity pour le manifeste Android et au document Android pour l’activité.
Comme nous utilisons une Activity
pour afficher les publicités Interstitial
et les Rewarded Video
, l’activité publicitaire risque d’être détruite sans avoir été correctement fermée lorsqu’un utilisateur met une app en tâche de fond, puis la relance en appuyant sur l’icône plutôt que sur le sélecteur d’applications. Vous pouvez utiliser les rappels suivants et vérifier si la publicité a été fermée par l’utilisateur :
Publicité interstitielle :
this.interstitialAd.interstitialAdDidClose = (delegate() { Debug.Log("Interstitial ad did close."); this.didClose = true; if (this.interstitialAd != null) { this.interstitialAd.Dispose(); } }); #if UNITY_ANDROID /* * Only relevant to Android. * Ce rappel ne se déclenche que si l’activité interstitielle a * été détruite sans avoir été fermée correctement. Cela peut se produire si une * app avec launchMode:singleTask (comme un jeu Unity, par exemple) est mise * en tâche de fond, puis relancée par un appui sur l’icône. */ this.interstitialAd.interstitialAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Interstitial activity destroyed without being closed first."); Debug.Log("Game should resume."); } }); #endif
Vidéo avec récompense :
this.rewardedVideoAd.rewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); this.didClose = true; if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); #if UNITY_ANDROID /* * Ne s’applique qu’à Android. * Ce rappel ne se déclenche que si l’activité de vidéo avec récompense a * été détruite sans avoir été fermée correctement. Cela peut se produire si une * app avec launchMode:singleTask (comme un jeu Unity, par exemple) est mise en * tâche de fond, puis relancée par un appui sur l’icône. */ this.rewardedVideoAd.rewardedVideoAdActivityDestroyed = (delegate() { if (!this.didClose) { Debug.Log("Rewarded video activity destroyed without being closed first."); Debug.Log("Game should resume. User should not get a reward."); } }); #endif
Une fois la publicité RewardedVideoAd
instanciée, l’étape suivante consiste à charger la publicité. Cela s’effectue en appelant la méthode loadAd
.
Selon l’exemple ci-dessus, voici comment démarrer le chargement de la publicité :
... this.rewardedVideoAd.LoadAd(); ...
Enfin, une fois la publicité chargée, vous pouvez appeler la méthode Show
pour afficher la publicité vidéo avec récompense. Vous pouvez, par exemple, créer une fonction de ShowRewardedVideo
et l’appeler au moment d’afficher la publicité :
public void ShowRewardedVideo() { if (this.isLoaded) { this.rewardedVideoAd.Show(); this.isLoaded = false; } else { Debug.Log("Ad not loaded. Click load to request an ad."); } }
Cette opération est facultative. Vous n’avez pas besoin d’implémenter une validation des récompenses côté serveur pour pouvoir utiliser les publicités vidéo avec récompense. Cela est nécessaire uniquement si vous décidez de valider des récompenses sur votre propre serveur pour améliorer la sécurité en introduisant une étape de validation au niveau de votre serveur. Veuillez communiquer votre point de terminaison d’éditeur à votre représentant Facebook afin d’activer cette fonctionnalité.
Si vous gérez les récompenses de vos utilisateurs côté serveur, Facebook vous propose une solution entièrement sécurisée reposant sur une technique de validation. Notre serveur communiquera avec un point de terminaison https particulier pour valider chaque impression publicitaire et pour valider l’octroi de la récompense.
placementId
: ID de placement de l’Audience Network.RewardData
: objet RewardData
se compose d’UserId
, qui représente l’ID de l’utilisateur, et de Currency
, qui représente la récompense en jeu.200 response
: demande valide, la récompense doit être fournie.Non 200 response
: demande non valide, la récompense ne doit pas être fournie.RewardedVideoAdDidSucceed
: déclenché uniquement si une réponse 200 a été reçue à l’étape 3.RewardedVideoAdDidFail
: déclenché si une réponse autre que 200 a été reçue à l’étape 3.Exemple d’une URL qui parvient au point de terminaison de votre éditeur en partant du serveur de Facebook : https://www.your_end_point.com/?token=APP_SECRET&puid=USER_ID&pc=REWARD_ID&ptid=UNIQUE_TRANSACTION_ID
Le flux de travail se présente comme suit :
Après l’initialisation de l’objet vidéo avec récompense, vous devez transmettre un identifiant utilisateur et une valeur de récompense dans les données de publicité avec récompense avant de charger une publicité. Pour cela, vous pouvez utiliser la catégorie de RewardData
. L’identifiant utilisateur et la valeur de récompense sont des chaînes. Par exemple :
public class RewardedVideoAdTest : MonoBehaviour { ... private bool isLoaded; private RewardedVideoAd rewardedVideoAd; public void LoadRewardedVideo() //Set the rewarded ad data RewardData rewardData = new RewardData(); rewardData.UserId = "USER_ID"; rewardData.Currency = "REWARD_ID"; // Instantiate RewardedVideoAd with reward data this.rewardedVideoAd = new RewardedVideoAd("YOUR_PLACEMENT_ID", rewardData); this.rewardedVideoAd.Register(this.gameObject); // Set delegates to get notified on changes or when the user interacts with the ad. this.rewardedVideoAd.RewardedVideoAdDidLoad = (delegate() { Debug.Log("RewardedVideo ad loaded."); this.isLoaded = true; }); this.rewardedVideoAd.RewardedVideoAdDidFailWithError = (delegate(string error) { Debug.Log("RewardedVideo ad failed to load with error: " + error); }); this.rewardedVideoAd.RewardedVideoAdWillLogImpression = (delegate() { Debug.Log("RewardedVideo ad logged impression."); }); this.rewardedVideoAd.RewardedVideoAdDidClick = (delegate() { Debug.Log("RewardedVideo ad clicked."); }); this.rewardedVideoAd.RewardedVideoAdDidClose = (delegate() { Debug.Log("Rewarded video ad did close."); if (this.rewardedVideoAd != null) { this.rewardedVideoAd.Dispose(); } }); // For S2S validation you need to register the following two callback this.rewardedVideoAd.RewardedVideoAdDidSucceed = (delegate() { Debug.Log("Rewarded video ad validated by server"); }); this.rewardedVideoAd.RewardedVideoAdDidFail = (delegate() { Debug.Log("Rewarded video ad not validated, or no response from server"); }); this.rewardedVideoAd.loadAd(); } ... }
Pour notifier votre application de la validation ou non d’une récompense, vous devrez implémenter les rappels de RewardedVideoAdDidSucceed
et de RewardedVideoAdDidFail
, en plus des autres rappels de RewardedVideoAd
.
Une fois la publicité chargée, vous pouvez l’afficher au moyen de la méthode Show
, comme une publicité RewardedVideoAd
normale.
Notez que les rappels de validation du serveur peuvent se produire uniquement après que la fiche finale a été fermée par un utilisateur. Vous ne devez pas désaffecter l’objet vidéo avec récompense avant la survenue de l’un de ces rappels.
Suivez nos guides sur l’intégration des différents formats publicitaires à votre app Unity :
Lorsque votre app est prête pour la mise en ligne et la monétisation, envoyez-la pour faire vérifier sa conformité aux règles de l’Audience Network et aux standards de la communauté Facebook.