Démarrez avec Vungle - Windows SDK v.5.1+

Utilisez ce guide pour réaliser une intégration rapide de notre SDK dans votre application et commencer à la monétiser.

Les échantillons de code de ce guide sont présentés en C#, mais l'application modèle est fournie en C#, C++, Visual Basic et DirectX+XAML depuis notre dépôt GitHub.

Contenu

Avant de commencer

  • Ce guide concerne le SDK Vungle pour Windows 5.1 et versions supérieures. Le guide d'intégration du SDK Vungle pour Windows versions 1.3.16 et inférieures se trouve ici : Démarrez avec Vungle - Windows SDK v. 1.0 - v.1.3.16.
  • L'intégration nécessite un compte Vungle, veuillez par conséquent créer un compte Vungle si vous n'en avez pas un.
  • Si vous ne l'avez pas déjà fait, rendez-vous sur notre Tableau de bord et ajoutez votre application à votre compte. Consultez la section Définition et rapport des emplacements pour apprendre à définir les emplacements dans le tableau de bord de Vungle.
  • Vous devez utiliser Visual Studio 2015 si vous de développez pour Windows 8.1 ou Windows Phone 8.1, car Visual Studio 2017 ne supporte plus ces versions.
  • Le bouton Retour est pris en charge sur les mobiles, mais pas sur les PC (clavier). Ceci peut entraîner des comportements et une expérience utilisateur différents selon les versions UWP.
  • Basculez l'application en mode actif si aucune annonce n'est retournée en mode test.

Téléchargez le SDK Vungle et ajoutez-le à votre projet.

  1. Téléchargez le SDK Vungle pour Windows depuis le tableau de bord de Vungle.
  2. Faites l'extraction de l'archive.
  3. Dans Visual Studio, créez un nouveau projet en utilisant le modèle approprié pour votre application et votre langage de programmation.
  4. Ajoutez une référence à votre projet dans le fichier SDK Vungle pour Windows que vous avez téléchargé.
  5. Assurez-vous que votre projet répertorie la capacité internetClient dans le fichier package.appxmanifest comme cela apparaît ci-dessous :
    <Capabilities>
    ...
    <Capability Name="internetClient" />
    ...
    </Capabilities>
  6. Importez l'espace de noms VungleSDK.
    using VungleSDK;
    

Obtenez une instance de VungleAd

L'instance de VungleAd reçoit deux paramètres : une chaîne de caractères pour l'ID de l'application Vungle et un tableau de chaînes pour les ID des emplacements. Vous ne pouvez utiliser que les ID d'emplacements que vous avez déjà inclus lorsque vous obtenez une instance. Si vous n'ajoutez pas un emplacement mis en cache automatiquement, le SDK vous assignera automatiquement un des vos emplacements non mis en cache automatiquement pour qu'il soit mis en cache automatiquement.

VungleAd sdkInstance;

string appID = “app_id”;
string[] placementArray = new string[]
{
  “placement_id_1”,
  “placement_id_2”,
  “placement_id_3”
};
sdkInstance = AdFactory.GetInstance(appID, placementArray);

Dans l'exemple ci-dessus, remplacez app_id par l'ID de votre application Vungle et placement_id_# par les ID d'emplacement à utiliser dans le projet. Nous recommandons de suivre ces étapes d'initialisation dès que votre appli a chargé les composants indispensables, afin que le mise en cache automatique puisse débuter le plus tôt possible.

Créez et enregistrez un gestionnaire d'évènements

Créez un gestionnaire d'évènements pour l'évènement OnAdPlayableChanged. Ce gestionnaire d'évènements est appelé lorsque l'état de disponibilité de l'annonce change. Vous pouvez identifier l'emplacement qui a lancé l'évènement en vérifiant e.Placement.

//Gestionnaire d'évènements pour l'évènement OnAdPlayableChanged
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  // e.Placement - ID de l'emplacement en chaîne de caractères
  // Exécution asynchrone sur le thread de l'interface utilisateur
  await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
    new DispatchedHandler(() => methodToRun(e.Placement)));
}

Enregistrez ce gestionnaire d'évènements pour l'évènement OnAdPlayableChanged.

sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;

Charger une publicité pour un emplacement

