// // FAQBaseAdPage.swift // Pods // // Created by Jin on 10/23/24. // import Flutter import UIKit // 基础 - 广告页面 class FAQBaseAdPage: NSObject { let kPosId = "posId" var posId: String! var eventSink: FlutterEventSink? var mainWin: UIWindow? var rootController: UIViewController? var width: CGFloat = 0 var height: CGFloat = 0 // 添加广告事件 func addAdEvent(_ event: FAQAdEvent) { if let eventSink = self.eventSink { eventSink(event.toMap()) } } // 显示广告 func showAd(call: FlutterMethodCall, eventSink: @escaping FlutterEventSink) { guard let arguments = call.arguments as? [String: Any], let posId = arguments[kPosId] as? String else { return } self.posId = posId self.eventSink = eventSink // 获取主 window self.mainWin = UIApplication.shared.keyWindow // 获取 rootViewController self.rootController = self.mainWin?.rootViewController // 获取宽高 let size = UIScreen.main.bounds.size self.width = size.width self.height = size.height loadAd(call: call) } // 加载广告 func loadAd(call: FlutterMethodCall) { print(#function) // 使用 Swift 的 print 代替 NSLog } // 发送广告事件 func sendEvent(_ event: FAQAdEvent) { if let eventSink = self.eventSink { eventSink(event.toMap()) } } // 发送广告事件 func sendEventAction(_ action: String) { let event = FAQAdEvent(adId: self.posId, action: action) sendEvent(event) } // 发送广告错误事件 func sendErrorEvent(errCode: Int, errMsg: String) { let event = FAQAdErrorEvent( adId: self.posId, errCode: NSNumber(value: errCode), errMsg: errMsg) sendEvent(event) } }