Le inserzioni video con premio sono un'esperienza a schermo intero in cui gli utenti accettano di visualizzare un'inserzione video in cambio di qualcosa, ad esempio una valuta virtuale, articoli in-app, contenuti esclusivi e altro ancora. L'esperienza pubblicitaria è di 15-30 secondi, non può essere saltata e contiene un'immagine finale con una call to action. Al termine dell'intero video, riceverai una callback per concedere il premio suggerito all'utente.
Qui sotto vengono indicati i dettaglio della modalità di implementazione delle inserzioni video con premio da Audience Network su iOS.
Tieni presente che i video con premio sono supportati solo a partire da iOS 9.
Il formato del video con premio di Audience Network è ora incluso nell'SDK pubblico. Il video con premio sarà presto disponibile per tutte le app di gaming. Se non vedi il video con premio nella Gestione della monetizzazione e hai l'SDK più recente, richiedilo ora.
Prima di proseguire, assicurati di aver consultato le guide Primi passi di Audience Network e Primi passi su iOS.
Nel file di intestazione del controller di visualizzazione (o il file Swift se sei un utente Swift), importa FBAudienceNetwork
, dichiara la conformità al protocollo FBRewardedVideoAdDelegate
e aggiungi una variabile dell'istanza per l'unità pubblicitaria video con premio:
import UIKit
import FBAudienceNetwork
class ViewController: UIViewController, FBRewardedVideoAdDelegate {
private var rewardedVideoAd: FBRewardedVideoAd?
}
Aggiungi al tuo controller di visualizzazione una funzione che inizializzi l'oggetto video con premio e che memorizzi nella cache le creatività video in anticipo rispetto al momento in cui intendi mostrarle.
override func viewDidLoad() {
super.viewDidLoad()
// Instantiate an rewarded video object.
// NOTE: the placement ID will eventually identify this as your app. You can ignore it while you are testing
// and replace it later when you have signed up.
// While you are using this temporary code you will only get test ads and if you release
// your code like this to the App Store your users will not receive ads (you will get a 'No Fill' error).
let rewardedVideoAd = FBRewardedVideoAd(placementID: "YOUR_PLACEMENT_ID")
rewardedVideoAd.delegate = self
// For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
rewardedVideoAd.load()
self.rewardedVideoAd = rewardedVideoAd
}
L'ID che viene visualizzato su YOUR_PLACEMENT_ID
è un ID temporaneo solo a scopo di test.
Se utilizzi questo ID temporaneo nel tuo codice live, i tuoi utenti non riceveranno inserzioni (visualizzeranno un errore Mancato riempimento). Devi tornare qui dopo il test e sostituire questo ID temporaneo con un ID del posizionamento live.
Per scoprire come generare un ID del posizionamento live, consulta Configurazione di Audience Network
Ora che hai aggiunto il codice per il caricamento dell'inserzione, puoi aggiungere le funzioni che gestiranno i vari eventi.
Ad esempio:
rewardedVideoAdDidLoad
garantisce che l'app riceva una notifica quando l'inserzione viene memorizzata nella cache ed è pronta per la visualizzazione.rewardedVideoAdVideoComplete
ti informa quando consegnare il premio all'utente dopo una visualizzazione completa del video.func rewardedVideoAdDidLoad(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Video ad is loaded and ready to be displayed")
}
func rewardedVideoAd(_ rewardedVideoAd: FBRewardedVideoAd, didFailWithError error: Error) {
print("Rewarded video ad failed to load")
}
func rewardedVideoAdDidClick(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Video ad clicked")
}
func rewardedVideoAdDidClose(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Rewarded Video ad closed - this can be triggered by closing the application, or closing the video end card")
}
func rewardedVideoAdVideoComplete(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Rewarded Video ad video completed - this is called after a full video view, before the ad end card is shown. You can use this event to initialize your reward")
}
Infine, quando è tutto pronto per mostrare l'inserzione video con premio, puoi chiamare il codice seguente all'interno della tua funzione relativa al premio.
private func showRewardedVideoAd() {
guard let rewardedVideoAd = rewardedVideoAd, rewardedVideoAd.isAdValid else {
return
}
rewardedVideoAd.show(fromRootViewController: self)
}
Il metodo per mostrare un'inserzione video con premio include un flag booleano animated
che ti consente di animare la presentazione. Per impostazione predefinita è impostato su YES
/true
, ma puoi sovrascriverlo con quanto segue:
Usando il simulatore, le inserzioni di prova saranno mostrate per impostazione predefinita. Per abilitarle su un dispositivo, aggiungi la seguente linea di codice prima del caricamento di un'inserzione: AdSettings.addTestDevice(HASHED ID)
. Usa l'ID con hash che viene visualizzato nel logcat alla prima richiesta di caricamento di un'inserzione su un dispositivo.
Facoltativamente, puoi aggiungere le seguenti funzioni aggiuntive per gestire i casi in cui un'inserzione video con premio verrà chiusa o quando verrà acquisita l'impression relativa al video con premio:
func rewardedVideoAdWillClose(_ rewardedVideoAd: FBRewardedVideoAd) {
print("The user clicked on the close button, the ad is just about to close")
}
func rewardedVideoAdWillLogImpression(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Rewarded Video impression is being captured")
}
Se gestisci i premi per i tuoi utenti sul lato server, Facebook ti offre una soluzione per eseguire questa attività in sicurezza tramite una tecnica di convalida. Il nostro server comunicherà con un endpoint https specificato per la convalida di ogni impression relativa all'inserzione e per stabilire se il premio debba essere concesso o meno.
onRewardServerSuccess
: attivato solo se è stata ricevuta una risposta 200 durante il passaggio 3. onRewardServerFailed
: attivato se una risposta diversa da 200 è stata ricevuta durante il passaggio 3. Un esempio di URL che punta al tuo endpoint dell'editore dal server di Facebook.
https://www.your_end_point.com/?token=APP_SECRET&puid=USER_ID&pc=REWARD_ID&ptid=UNIQUE_TRANSACTION_ID
Indica il tuo endpoint dell'editore al rappresentante di Facebook per poter abilitare questa funzione.
È possibile impostare i dati relativi al premio (USER_ID
e CURRENCY
) prima o dopo il metodo loadAd
. Entrambi i casi sono illustrati nel seguente snippet di codice.
let rewardedVideoAd = FBRewardedVideoAd(placementID: "YOUR_PLACEMENT_ID")
rewardedVideoAd.delegate = self
// Set the rewarded ad data before or after `load` method is called
rewardedVideoAd.setRewardDataWithUserID("USER_ID", withCurrency: "CURRENCY")
// For auto play video ads, it's recommended to load the ad at least 30 seconds before it is shown
rewardedVideoAd.load()
self.rewardedVideoAd = rewardedVideoAd
Oltre alle funzioni delineate in precedenza in FBRewardedVideoAdDelegate
, devi usare i seguenti eventi per gestire l'assegnazione dei premi nella tua app. Puoi usare quanto segue insieme agli eventi menzionati in precedenza.
func rewardedVideoAdServerRewardDidFail(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Rewarded video ad not validated, or no response from server")
}
func rewardedVideoAdServerRewardDidSucceed(_ rewardedVideoAd: FBRewardedVideoAd) {
print("Rewarded video ad validated by server")
}
Tieni presente che le callback di convalida del server si verificheranno solo dopo che l'immagine finale è stata ignorata da un utente. Non devi annullare l'allocazione dell'oggetto video con premio finché non si verifica una di queste callback.
Relevant code samples in both Swift and Objective C are available on our GitHub sample app repository
Test your ads integration with your app
Submit your app for review