Pour les emplacements différents de l'emplacement mis en cache automatiquement, vous devez d'abord appeler LoadAd, laisser suffisamment de temps pour le téléchargement des ressources de l'annonce, puis attendre l'appel de OnAdPlayableChanged :

sdkInstance.LoadAd(“placement_id”);

Remarque : L'emplacement mis en cache automatiquement tentera de télécharger une nouvelle ressource immédiatement après l'appel de PlayAdAsync, il n'est donc pas nécessaire d'appeler LoadAd.

Exemple de code :

private void OnLevelStart(Object sender, RoutedEventArgs e)
{
  sdkInstance.LoadAd(“placement_id”);
}

Jouer une publicité

Lancer une annonce avec la configuration par défaut :

sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);

Exemple de code :

private async void OnLevelComplete(Object sender, RoutedEventArgs e)
{
  await sdkInstance.PlayAdAsync(new AdConfig(), “placement_id”);
}

Vous pouvez personnaliser les annonces lues en fournissant les options à l'objet AdConfig.

Exemple de code :

private async void PlayCustomizedAd(Object sender, RoutedEventArgs e)
{
  AdConfig adConfig = new AdConfig();

  adConfig.Orientation = DisplayOrientations.Portrait;
  adConfig.SoundEnabled = false;
  
  await sdkInstance.PlayAdAsync(adConfig, placement2);
}

Options de personnalisation

Voici les propriétés disponibles dans l'instance de l'objet AdConfig :

Options

Valeur/type
par défaut

Description

Orientation

AutoRotate

DisplayOrientations

Orientation.AutoRotate (par défaut) entraîne la rotation automatique de la publicité suivant l'orientation du périphérique.

Orientation.Portrait entraîne une lecture suivant l'orientation portrait uniquement.

Orientation.Landscape entraîne une lecture suivant l'orientation paysage uniquement.

Remarque : Cette option s'applique uniquement aux applications mobiles.

SoundEnabled

true

bool

Définit l'état du son au début de la publicité.

Si la valeur est true (par défaut), l'audio respecte les paramètres de volume et de son de l'appareil.

Si la valeur est false, la vidéo se lance en mode muet mais l'utilisateur peut activer le son.

BackButtonImmediatelyEnabled

false

bool

Si la valeur est true, permet à l'utilisateur de quitter immédiatement une annonce grâce au bouton de retour.

Si la valeur est false (par défaut), l'utilisateur ne peut pas utiliser le bouton de retour pour quitter la publicité, jusqu'à ce que le bouton de fermeture à l'écran s'affiche.

Remarque : Cette option s'applique uniquement aux applications mobiles.

UserId

null

string

Transmet l'ID utilisateur unique à l'application afin de vérifier que cet utilisateur doit être récompensé pour avoir regardé une publicité qui répond au mécanisme d'incitation au moment où le rappel serveur-à-serveur est utilisé pour la vérification.

Remarque : Cette configuration ne s'applique que pour les emplacements de récompense.

IncentivizedDialogTitle

« Close this ad? »

string

Définit le titre de la boîte de dialogue de confirmation lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée.

Remarque : Cette configuration ne s'applique que pour les emplacements de récompense.

IncentivizedDialogBody

« Are you sure you want to skip this ad? You must finish watching to claim your reward. »

string

Définit le corps de la boîte de dialogue de confirmation lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée.

Remarque : Cette configuration ne s'applique que pour les emplacements de récompense.

IncentivizedDialogCloseButton

« Close »

 

string

Définit le texte du « bouton d'annulation » lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée.

Remarque : Cette configuration ne s'applique que pour les emplacements de récompense.

IncentivizedDialogContinueButton

« Continue »

string

Définit le texte du bouton « continuer la lecture » lorsqu'une publicité qui répond au mécanisme d'incitation est ignorée.

Remarque : Cette configuration ne s'applique pas si l'annonce ne répond pas au mécanisme d'incitation.

Incentivized

-

OBSOLÈTE

Vous pouvez configurer la récompense au niveau de l'emplacement depuis le tableau de bord. Consulter Configuration et rapport sur les emplacements.


