79 lines
1.9 KiB
Swift
79 lines
1.9 KiB
Swift
//
|
|
// 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)
|
|
}
|
|
}
|