Моя устаревшая реализация Admob rewardedAd работала нормально. Сегодня я обновился до новой реализации, и она не работает должным образом. Помимо сомнительного кода Admob Swift (возврат объекта без возврата в объявлении функции). В итоге:
- Я могу создать и загрузить начальное RewardedAd
- При нажатии кнопка, которая запускает rewardedAd - через уведомления - он генерирует следующие сообщения от Debugger ("Rewarded объявление представлено", сразу за которым следует "Rewarded ad not present" и сообщение об ошибке "Loading failed: Error Domain = com.google.admob Code = 18 «Ошибка презентации: не будет отображаться объявление, потому что объект объявления был использован». UserInfo = {NSLocalizedDescription = Ошибка презентации: не будет отображаться объявление, поскольку объект объявления был использован.}
С уважением на шаге 2 выше жизненный цикл никогда не проходит через «rewardedAd» или «rewardedAdDidDismiss» и запускает «« Не удалось показать вознагражденное объявление »без попытки представить новое объявление.
Не уверен, что может быть причиной ошибки источника быть и был бы признателен за любую помощь в этом. спасибо.
Моя реализация следующая (строго следует коду Google):
var rewardedAd: GADRewardedAd?
override func viewDidLoad() {
...
createAndLoadRewardedAd()
...
{
/// creating the rewarded ad
func createAndLoadRewardedAd() {
rewardedAd = GADRewardedAd(adUnitID: "ca-app-pub-3940256099942544/1712485313")
rewardedAd?.load(GADRequest()) { error in
if let error = error {
print("Loading failed: \(error)")
} else {
print("Loading Succeeded")
}
}
}
/// Lifecycle
/// Tells the delegate that the user earned a reward.
func rewardedAd(_ rewardedAd: GADRewardedAd, userDidEarn reward: GADAdReward) {
print("Reward received with currency: \(reward.type), amount \(reward.amount).")
}
/// Tells the delegate that the rewarded ad was presented.
func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) {
print("Rewarded ad presented.")
}
/// Tells the delegate that the rewarded ad was dismissed.
/// Load another ad upon dismissing the previous
func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) {
print("RewardAd did dismiss")
createAndLoadRewardedAd()
}
/// Tells the delegate that the rewarded ad failed to present.
func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) {
print("Rewarded ad failed to present.")
print("Loading failed: \(error)")
}
/// Used by Notification Observer to present rewardedAd
@objc func startRewardVideoAd() {
if rewardedAd?.isReady == true {
rewardedAd?.present(fromRootViewController: self, delegate:self)
} else {
print("Reward based video not ready")
}
}