116 lines
4.1 KiB
Swift
116 lines
4.1 KiB
Swift
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))
|
|
}
|
|
}
|