2016-04-22 11 views
0

Ich habe eine Schaltfläche, die zu einer anderen Ansicht übergeht. Wenn der Nutzer auf diese Schaltfläche klickt, möchte ich eine Interstitial-Anzeige anzeigen (wenn eine solche geladen ist) und dann, sobald der Nutzer die Interstitial-Anzeige ablehnt, den Übergang wie gewohnt durchführen. Wenn keine Interstitial-Anzeige vorhanden war, führen Sie den Übergang wie üblich aus.Admob-Anzeige Interstitial vor segue - Swift

Ich habe Code, der ein Interstitial anzeigen wird, aber wenn der Benutzer es entlässt, nimmt es sie zu dem vorherigen Ansichtscontroller zurück. Sie müssen erneut auf die Schaltfläche klicken, um zum nächsten View-Controller zu gelangen. Irgendwelche Tipps?

// In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if(interstitial.isReady) { 
      interstitial.presentFromRootViewController(self) 
     } 
    } 

enter image description here

+0

Haben Sie das jemals gelöst? Ich versuche etwas genau Ihrer Frage ähnlich zu machen, kann aber keine Lösungen finden. Ich kann einfach nicht scheinen, die Interstitial zuerst zu feuern, und dann segne. – Joe

Antwort

0

Ich wollte das Gleiche tun. Sobald sie sich die Anzeige angesehen haben, möchte ich, dass sie mit dem normalen Übergang fortfährt. Also habe ich eine Warnung mit einem Rückruf hinzugefügt. Der einzige Unterschied war meiner war ein UITableViewCell tippen. In Ihrem Fall tut nur so etwas wie diese:

@IBAction func buttonTapped(sender: UIButton) 
{ 
    self.presentViewController(interstitialAdAlert(
     { adWatched in 
       if adWatched 
       { 
        // perform segue here 
       } 
     }), 
     animated: true, 
     completion: nil) 
} 

Wo adWatched der Callback-Parameter ist und interstitialAdAlert(watchAdCallback: (adWatched: Bool) ist Funktion, die den Alarm präsentiert, wie unten zu sehen:

func interstitialAdAlert(watchAdCallback: (adWatched: Bool) ->()) -> UIAlertController 
{ 
    let alert = UIAlertController(title: "Watch Ad?", message: "Your message here.", preferredStyle: .Alert) 
    let watchAdAction = UIAlertAction(title: "Watch Ad", style: .Default) 
     { (_) in 
      self.interstitial.isReady ? self.interstitial.presentFromRootViewController(self) : DDLogSwift.debug("The interstitial ad couldn't be loaded.") 
      watchAdCallback(adWatched: true) 
     } 

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) 
    { (_) in 
      watchAdCallback(adChosen: false) 
    } 

    alert.addAction(watchAdAction) 
    alert.addAction(cancelAction) 

    return alert 
} 

Hoffnung, das hilft. Funktioniert wie ein Zauber für mich mit meinem Tableview! Achte auch darauf, dass du die Interstitial-Anzeige in viewWillAppear erstellst und lädst.