Почему промежуточная реклама admob не отображается на iOS?

Мое рекламное объявление AdMob не показывается при нажатии кнопки adText. Я хотел бы, чтобы промежуточное объявление показывалось, а при закрытии запускалась моя функция text(). Я хотел бы, чтобы то же самое происходило при нажатии моей кнопки adCall, но после того, как промежуточное объявление было отклонено, чтобы запустить мою функцию call().

enum RequestType{
    case call
    case text
}


var requestType: RequestType?

@IBAction func adText(_ sender: Any) {
    requestType = .text
    presentInterstitialAd()
    text()
}

@IBAction func adCall(_ sender: Any) {
    requestType = .call
    presentInterstitialAd()
    call()
}


func interstitialDidDismissScreen(_ ad: GADInterstitial) {
    interstitialAd = reloadInterstitialAd()
}

func presentInterstitialAd() {
    if self.interstitialAd.isReady {
        self.interstitialAd.present(fromRootViewController: self)
    }
}

func invokeRequest() {
    guard let requestType = requestType else {
        fatalError("NO request type specified!")    
    }
    switch requestType {
    case .call: invokeCall()
    case .text: invokeText()
    }
}

func invokeCall() {}
func invokeText() {}

func call() {   
    if let contactopt = contact {
        if let url = NSURL(string: "tel://\(contactopt)") {
            //    UIApplication.shared.openURL(url as URL)
            UIApplication.shared.open(url as URL, options: [:], completionHandler: nil)

        }
    }
}

func text(){
    if canSendText() {
        if let contactopt = contact{
            let messageVC = MFMessageComposeViewController()
            messageVC.recipients = [String(contactopt)]
            messageVC.messageComposeDelegate = self;

            self.present(messageVC, animated: false, completion: nil)}}
    else {

        let alertController = UIAlertController(title: "Cannot Send Text Message", message: "Your device is not able to send text messages.", preferredStyle: UIAlertControllerStyle.alert)
        let DestructiveAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.destructive) {
            (result : UIAlertAction) -> Void in
            print("error")
        }

        let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
            (result : UIAlertAction) -> Void in
            print("OK")
        }

        alertController.addAction(DestructiveAction)
        alertController.addAction(okAction)
        self.present(alertController, animated: true, completion: nil)
    }
}

1 ответ

Решение

Как я правильно понимаю, вы просто хотите вызвать фактическое поведение кнопки после того, как объявление было представлено и отклонено. В этом случае просто сохраните тип запроса, представьте объявление, отклоните объявление, перезагрузите промежуточный запрос и вызовите запрос сохраненного типа запроса.

Сначала определите типы:

enum RequestType {
  case call
  case text
}

Во-вторых, обновите свой контроллер вида:

var requestType: RequestType?

@IBAction func adText(_ sender: Any) {
  requestType = .text
  presentInterstitialAd()
}

@IBAction func adCall(_ sender: Any) {
  requestType = .call
  presentInterstitialAd() 
}

func presentInterstitialAd() {
  if self.interstitialAd.isReady {
    self.interstitialAd.present(fromRootViewController: self)
  }
}

func interstitialDidDismissScreen(_ ad: GADInterstitial) {
  interstitialAd = reloadInterstitialAd()
  invokeRequest()
}

func invokeRequest() {
  guard let requestType = requestType else {
    fatalError("No request type specified!")
  }
  switch requestType {
  case .call: call()
  case .text: text()
  }
}

func call() {
  // your code
}

func text() {
  // your code
}
Другие вопросы по тегам