Pré-requisitos
Carregar e Mostrar o Anúncio
Considere um cenário onde o clique de um botão aciona um Interstitial e, subsequentemente, o NovaViewController é lançado de MainViewController.
Carregar
Para carregar um anúncio intersticial, use RefineryAdFactory.shared.createInterstitial método dentro do super.viewDidLoad do MainViewController.
class MainViewController: UiViewControlelr {
var interstitialId:Int32 = -1;
…
override func viewDidLoad() {
super.viewDidLoad()
…
let interstitialAdId = ConfigBuilder.companion.INTERSTITIAL_TEST_R89_CONFIG_ID
interstitialId = RefineryAdFactory.shared.createInterstitial(configurationID: interstitialAdId, uiViewController: self, afterInterstitial: {
// Este callback é chamado quando o interstitial fecha ou falha ao carregar.
// Aqui o fluxo de navegação continua
self.present(NewViewController(), animated: true)
}, lifecycleCallbacks: nil)
}
…
}
Como podemos observar na apósIntersticial callback, assim que o anúncio intersticial for fechado, a navegação para NovaViewController ocorrerá.
Mostrar ao Pressionar o Botão
Alguns eventos acontecem em seu aplicativo, como o pressionamento de um botão, mudança de aba ou abertura de um link.
Se o Intersticial ainda não carregou ou falhou ao carregar quando você chama Mostrar, o fluxo continuará normalmente.
class MainViewController: UiViewController {
…
override func viewDidLoad() {
super.viewDidLoad()
…
// Configure uma ação no uiButton para exibir o intersticial carregado com seu interstitialId.
uiButton.addAction(UIAction(handler: {_ in
RefineryAdFactory.shared.show(index: self.interstitialId)
}), for: .touchUpInside)
}
…
}
Mostra sobre a Criação do Intersticial
Em contraste com o exemplo anterior, onde o anúncio intersticial era pré-carregado dentro do viewDidLoad método, agora o anúncio intersticial será carregado após o evento de pressionar o botão.
class MainViewController: UiViewController {
…
override func viewDidLoad() {
super.viewDidLoad()
…
// Configure uma ação no uiButton para exibir o intersticial carregado com seu interstitialId.
uiButton.addAction(UIAction(handler: {_ in
createInterstitial()
}), for: .touchUpInside)
}
…
}
Aqui está a implementação da criarIntersticial() método.
class MainViewController: UiViewControlelr {
override func viewDidLoad() { … }
…
func createInterstitial(){
let interstitialAdId = ConfigBuilder.companion.INTERSTITIAL_TEST_R89_CONFIG_ID
interstitialId = RefineryAdFactory.shared.createInterstitial(configurationID: interstitialAdId, uiViewController: self, afterInterstitial: {
// Aqui o fluxo de navegação continua
self.present(NewViewController(), animated: true)
}, lifecycleCallbacks: InterstitialEventListenerDelegate(viewController: self))
}
}
A instância de DelegadoDeListenerDeInterstitial é passado para o callbacksLifecycle parâmetro. O DelegadoDeListenerDeInterstitial será notificado sempre que o intersticial for carregado ou falhar ao carregar.
class InterstitialEventListenerDelegate : InterstitialEventListener {
let viewController:LunchScreenViewController
init(viewController: LunchScreenViewController) {
self.viewController = viewController
}
override func onLoaded() {
RefineryAdFactory.shared.show(index: viewController.interstitialId)
}
override func onFailedToLoad(error: R89LoadError) {
RefineryAdFactory.shared.show(index: viewController.interstitialId)
}
}
Isso aumentará o tempo necessário para executar a ação do usuário.
Porque está fazendo a solicitação de anúncio quando o usuário realiza a ação. Você deve usar a abordagem anterior onde fazemos a solicitação e armazenamos o ID do anúncio para exibi-lo instantaneamente quando o usuário realiza as ações.
É assim que usamos o Interstitial que usamos em Demos.
Eventos do Ciclo de Vida
Para observar os métodos de ciclo de vida do intersticial, crie uma instância de DelegadoDeListenerDeInterstitial e passar para RefineryAdFactory.shared.createInterstitial método.
Os seguintes métodos estão disponíveis.
private class LoggerInterstitialEventListener : InterstitialEventListener {
override func onLoaded() {
print(“onLoaded”)
}
override func onFailedToLoad(error: R89LoadError) {
print(“onFailedToLoad”,”error=\(error)”)
}
override func onOpen() {
print(“onOpen”)
}
override func onClick() {
print(“onClick”)
}
override func onImpression() {
print(“onImpression”)
}
override func onAdDismissedFullScreenContent() {
print(“onAdDismissedFullScreenContent”)
}
override func onAdFailedToShowFullScreen(errorMsg: String) {
print(“onAdFailedToShowFullScreen”,”errorMsg=\(errorMsg)”)
}
}
Como você pode ver aoFechar não está presente porque temos o apósIntersticial evento que é obrigatório passar como parâmetro para RefineryAdFactory.shared.createInterstitial método e detém a mesma funcionalidade que aoFechar com casos especiais.
Após Intersticial
Isso não é passado como um objeto separado como os outros Eventos porque é obrigatório lidar com o que acontece após um Intersticial ser fechado. Isso é invocado no SDK quando:
-
Tudo correu bem e o usuário acabou de fechar o anúncio em tela cheia.
-
O anúncio ainda não carregou e você tentou exibi-lo.
-
O anúncio foi invalidado e você tentou exibi-lo. Ele é invalidado quando:
-
Falha ao carregar.
-
Já mostrado.
-
Tempo demais sem mostrá-lo.
-
-
O anúncio não pôde ser exibido.