Функция предназначена для выполнения каждые 15 нажатий, но всегда выполняется при первом нажатии - PullRequest
0 голосов
/ 16 января 2019

У меня есть счетчик, предназначенный для отображения рекламы каждый раз, когда пользователь нажимает кнопку «воспроизвести снова». На 15-й пьесе они получают рекламу. Проблема в том, что он всегда показывает объявление (функция запускается) после первого клика, а затем подчиняется логике 15 кликов. Я хочу это исправить, потому что реклама появляется слишком рано в игре. Вот мой код:

@objc func playAgain(_ sender: Any) {
    if counter % 15 == 0 {
        if Appodeal.isReadyForShow(with: .interstitial) {
            Appodeal.showAd(AppodealShowStyle.interstitial, rootViewController: self)
        } else {
                let storyboard = UIStoryboard(name: "Main", bundle: nil)
                let controller = storyboard.instantiateViewController(withIdentifier: "HouseAd")
                self.present(controller, animated: true, completion: nil)
                print("Ad wasn't ready")
        }
    }
    counter += 1
}

Я ожидаю, что он будет отображаться после каждых 15 нажатий, но он всегда запускается после первого щелчка, а затем подчиняется логике.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Прежде всего ваша логика показывает объявление после 16-го клика, потому что счетчик начинается с 0.

Вы можете сделать

if counter == 14 {
   counter = 0
   // show ad
} else { counter += 1 }

или

guard counter < 14 else {
   counter = 0
   // show ad
   return
} 
counter += 1

Это позволяет избежать переполнения Int через пару сотен лет ?

0 голосов
/ 16 января 2019

Увеличьте значение counter перед оператором if, поэтому после первого щелчка значение, которое приходит в условие, будет 1, а не 0 (0%15==0 возвращает true). Также вы можете изменить значение на 0 каждый раз, когда счетчик равен 15, а затем вы можете просто сравнить два числа:

counter += 1
if counter == 15 { 
    counter = 0
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...