Remarque
 : Les options de SoundEnabled et des boîtes de dialogue répondant au mécanisme d'incitation pour les publicités Dynamic Template et Flex View peuvent être configurées sur le tableau de bord. La configuration de programmation ne s'applique qu'aux annonces existantes.

Affichage du bouton Fermer

Pour contrôler si un utilisateur peut fermer une publicité, utilisez les options d'affichage forcé dans les paramètres avancés de votre application du tableau de bord Vungle.

Souscrire à des gestionnaires d'évènements

Le SDK Windows lance de nombreux évènements que vous pouvez gérer par la programmation. Vous pouvez utiliser ces gestionnaires pour contrôler l'appli, par exemple pour interrompre/reprendre la lecture de la musique de fond.

Remarque relative au fil IU

Les écouteurs d'évènements sont exécutées sur un thread en arrière-plan ; ainsi, toute interaction de l'interface utilisateur ou toute mise à jour provenant d'un écouteur d'événements doit être transmise au thread principal de l'interface utilisateur avant son exécution. Voici un moyen de le réaliser :

await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{ // Ce block sera exécuté dans le thread de l'interface utilisateur
} );

Gestionnaires d'événements VungleAd

Gestionnaires d'événements

Description

OnInitCompleted

Appelé immédiatement après l'initialisation du SDK. Vous pouvez vérifier s'il existe une annonce téléchargée depuis une session antérieure, ou charger une annonce pour les emplacements.

OnAdPlayableChanged

Notification au sujet du changement de disponibilité de la publicité pour l'emplacement. Attendez que ce gestionnaire exécute une action et qu'une annonce devienne disponible après avoir été chargée pour un emplacement.

OnAdStart

Appelé avant la lecture d'une annonce. Vous pouvez exécuter des actions telles que l'interruption de la musique de fond.

OnAdEnd

Appelé lorsque l'utilisateur ferme l'écran de fin et que le contrôle est restitué à votre application. Si l'une des valeurs IsCompletedView et CallToActionClicked est true, alors l'utilisateur a visionné l'annonce ou cliqué sur le bouton de téléchargement dans l'annonce. Dans ce cas, si l'annonce donne lieu à une récompense, alors l'utilisateur doit être récompensé. Vous pouvez exécuter des actions telles que la reprise des fonctionnalités de l'annonce.

Diagnostic

Appelé lorsque le SDK est sur le point d'imprimer les journaux de diagnostic.

Exemple de code :

//Register event handlers
sdkInstance.OnInitCompleted     += SdkInstance_OnInitCompleted;
sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;
sdkInstance.OnAdStart           += SdkInstance_OnAdStart;
sdkInstance.OnAdEnd             += SdkInstance_OnAdEnd;
sdkInstance.Diagnostic          += SdkInstance_Diagnostic;

...

// OnInitCompleted
//   e.Initialized - true si l'initialisation a réussi, false sinon
//   e.ErrorMessage - la raison de l'échec lorsque e.Initialized est false
private async void SdkInstance_OnInitCompleted(object sender, ConfigEventArgs e)
{
  var placementsInfo = "OnInitCompleted: " + e.Initialized;
  // L'initialisation a réussi
  if (e.Initialized == true)
  {
    // Imprime la liste des emplacements
    for (var i = 0; i < e.Placements.Length; i++)
    {
      placementsInfo += "\n\tPlacement" + (i + 1) + ": " + e.Placements[i].ReferenceId;
      if (e.Placements[i].IsAutoCached == true)
        placementsInfo += " (Auto-Cached)";
    }
  }
  // L'initialisation a échoué
  else
  {
    placementsInfo += "\n\t" + e.ErrorMessage;
  }
  System.Diagnostics.Debug.WriteLine(placementsInfo);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyInitialization(e.Initialized)));
}

// OnAdPlayableAdPlayable
//   e.AdPlayable - true si une annonce est disponible pour la lecture, false sinon
// e.Placement - ID de l'emplacement en chaîne de caractères
private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdPlayable(" + e.Placement + ") - " + e.AdPlayable);
  await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() =>
    NotifyWatcher(e.AdPlayable, e.Placement)));
}

