| | |
| | | |
| | | static void showSplashAd( |
| | | double width, double height, OnAdCallback adCallback) async { |
| | | var csjAppId = await ConfigUtil.getConfig(ConfigKey.csjAppId); |
| | | var gdtAppId = await ConfigUtil.getConfig(ConfigKey.gdtAppId); |
| | | if (StringUtil.isNullOrEmpty(csjAppId) && |
| | | StringUtil.isNullOrEmpty(gdtAppId)) { |
| | | adCallback(false, "appId为空"); |
| | | return; |
| | | //加载广告 |
| | | } |
| | | |
| | | static Widget? loadSplash(AdinfoModel? adInfo, double width, double height, |
| | | OnAdCallback adCallback) { |
| | | if (adInfo == null) { |
| | | adCallback(false, "广告信息为空"); |
| | | return null; |
| | | } |
| | | |
| | | var adInfo = await getAdInfo(AdPosition.splash); |
| | | if (adInfo == null) { |
| | | adCallback(false, "appId为空"); |
| | | return; |
| | | if (StringUtil.isNullOrEmpty(adInfo.type)) { |
| | | adCallback(false, "广告类型为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (adInfo.type == "csj") { |
| | | CSJAdUtil.loadSplash(adInfo.pid!, width, height, (success, msg) {}); |
| | | return CSJAdUtil.loadSplash(adInfo.pid!, width, height, adCallback); |
| | | } else { |
| | | GDTAdUtil.loadSplash(adInfo.pid!, (success, msg) {}); |
| | | return GDTAdUtil.loadSplash(adInfo.pid!, width, height, adCallback); |
| | | } |
| | | } |
| | | |
| | | static Widget? loadBanner( |
| | | AdinfoModel? adInfo, double width, double height, OnAdCallback callback) { |
| | | if (adInfo == null) { |
| | | callback(false, "广告信息为空"); |
| | | return null; |
| | | } |
| | | |
| | | //加载广告 |
| | | if (StringUtil.isNullOrEmpty(adInfo.type)) { |
| | | callback(false, "广告类型为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (adInfo.type == "csj") { |
| | | return CSJAdUtil.loadBanner(adInfo.pid!, width, height, callback); |
| | | } else { |
| | | return GDTAdUtil.loadBanner(adInfo.pid!, width, height, callback); |
| | | } |
| | | } |
| | | |
| | | static Widget? loadExpress( |
| | | AdinfoModel? adInfo, double width, double height, OnAdCallback callback) { |
| | | if (adInfo == null) { |
| | | callback(false, "广告信息为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(adInfo.type)) { |
| | | callback(false, "广告类型为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (adInfo.type == "csj") { |
| | | return CSJAdUtil.loadExpress(adInfo.pid!, width, height, callback); |
| | | } else { |
| | | return GDTAdUtil.loadExpress(adInfo.pid!, width, height, callback); |
| | | } |
| | | } |
| | | |
| | | static loadReward(AdinfoModel? adInfo, OnAdCallback callback) async { |
| | | if (adInfo == null) { |
| | | callback(false, "广告信息为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(adInfo.type)) { |
| | | callback(false, "广告类型为空"); |
| | | return null; |
| | | } |
| | | |
| | | if (adInfo.type == "csj") { |
| | | return CSJAdUtil.loadReward(adInfo.pid!, callback); |
| | | } else { |
| | | return GDTAdUtil.loadReward(adInfo.pid!, callback); |
| | | } |
| | | } |
| | | |
| | | static loadInterstitial(AdinfoModel? adInfo, OnAdCallback callback) async { |
| | | if (adInfo == null) { |
| | | return null; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(adInfo.type)) { |
| | | return null; |
| | | } |
| | | |
| | | if (adInfo.type == "csj") { |
| | | CSJAdUtil.loadInterstitial(adInfo.pid!, callback); |
| | | } else { |
| | | GDTAdUtil.loadInterstitial(adInfo.pid!, callback); |
| | | } |
| | | } |
| | | |
| | | static Future<AdinfoModel?> getAdInfo(String position) async { |
| | |
| | | if (StringUtil.isNullOrEmpty(model.type)) { |
| | | return null; |
| | | } |
| | | return model; |
| | | } |
| | | } |
| | | |
| | | class CSJAdUtil { |
| | | static Future init() async { |
| | | var csjAppId = await ConfigUtil.getConfig(ConfigKey.csjAppId); |
| | | var csjAppId = "5240078"; |
| | | //初始化穿山甲 |
| | | if (!StringUtil.isNullOrEmpty(csjAppId)) { |
| | | // if (Platform.isAndroid) { |
| | |
| | | // } |
| | | |
| | | await FlutterUnionad.register( |
| | | androidAppId: csjAppId!, |
| | | androidAppId: csjAppId, |
| | | //穿山甲广告 Android appid 必填 |
| | | iosAppId: "", |
| | | //穿山甲广告 ios appid 必填 |
| | |
| | | ); |
| | | } |
| | | |
| | | static loadInterstitial(String pid) async { |
| | | static loadInterstitial(String pid, OnAdCallback adCallback) async { |
| | | FlutterUnionad.loadFullScreenVideoAdInteraction( |
| | | androidCodeId: pid, //android 全屏广告id 必填 |
| | | iosCodeId: "", //ios 全屏广告id 必填 |
| | |
| | | }, |
| | | onFail: (error) { |
| | | print("新模板渲染插屏广告错误 $error"); |
| | | adCallback(false, "新模板渲染插屏广告错误 $error"); |
| | | }, |
| | | onClose: () { |
| | | print("新模板渲染插屏广告关闭"); |
| | | adCallback(true, "新模板渲染插屏广告关闭"); |
| | | }, |
| | | onReady: () async { |
| | | print("新模板渲染插屏广告预加载准备就绪"); |
| | |
| | | |
| | | class GDTAdUtil { |
| | | static Future init() async { |
| | | var gdtAppId = await ConfigUtil.getConfig(ConfigKey.gdtAppId); |
| | | var gdtAppId = "1200343363"; |
| | | //初始化广点通 |
| | | if (!StringUtil.isNullOrEmpty(gdtAppId)) { |
| | | await FlutterTencentad.register( |
| | | androidId: gdtAppId!, //androidId |
| | | androidId: gdtAppId, //androidId |
| | | iosId: "", //iosId |
| | | debug: true, //是否显示日志log |
| | | ); |
| | | } |
| | | } |
| | | |
| | | static loadSplash(String? pid, OnAdCallback adCallback) { |
| | | if (pid == null) { |
| | | adCallback(false, "pid为空"); |
| | | return; |
| | | } |
| | | FlutterTencentad.splashAdView( |
| | | static Widget? loadSplash( |
| | | String? pid, double width, double height, OnAdCallback adCallback) { |
| | | return FlutterTencentad.splashAdView( |
| | | //android广告id |
| | | androidId: pid, |
| | | androidId: pid!, |
| | | //ios广告id |
| | | iosId: "", |
| | | ////设置开屏广告从请求到展示所花的最大时长(并不是指广告曝光时长),取值范围为[1500, 5000]ms |
| | |
| | | }, |
| | | onClose: () { |
| | | print("开屏广告关闭"); |
| | | adCallback(true, ""); |
| | | adCallback(true, "开屏广告关闭"); |
| | | }, |
| | | onExpose: () { |
| | | print("开屏广告曝光"); |
| | | }, |
| | | onFail: (code, message) { |
| | | adCallback(true, message); |
| | | adCallback(false, message); |
| | | }, |
| | | ), |
| | | ); |
| | | } |
| | | |
| | | static Widget loadBanner( |
| | | String pid, double width, double height, OnAdCallback callback) { |
| | | return FlutterTencentad.bannerAdView( |
| | | //android广告id |
| | | androidId: pid, |
| | | //ios广告id |
| | | iosId: "", |
| | | //广告宽 单位dp |
| | | viewWidth: width, |
| | | //广告高 单位dp 宽高比应该为6.4:1 |
| | | viewHeight: height, |
| | | // 广告回调 |
| | | callBack: FlutterTencentadBannerCallBack( |
| | | onShow: () { |
| | | print("Banner广告显示"); |
| | | }, |
| | | onFail: (code, message) { |
| | | print("Banner广告错误 $code $message"); |
| | | callback(false, "Banner广告错误 $code $message"); |
| | | }, |
| | | onClose: () { |
| | | print("Banner广告关闭"); |
| | | callback(true, "Banner广告关闭"); |
| | | }, |
| | | onExpose: () { |
| | | print("Banner广告曝光"); |
| | | }, |
| | | onClick: () { |
| | | print("Banner广告点击"); |
| | | }, |
| | | ), |
| | | ); |
| | | } |
| | | |
| | | static Widget loadExpress( |
| | | String pid, double width, double height, OnAdCallback callback) { |
| | | return FlutterTencentad.expressAdView( |
| | | //android广告id |
| | | androidId: pid, |
| | | //ios广告id |
| | | iosId: "", |
| | | //广告宽 单位dp |
| | | viewWidth: width.toInt(), |
| | | //广告高 单位dp |
| | | viewHeight: height.toInt(), |
| | | //回调事件 |
| | | callBack: FlutterTencentadExpressCallBack( |
| | | onShow: () { |
| | | print("动态信息流广告显示"); |
| | | }, |
| | | onFail: (code, message) { |
| | | print("动态信息流广告错误 $code $message"); |
| | | }, |
| | | onClose: () { |
| | | print("动态信息流广告关闭"); |
| | | }, |
| | | onExpose: () { |
| | | print("动态信息流广告曝光"); |
| | | }, |
| | | onClick: () { |
| | | print("动态信息流广告点击"); |
| | | }, |
| | | )); |
| | | } |
| | | |
| | | static loadReward(String pid, OnAdCallback adCallback) async { |
| | | await FlutterTencentad.loadRewardVideoAd( |
| | | //android广告id |
| | | androidId: pid, |
| | | //ios广告id |
| | | iosId: "", |
| | | //用户id |
| | | userID: "", |
| | | //奖励 |
| | | rewardName: "VIP", |
| | | //奖励数 |
| | | rewardAmount: 1, |
| | | //扩展参数 服务器回调使用 |
| | | customData: ""); |
| | | |
| | | FlutterTencentAdStream.initAdStream( |
| | | //激励广告 |
| | | flutterTencentadRewardCallBack: |
| | | FlutterTencentadRewardCallBack(onShow: () { |
| | | print("激励广告显示"); |
| | | }, onClick: () { |
| | | print("激励广告点击"); |
| | | }, onFail: (code, message) { |
| | | print("激励广告失败 $code $message"); |
| | | adCallback(false, "激励广告失败"); |
| | | }, onClose: () { |
| | | print("激励广告关闭"); |
| | | }, onReady: () async { |
| | | print("激励广告预加载准备就绪"); |
| | | await FlutterTencentad.showRewardVideoAd(); |
| | | }, onUnReady: () { |
| | | print("激励广告预加载未准备就绪"); |
| | | }, onVerify: (transId, rewardName, rewardAmount) { |
| | | print("激励广告奖励 $transId $rewardName $rewardAmount"); |
| | | adCallback(true, "激励广告奖励"); |
| | | }, onFinish: () { |
| | | print("激励广告完成"); |
| | | }), |
| | | ); |
| | | } |
| | | |
| | | static loadInterstitial(String pid, OnAdCallback adCallback) async { |
| | | await FlutterTencentad.loadUnifiedInterstitialAD( |
| | | //android广告id |
| | | androidId: pid, |
| | | //ios广告id |
| | | iosId: "", |
| | | //是否全屏 |
| | | isFullScreen: false, |
| | | ); |
| | | |
| | | FlutterTencentAdStream.initAdStream( |
| | | flutterTencentadInteractionCallBack: FlutterTencentadInteractionCallBack( |
| | | onShow: () { |
| | | print("插屏广告显示"); |
| | | }, |
| | | onClick: () { |
| | | print("插屏广告点击"); |
| | | }, |
| | | onFail: (code, message) { |
| | | print("插屏广告失败 $code $message"); |
| | | adCallback(false, "插屏广告失败 $code $message"); |
| | | }, |
| | | onClose: () { |
| | | print("插屏广告关闭"); |
| | | adCallback(true, "插屏广告关闭"); |
| | | }, |
| | | onReady: () async { |
| | | print("插屏广告预加载准备就绪"); |
| | | await FlutterTencentad.showUnifiedInterstitialAD(); |
| | | }, |
| | | onUnReady: () { |
| | | print("插屏广告预加载未准备就绪"); |
| | | }, |
| | | ), |
| | | ); |