244 lines
7.6 KiB
Dart
244 lines
7.6 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/material.dart';
|
||
import 'package:flutter/services.dart';
|
||
import 'package:union_ad_ssgf/event/ad_event_handler.dart';
|
||
import 'package:union_ad_ssgf_example/ads_config.dart';
|
||
import 'package:union_ad_ssgf/union_ad_ssgf.dart';
|
||
|
||
// 结果信息
|
||
String _result = '';
|
||
|
||
class HomePage extends StatefulWidget {
|
||
@override
|
||
_HomePageState createState() => _HomePageState();
|
||
}
|
||
|
||
class _HomePageState extends State<HomePage> {
|
||
String _adEvent = '';
|
||
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
setAdEvent();
|
||
}
|
||
|
||
@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: [
|
||
const SizedBox(height: 10),
|
||
Text('Result: $_result'),
|
||
const SizedBox(height: 10),
|
||
Text('onAdEvent: $_adEvent'),
|
||
const SizedBox(height: 20),
|
||
Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
ElevatedButton(
|
||
child: const Text('初始化'),
|
||
onPressed: () {},
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('请求跟踪授权'),
|
||
onPressed: () {
|
||
requestIDFA();
|
||
},
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('个性化广告'),
|
||
onPressed: () {
|
||
setPersonalizedAd(1);
|
||
},
|
||
),
|
||
],
|
||
),
|
||
Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
ElevatedButton(
|
||
child: const Text('开屏(Logo2)'),
|
||
onPressed: () {},
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('开屏(全屏)'),
|
||
onPressed: () {
|
||
showSplashAd();
|
||
setState(() {});
|
||
},
|
||
),
|
||
],
|
||
),
|
||
Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
ElevatedButton(
|
||
child: const Text('插屏广告'),
|
||
onPressed: () {
|
||
showInterstitialAd(AdsConfig.interstitialId);
|
||
},
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('插全屏广告'),
|
||
onPressed: () {
|
||
showInterstitialAd(
|
||
AdsConfig.interstitialFullScreenVideoId,
|
||
showFullScreenVideo: true,
|
||
);
|
||
},
|
||
),
|
||
],
|
||
),
|
||
Row(
|
||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||
children: [
|
||
ElevatedButton(
|
||
child: const Text('插屏激励'),
|
||
onPressed: () {
|
||
showInterstitialAd(
|
||
AdsConfig.interstitialRewardVideoId,
|
||
showFullScreenVideo: true,
|
||
showRewardVideo: true,
|
||
);
|
||
},
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('激励视频'),
|
||
onPressed: () {
|
||
showRewardVideoAd();
|
||
},
|
||
),
|
||
],
|
||
),
|
||
const SizedBox(height: 20),
|
||
ElevatedButton(
|
||
child: const Text('信息流'),
|
||
onPressed: () {
|
||
// Navigator.push(
|
||
// context,
|
||
// MaterialPageRoute(
|
||
// builder: (context) => FeedPage(),));
|
||
},
|
||
),
|
||
const SizedBox(height: 20),
|
||
const Center(child: Text('👇🏻 Banner 广告 👇🏻')),
|
||
const SizedBox(height: 10),
|
||
// AdBannerWidget(
|
||
// posId: AdsConfig.bannerId,
|
||
// width: 300,
|
||
// height: 80,
|
||
// interval: 0,
|
||
// show: true,
|
||
// ),
|
||
const SizedBox(height: 10),
|
||
],
|
||
),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
|
||
/// 设置广告监听
|
||
Future<void> setAdEvent() async {
|
||
setState(() {
|
||
_adEvent = '设置成功';
|
||
});
|
||
UnionAdSsgf.onEventListener((event) {
|
||
_adEvent = 'adId:${event.adId} action:${event.action}';
|
||
if (event is AdErrorEvent) {
|
||
// 错误事件
|
||
_adEvent += ' errCode:${event.errCode} errMsg:${event.errMsg}';
|
||
} else if (event is AdRewardEvent) {
|
||
// 激励事件
|
||
_adEvent +=
|
||
' transId:${event.transId} customData:${event.customData} userId:${event.userId}';
|
||
}
|
||
print('onEventListener:$_adEvent');
|
||
setState(() {});
|
||
});
|
||
}
|
||
|
||
/// 请求应用跟踪透明度授权
|
||
Future<void> requestIDFA() async {
|
||
bool result = await UnionAdSsgf.requestIDFA;
|
||
_adEvent = '请求广告标识符:$result';
|
||
setState(() {});
|
||
}
|
||
|
||
/// 设置个性化广告
|
||
/// [state] 0:不限制 1:限制
|
||
Future<void> setPersonalizedAd(int state) async {
|
||
bool result = await UnionAdSsgf.setPersonalizedState(state);
|
||
_adEvent = '设置个性化广告:$result';
|
||
setState(() {});
|
||
}
|
||
|
||
/// 展示插屏广告
|
||
Future<void> showInterstitialAd(
|
||
String posId, {
|
||
bool showFullScreenVideo = false,
|
||
bool showRewardVideo = false,
|
||
}) async {
|
||
// try {
|
||
// bool result = await UnionAdSsgf.showInterstitialAd(
|
||
// posId,
|
||
// showPopup: false,
|
||
// showFullScreenVideo: showFullScreenVideo,
|
||
// showRewardVideo: showRewardVideo,
|
||
// autoPlayMuted: false,
|
||
// autoPlayOnWifi: false,
|
||
// userId: 'userId',
|
||
// customData: 'showInterstitialAd customData',
|
||
// );
|
||
// _result = "展示插屏广告${result ? '成功' : '失败'}";
|
||
// } on PlatformException catch (e) {
|
||
// _result = "展示插屏广告失败 code:${e.code} msg:${e.message} details:${e.details}";
|
||
// }
|
||
setState(() {});
|
||
}
|
||
|
||
/// 展示激励视频广告
|
||
Future<void> showRewardVideoAd() async {
|
||
try {
|
||
bool result = await UnionAdSsgf.showRewardVideoAd(
|
||
AdsConfig.rewardVideoId,
|
||
playMuted: false,
|
||
customData: 'showRewardVideoAd customData',
|
||
userId: 'userId',
|
||
);
|
||
_result = "展示激励视频广告${result ? '成功' : '失败'}";
|
||
} on PlatformException catch (e) {
|
||
_result =
|
||
"展示激励视频广告失败 code:${e.code} msg:${e.message} details:${e.details}";
|
||
}
|
||
setState(() {});
|
||
}
|
||
}
|
||
|
||
/// 展示开屏广告
|
||
/// [logo] 展示如果传递则展示logo,不传递不展示
|
||
Future<void> showSplashAd([String? logo]) async {
|
||
try {
|
||
bool result = await UnionAdSsgf.showSplashAd(
|
||
AdsConfig.splashId,
|
||
logo: logo,
|
||
fetchDelay: 3,
|
||
);
|
||
_result = "展示开屏广告${result ? '成功' : '失败'}";
|
||
} on PlatformException catch (e) {
|
||
_result = "展示开屏广告失败 code:${e.code} msg:${e.message} details:${e.details}";
|
||
}
|
||
}
|