// OnAdStart
// e.Id - ID de l'application Vungle en chaîne de caractères
// e.Placement - ID de l'emplacement en chaîne de caractères
private void SdkInstance_OnAdStart(object sender, AdEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnAdStart(" + e.Id + "): " + e.Placement);
}

// OnAdEnd
// e.Id - ID de l'application Vungle en chaîne de caractères
// e.Placement - ID de l'emplacement en chaîne de caractères
//   e.IsCompletedView- true si au moins 80 %  de la vidéo a été lue
//   e.CallToActionClicked - true si l'utilisateur a cliqué sur le bouton de téléchargement de l'écran de fin
//   e.WatchedDuration - OBSOLÈTE
private void SdkInstance_OnAdEnd(object sender, AdEndEventArgs e)
{
  System.Diagnostics.Debug.WriteLine("OnVideoEnd(" + e.Id + "): "
    + "\n\tPlacement: " + e.Placement
    + "\n\tIsCompletedView: " + e.IsCompletedView
    + "\n\tCallToActionClicked: " + e.CallToActionClicked
    + "\n\tWatchedDuration: " + e.WatchedDuration);
}

// Gestionnaire d'évènements appelé lorsque le SDK est sur le point d'imprimer les journaux de diagnostic.
private void SdkInstance_Diagnostic(object sender, DiagnosticLogEvent e)
{
  System.Diagnostics.Debug.WriteLine("Diagnostic - "
+ e.Level + " "
+ e.Type + " "
+ e.Exception + " "
+ e.Message); } // OBSOLÈTE - utilisez plutôt SdkInstance_OnAdEnd() private void SdkInstance_OnVideoView(object sender, AdViewEventArgs e) { }

Lecture de publicités Native Flex

Les SDK Vungle pour Windows 5.1.0 et versions supérieures prend en charge notre nouvelle fonctionnalité de publicité Native Flex. VungleAdControl ouvre les publicités vidéo dans leur format natif en passant un conteneur personnalisé au SDK Vungle via la propriété AdConfig.AdContainer et en gérant le contenu Container.Content de l'application hôte.

Configuration requise pour les publicités Native Flex

  • Windows SDK 5.1.0 ou ultérieures
  • Windows 10 UWP

Veuillez consulter votre gestionnaire de compte ou contactez tech-support@vungle.com pour configurer des placements publicitaires Native Flex.

Configuration de l'interface utilisateur pour les publicités Native Flex - XAML

VungleAdControl doit être déclaré avec l'ID de l'application Vungle, tous les ID d'emplacement utilisés dans l'application et l'ID de l'emplacement de l'affichage ou du flux Native Flex spécifique. Vous pouvez également y définir le UserId utilisé pour les emplacements de récompense.

Exemple de code :

<Grid
<UI:VungleAdControl x:Name="vungleEmbedded"
Height="200"
                     Width="300"
                      AppID="vungle_app_id"
                      Placements="placement_id_1,placement_id_2,native_flex_id"
                      Placement = "native_flex_id"
                      UserId="vungle_test_user">
    <TextBlock x:Name="Vungle Native Flex Ad"/>
  </UI:VungleAdControl>
</Grid>

Charger une publicité Native Flex

Le chargement d'une publicité à l'aide d'un emplacement Native Flex est identique au chargement d'une publicité en plein écran.

Exemple de code :

sdkInstance.LoadAd(“native_flex_id”); 

Lire une publicité Native Flex

La lecture d'une publicité à l'aide d'un emplacement Native Flex est similaire à la lecture de publicités en plein écran. Il convient cependant de configurer toute opération de personnalisation dans le fichier .xaml ou sur le tableau de bord, y compris la désactivation du son au démarrage de la lecture.

Exemple de code :

await vungleEmbedded.PlayAdAsync();

Gestionnaires d'événements pour les publicités Native Flex

Enregistrez des gestionnaires d'événements distincts pour gérer les différents comportements des publicités en mode plein écran et natif afin de faciliter l'expérience utilisateur.

Exemple de code :

vungleEmbedded.OnAdStart += (sender, arg) => {
    ...
}
vungleEmbedded.OnAdEnd += (sender, arg) => {
    ...
}
await vungleEmbedded.PlayAdAsync();
Vous avez d’autres questions ? Envoyer une demande

Commentaires