import UIKit import Flutter public class UnionAdSsgfPlugin: NSObject, FlutterPlugin ,FlutterStreamHandler{ static var methodName:String = "union_ad_ssgf_method" static var eventName :String = "flutter_qq_ads_event" var splashAd: FAQSplashPage! var rewardAd: FAQRewardVideoPage! // 通知时间 var eventChannel:FlutterEventChannel? var sink:FlutterEventSink? public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? { self.sink = events; return nil; } public func onCancel(withArguments arguments: Any?) -> FlutterError? { self.sink = nil; return nil; } public static func register(with registrar: FlutterPluginRegistrar) { let methodChannel = FlutterMethodChannel(name: methodName, binaryMessenger: registrar.messenger()); let eventChannel = FlutterEventChannel(name: eventName, binaryMessenger: registrar.messenger()); let instance = UnionAdSsgfPlugin(); registrar.addMethodCallDelegate(instance, channel: methodChannel); eventChannel.setStreamHandler(instance); } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { switch call.method { case "getPlatformVersion": getPlatformVersion(call: call, result: result) case "initAd": // 初始化 initAd(call:call, result: result); case "setPersonalizedState": // 设置广告个性化 setPersonalizedState(call:call, result: result); case "showSplashAd": // 开屏广告 showSplashAd(call:call, result: result); case "showRewardVideoAd": // 激励广告 showRewardVideoAd(call:call, result: result); default: result(FlutterMethodNotImplemented) } } // 版本号 public func getPlatformVersion(call: FlutterMethodCall, result: @escaping FlutterResult) { result("iOS " + UIDevice.current.systemVersion) } // 初始化广告 public func initAd(call: FlutterMethodCall, result: @escaping FlutterResult) { if let arguments = call.arguments as? [String: Any], let appId = arguments["appId"] as? String { print("App ID: \(appId)") // 初始化插件 let initSuccess = GDTSDKConfig.initWithAppId(appId) result(NSNumber(value: initSuccess)) GDTSDKConfig.start {success, error in // 返回结果 result(true) if success { result(NSNumber(value: true)) } else { result(NSNumber(value: false)) if let error = error { print("FlutterQqAdsPlugin initAd error: \(error.localizedDescription)") } } } } else { print("appId not found or invalid type.") result(NSNumber(value: false)) // 处理无效的 appId } } // 设置广告个性化 public func setPersonalizedState(call: FlutterMethodCall, result: @escaping FlutterResult) { if let arguments = call.arguments as? [String: Any], let state = arguments["state"] as? Int { print("Set State : \(state)") GDTSDKConfig.setPersonalizedState(state) result(NSNumber(value: true)) } else { print("appId not found or invalid type.") result(NSNumber(value: false)) // 处理无效的 appId } } // 开屏广告 public func showSplashAd(call: FlutterMethodCall, result: FlutterResult) { // 初始化 FAQSplashPage 实例 self.splashAd = FAQSplashPage() // 调用 showAd 方法 self.splashAd.showAd(call: call, eventSink: self.sink!) // 返回结果 result(NSNumber(value: true)) } // 激励广告 public func showRewardVideoAd(call: FlutterMethodCall, result: FlutterResult) { // 初始化 FAQRewardVideoPage 实例 self.rewardAd = FAQRewardVideoPage(); // 调用 showAd 方法 self.rewardAd.showAd(call: call, eventSink: self.sink!) // 返回结果 result(NSNumber(value: true)) } }