Con premio

Gli annunci con premio sono annunci con cui gli utenti hanno la possibilità di interagire in cambio di premi in-app. Questa guida mostra come integrare gli annunci con premio da AdMob in un'app Flutter.

Esegui sempre test con annunci di prova

Quando crei e testi le tue app, assicurati di utilizzare annunci di prova anziché annunci di produzione pubblicati. In caso contrario, l'account potrebbe essere sospeso.

Il modo più semplice per caricare gli annunci di prova è utilizzare il nostro ID unità pubblicitaria di test dedicato per gli annunci con premio:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Le unità pubblicitarie di test sono configurate in modo da restituire annunci di prova per ogni richiesta e puoi utilizzarle liberamente nelle tue app durante la programmazione, i test e il debug. Assicurati di sostituirli con i tuoi ID unità pubblicitaria prima di pubblicare l'app.

Carica un annuncio

Nell'esempio seguente viene caricato un annuncio con premio:

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5224354917'
    : 'ca-app-pub-3940256099942544/1712485313';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedAd.load(
        adUnitId: adUnitId,
        request: const AdRequest(),
        adLoadCallback: RewardedAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedAd failed to load: $error');
          },
        ));
  }
}

Eventi annunci con premio

Tramite FullScreenContentCallback, puoi esaminare gli eventi del ciclo di vita, ad esempio i momenti in cui l'annuncio viene mostrato o ignorato. Imposta RewardedAd.fullScreenContentCallback prima di mostrare l'annuncio per ricevere notifiche per questi eventi. Questo esempio implementa ogni metodo e registra un messaggio nella console:

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5224354917'
    : 'ca-app-pub-3940256099942544/1712485313';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedAd.load(
        adUnitId: adUnitId,
        request: const AdRequest(),
        adLoadCallback: RewardedAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            ad.fullScreenContentCallback = FullScreenContentCallback(
              // Called when the ad showed the full screen content.
              onAdShowedFullScreenContent: (ad) {},
              // Called when an impression occurs on the ad.
              onAdImpression: (ad) {},
              // Called when the ad failed to show full screen content.
              onAdFailedToShowFullScreenContent: (ad, err) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when the ad dismissed full screen content.
              onAdDismissedFullScreenContent: (ad) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when a click is recorded for an ad.
              onAdClicked: (ad) {});

            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedAd failed to load: $error');
          },
        ));
  }
}

Annuncio display

Una RewardedAd viene visualizzata come overlay sopra tutti i contenuti dell'app e viene posizionata in modo statico. Di conseguenza, non può essere aggiunta alla struttura ad albero del widget Flutter. Puoi scegliere quando mostrare l'annuncio chiamando il numero show(). RewardedAd.show() prende un OnUserEarnedRewardCallback, che viene richiamato quando l'utente guadagna un premio. Assicurati di implementarla e premia l'utente per aver guardato un annuncio.

_rewardedAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
  // Reward the user for watching an ad.
});

Una volta chiamata show(), una Ad visualizzata in questo modo non può essere rimossa in modo programmatico e richiede l'input dell'utente. Un RewardedAd può essere mostrato una sola volta. Le chiamate successive da mostrare attiveranno onAdFailedToShowFullScreenContent.

Un annuncio deve essere eliminato quando non è più necessario accedervi. La best practice per quando chiamare dispose() si trova nei callback FullScreenContentCallback.onAdDismissedFullScreenContent e FullScreenContentCallback.onAdFailedToShowFullScreenContent.

È tutto. La tua app è ora pronta per mostrare gli annunci con premio.

Esempio completo su GitHub

Con premio