// // FAQRewardVideoPage.swift // Pods // // Created by Jin on 10/23/24. // import UIKit import Flutter // 激励视频页面 class FAQRewardVideoPage: FAQBaseAdPage, GDTRewardedVideoAdDelegate { // 激励视频广告对象 var rvad: GDTRewardVideoAd? // 服务端验证的自定义信息 var customData: String? // 服务端验证的用户信息 var userId: String? // 加载广告 override func loadAd(call: FlutterMethodCall) { guard let arguments = call.arguments as? [String: Any], let customData = arguments["customData"] as? String, let userId = arguments["userId"] as? String, let playMuted = arguments["playMuted"] as? Bool else { return } self.customData = customData self.userId = userId // 初始化激励视频广告 self.rvad = GDTRewardVideoAd(placementId: self.posId) self.rvad?.delegate = self self.rvad?.videoMuted = playMuted // 如果设置了服务端验证,可以设置 serverSideVerificationOptions 属性 let ssv = GDTServerSideVerificationOptions() ssv.userIdentifier = self.userId ssv.customRewardString = self.customData self.rvad?.serverSideVerificationOptions = ssv self.rvad?.load() } // MARK: - GDTRewardVideoAdDelegate func gdt_rewardVideoAdDidLoad(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) if let controller = UIApplication.shared.keyWindow?.rootViewController { self.rvad?.show(fromRootViewController: controller) // 发送广告事件 self.sendEventAction(onAdLoaded) } } func gdt_rewardVideoAdVideoDidLoad(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) } func gdt_rewardVideoAdWillVisible(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) // 发送广告事件 self.sendEventAction(onAdPresent) } func gdt_rewardVideoAdDidExposed(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) print("广告已曝光") // 发送广告事件 self.sendEventAction(onAdExposure) } func gdt_rewardVideoAdDidClose(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) print("广告已关闭") // 发送广告事件 self.sendEventAction(onAdClosed) } func gdt_rewardVideoAdDidClicked(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) print("广告已点击") // 发送广告事件 self.sendEventAction(onAdClicked) } func gdt_rewardVideoAd(_ rewardedVideoAd: GDTRewardVideoAd, didFailWithError error: Error) { print(#function) print("ERROR: \(error.localizedDescription)") // 发送广告错误事件 self.sendErrorEvent(errCode: (error as NSError).code, errMsg: error.localizedDescription) } func gdt_rewardVideoAdDidRewardEffective(_ rewardedVideoAd: GDTRewardVideoAd, info: [AnyHashable: Any]) { print(#function) if let transId = info["GDT_TRANS_ID"] as? String { print("播放达到激励条件 transid: \(transId)") // 发送激励事件 let event = FAQAdRewardEvent(adId: self.posId, transId: transId, customData: self.customData!, userId: self.userId!) self.sendEvent(event) } } func gdt_rewardVideoAdDidPlayFinish(_ rewardedVideoAd: GDTRewardVideoAd) { print(#function) print("视频播放结束") } }