Ich verwende Swift, um Interstitial-Anzeigen in meine App zu implementieren. Ich habe es geschafft, Interstitial-Werbung zu zeigen, aber es gibt kein nahes 'X', um die Anzeige loszuwerden. Warum ist das?Interstitial iAd hat keine Schaltfläche zum Schließen 'X'
5
A
Antwort
1
Ich kann auch keine Antwort finden, warum das eingebaute Framework keine Schaltfläche zum Schließen bietet, aber ich benutze die folgende Lösung.
//iAD interstitial definition with custom placeHolderView and close button
//you do not need to add anything to interface builder. All is done with code
var interstitial:ADInterstitialAd!
var placeHolderView:UIView!
var closeButton:UIButton!
//Full Implemantation of iAD interstitial and delegate methods
func cycleInterstitial(){
// create a new interstitial. We set the delegate so that we can be notified
interstitial = ADInterstitialAd()
interstitial.delegate = self;
}
func presentInterlude(){
// If the interstitial managed to load, then we'll present it now.
if (interstitial.loaded) {
placeHolderView = UIView(frame: self.view.frame)
self.view.addSubview(placeHolderView)
closeButton = UIButton(frame: CGRect(x: 270, y: 25, width: 25, height: 25))
//add a cross shaped graphics into your project to use as close button
closeButton.setBackgroundImage(UIImage(named: "cross"), forState: UIControlState.Normal)
closeButton.addTarget(self, action: Selector("close"), forControlEvents: UIControlEvents.TouchDown)
self.view.addSubview(closeButton)
interstitial.presentInView(placeHolderView)
}
}
// iAd Delegate Mehtods
// When this method is invoked, the application should remove the view from the screen and tear it down.
// The content will be unloaded shortly after this method is called and no new content will be loaded in that view.
// This may occur either when the user dismisses the interstitial view via the dismiss button or
// if the content in the view has expired.
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!){
placeHolderView.removeFromSuperview()
closeButton.removeFromSuperview()
interstitial = nil
cycleInterstitial()
}
func interstitialAdActionDidFinish(_interstitialAd: ADInterstitialAd!){
placeHolderView.removeFromSuperview()
closeButton.removeFromSuperview()
interstitial = nil
println("called just before dismissing - action finished")
}
// This method will be invoked when an error has occurred attempting to get advertisement content.
// The ADError enum lists the possible error codes.
func interstitialAd(interstitialAd: ADInterstitialAd!,
didFailWithError error: NSError!){
cycleInterstitial()
}
//Load iAd interstitial
func dislayiAdInterstitial() {
//iAd interstitial
presentInterlude()
}
func close() {
placeHolderView.removeFromSuperview()
closeButton.removeFromSuperview()
interstitial = nil
}
0
interstitielle = InterstitialAd mit() bewirkt, dass mir das gleiche Problem wie Sie.
Wenn Sie jedoch den folgenden Code in Ihrer AppDelegate Anwendung Funktion sind:
UIViewController.prepareInterstitialAds()
Dann können Sie eine Interstitial-Anzeige mit diesem erzeugen:
viewController.requestInterstitialAdPresentation()
Ich bin nicht sicher, wie man die Rückrufe, obwohl.
0
iOS 9.2.1, Xcode 7.2.1 aktiviert ARC
Bitte meinen Beitrag lesen:
https://stackoverflow.com/a/35467510/4018041
Ich benutze immer noch presentFromViewController:
Methode.
Hoffe, das hilft! Prost.