import 'dart:async'; import 'package:flutter/material.dart'; import 'package:union_ad_ssgf/flutter_union_ad.dart'; import 'package:union_ad_ssgf_example/ads_config.dart'; import 'package:union_ad_ssgf_example/splash_page.dart'; class HomePage extends StatefulWidget { final bool initAD; const HomePage({super.key, required this.initAD}); @override State createState() => _HomePageState(); } class _HomePageState extends State { String adVersion = ''; StreamSubscription? _adViewStream; @override void dispose() { _adViewStream?.cancel(); super.dispose(); } @override void initState() { super.initState(); version(); _adViewStream = FlutterUnionAdStream.initAdStream( //激励广告 flutterTencentadRewardCallBack: FlutterUnionAdRewardCallBack( onShow: () { print("激励广告显示"); }, onClick: () { print("激励广告点击"); }, onFail: (code, message) { print("激励广告失败 $code $message"); }, onClose: () { print("激励广告关闭"); }, onReady: () async { print("激励广告预加载准备就绪"); await FlutterUnionAd.showRewardVideoAd(); }, onUnReady: () { print("激励广告预加载未准备就绪"); }, onVerify: (transId, rewardName, rewardAmount) { print("激励广告奖励 $transId $rewardName $rewardAmount"); }, onExpose: () { print("激励广告曝光"); }, onFinish: () { print("激励广告完成"); }, onECPM: (ecpmLevel, ecpm) async { print("激励广告竞价 ecpmLevel=$ecpmLevel ecpm=$ecpm"); //规则 自己根据业务处理 if (ecpm > 0) { //竞胜出价,类型为Integer //最大竞败方出价,类型为Integer await FlutterUnionAd.showRewardVideoAd( result: FlutterUnioAdBiddingResult().success(ecpm, 0)); } else { //竞胜方出价(单位:分),类型为Integer //优量汇广告竞败原因 FlutterTencentAdBiddingLossReason //竞胜方渠道ID FlutterTencentAdADNID await FlutterUnionAd.showRewardVideoAd( result: FlutterUnioAdBiddingResult().fail( 1000, FlutterTencentAdBiddingLossReason.LOW_PRICE, FlutterTencentAdADNID.othoerADN)); } }, ), flutterTencentadInteractionCallBack: FlutterUnionAdInteractionCallBack( onShow: () { print("插屏广告显示"); }, onClick: () { print("插屏广告点击"); }, onFail: (code, message) { print("插屏广告失败 $code $message"); }, onClose: () { print("插屏广告关闭"); }, onExpose: () { print("插屏广告曝光"); }, onReady: () async { print("插屏广告预加载准备就绪"); await FlutterUnionAd.showUnifiedInterstitialAD(); }, onUnReady: () { print("插屏广告预加载未准备就绪"); }, onVerify: (transId, rewardName, rewardAmount) { print("插屏广告奖励凭证id $transId"); }, onECPM: (ecpmLevel, ecpm) async { print("插屏广告竞价 ecpmLevel=$ecpmLevel ecpm=$ecpm"); //规则 自己根据业务处理 if (ecpm > 0) { //竞胜出价,类型为Integer //最大竞败方出价,类型为Integer await FlutterUnionAd.showUnifiedInterstitialAD( result: FlutterUnioAdBiddingResult().success(ecpm, 0)); } else { //竞胜方出价(单位:分),类型为Integer //优量汇广告竞败原因 FlutterTencentAdBiddingLossReason //竞胜方渠道ID FlutterTencentAdADNID await FlutterUnionAd.showUnifiedInterstitialAD( result: FlutterUnioAdBiddingResult().fail( 1000, FlutterTencentAdBiddingLossReason.LOW_PRICE, FlutterTencentAdADNID.othoerADN)); } }, ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Union AD plugin'), ), body: Center( child: SingleChildScrollView( padding: const EdgeInsets.all(10), child: Column( children: [ Text('初始化: ${widget.initAD}'), Text('当前版本: $adVersion'), const SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const SizedBox(height: 20), ElevatedButton( child: const Text('开屏(全屏)'), onPressed: () { showSplashAd(context); setState(() {}); }, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ ElevatedButton( child: const Text('插屏激励'), onPressed: () { showInterstitialAd(); }, ), const SizedBox(height: 20), ElevatedButton( child: const Text('激励视频'), onPressed: () { showRewardVideoAd(); }, ), ], ), ], ), ), ), ); } /// 展示插屏广告 Future showInterstitialAd() async { await FlutterUnionAd.loadUnifiedInterstitialAD( //android广告id androidId: AdsConfig.androidInterstitialRewardVideoId, //ios广告id iosId: AdsConfig.iosRewardVideoId, //下载二次确认弹窗 默认false downloadConfirm: false, //开启竞价 isBidding: false, isFullScreen: false, ); } /// 当前版本 Future version() async { String result = await FlutterUnionAd.getSDKVersion(); debugPrint("广告SDK 版本 $result"); setState(() { adVersion = result; }); } } /// 展示开屏广告 Future showSplashAd(context) async { Navigator.push( context, MaterialPageRoute( builder: (_) { return SplashPage( isBidding: false, androidId: AdsConfig.androidSplashId, iosId: AdsConfig.iosSplashId, ); }, ), ); } /// 展示激励视频广告 Future showRewardVideoAd() async { await FlutterUnionAd.loadRewardVideoAd( //android广告id androidId: AdsConfig.androidRewardVideoId, //ios广告id iosId: AdsConfig.iosRewardVideoId, //用户id userID: "123", //奖励 rewardName: "100金币", //奖励数 rewardAmount: 100, //扩展参数 服务器回调使用 customData: "", //下载二次确认弹窗 默认false downloadConfirm: false, //开启竞价 isBidding: false, ); }