Flutter广告集成插件flutter_universalad的使用
Flutter广告集成插件flutter_universalad的使用
字节跳动穿山甲广告、腾讯优量汇(广点通)聚合广告插件 Flutter版本
📢 推荐使用新版聚合插件
推荐使用新版聚合插件 GTAds,支持自定义广告插入
简介
flutter_universalad
是一款聚合字节跳动穿山甲 flutter_unionad、腾讯优量汇(广点通) flutter_tencentad 的聚合广告插件,方便直接调用多个厂商广告。体验demo
文档
推荐参考以下插件的文档进行插件的集成。
开发环境
[✓] Flutter (Channel stable, 3.16.6, on macOS 14.2.1 23C71 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] Android Studio (version 2023.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2023.3.2)
[✓] VS Code (version 1.85.2)
[✓] Connected device (4 available)
[✓] Network resources
集成步骤
1、pubspec.yaml
在 pubspec.yaml
文件中添加依赖:
flutter_universalad: ^latest
2、引入
在 Dart 文件中引入插件:
import 'package:flutter_universalad/flutter_universalad.dart';
使用
1、SDK初始化
初始化 SDK 并设置回调函数:
await FlutterUniversalad.register(
pAndroidId: "5098580", // 穿山甲android id
pIosId: "5098580", // 穿山甲ios id
tAndroidId: "1200009850", // 优量汇android id
tIosId: "1200082163", // 优量汇ios id
appName: "Flutter_universalad", // app名字
debug: true, // 是否显示日志
callBack: RegisterCallBack(
pangolinInit: (result) {
setState(() {
_registerResult = "$_registerResult 穿山甲初始化 $result";
});
},
tencentInit: (result) {
setState(() {
_registerResult = "$_registerResult 优量汇初始化 $result";
_getVersion();
});
},
),
);
2、获取SDK版本
获取 SDK 版本并更新状态:
VersionEntity versionEntity = await FlutterUniversalad.getSDKVersion();
_sdkVersion = "穿山甲SDK ${versionEntity.pangolinVersion} 优量汇SDK ${versionEntity.tencentVersion}";
setState(() {});
3、激励广告
预加载激励广告并设置监听器:
await FlutterUniversalad.loadRewardVideoAd(
pAndroidId: "945418088", // 穿山甲广告android id
pIosId: "945418088", // 穿山甲广告ios id
tAndroidId: "5042816813706194", // 优量汇广告android id
tIosId: "8062535056034159", // 优量汇广告ios id
rewardName: "金币", // 奖励名称
rewardAmount: 10, // 奖励数量
userID: "123", // 用户id
loadType: UniversalLoadType.INTURN, // 交替加载
probability: 0.5, // 穿山甲出现的几率
customData: "", // 扩展参数,开启服务器验证时上报
);
// 激励广告监听
FlutterUniversalAdStreamSubscription? _subscription;
_subscription = FlutterUniversalAdStream.initAdStream(
uRewardCallBack: URewardCallBack(
onShow: (sdkType) {
print("$sdkType 激励广告开始显示");
},
onFail: (sdkType, code, message) {
print("$sdkType 激励广告失败 $code $message");
},
onClick: (sdkType) {
print("$sdkType 激励广告点击");
},
onClose: (sdkType) {
print("$sdkType 激励广告关闭");
},
onReady: (sdkType) {
print("$sdkType 激励广告预加载完成");
FlutterUniversalad.showRewardVideoAd();
},
onUnReady: (sdkType) {
print("$sdkType 激励广告未预加载");
},
onVerify: (sdkType, transId, verify, amount, name) {
print(
"$sdkType 激励广告观看成功 transId=$transId verify=$verify amount=$amount name=$name"
);
},
),
);
// 移除监听
@override
void dispose() {
super.dispose();
_subscription?.cancel();
}
展示激励广告:
FlutterUniversalad.showRewardVideoAd();
4、插屏广告
预加载插屏广告并设置监听器:
await FlutterUniversalad.loadInterstitialAd(
pAndroidId: "946201351", // 穿山甲广告android id
pIosId: "946201351", // 穿山甲广告ios id
tAndroidId: "9062813863614416", // 优量汇广告android id
tIosId: "1052938046031440", // 优量汇广告ios id
isFullScreen: false, // 是否全屏 仅优量汇起效
loadType: UniversalLoadType.INTURN, // 交替加载
probability: 0.5, // 穿山甲出现的几率
);
// 插屏广告监听
FlutterUniversalAdStreamSubscription? _subscription;
_subscription = FlutterUniversalAdStream.initAdStream(
uInteractionCallBack: UInteractionCallBack(
onShow: (sdkType) {
print("$sdkType 插屏广告开始显示");
},
onFail: (sdkType, code, message) {
print("$sdkType 插屏广告失败 $code $message");
},
onClick: (sdkType) {
print("$sdkType 插屏广告点击");
},
onClose: (sdkType) {
print("$sdkType 插屏广告关闭");
},
onReady: (sdkType) {
print("$sdkType 插屏广告预加载完成");
FlutterUniversalad.showInterstitialAd();
},
onUnReady: (sdkType) {
print("$sdkType 插屏广告未预加载");
},
),
);
// 移除监听
@override
void dispose() {
super.dispose();
_subscription?.cancel();
}
展示插屏广告:
FlutterUniversalad.showInterstitialAd();
5、开屏广告
展示开屏广告并设置监听器:
FlutterUniversalad.splashAdView(
pAndroidId: "887367774", // 穿山甲广告android id
pIosId: "887367774", // 穿山甲广告ios id
tAndroidId: "4052216802299999", // 优量汇广告android id
tIosId: "8012030096434021", // 优量汇广告ios id
loadType: UniversalLoadType.INTURN, // 广告加载模式
probability: 0.5, // 穿山甲出现的几率
callBack: USplashCallBack(
onShow: (sdkType) {
print("$sdkType 开屏广告显示");
},
onFail: (sdkType, code, message) {
print("$sdkType 开屏广告失败 $code $message");
Navigator.pop(context);
},
onClick: (sdkType) {
print("$sdkType 开屏广告点击");
},
onClose: (sdkType) {
print("$sdkType 开屏广告关闭");
Navigator.pop(context);
},
),
);
6、信息流广告
展示信息流广告并设置监听器:
FlutterUniversalad.nativeAdView(
pAndroidId: "945417699", // 穿山甲广告android id
pIosId: "945417699", // 穿山甲广告ios id
tAndroidId: "4072918853903023", // 优量汇广告android id
tIosId: "7082132016439065", // 优量汇广告ios id
width: 400.0,
height: 260.0,
loadType: UniversalLoadType.INTURN, // 广告加载模式
probability: 0.5, // 穿山甲出现的几率
callBack: UNativeCallBack(
onShow: (sdkType) {
print("$sdkType Native广告显示");
},
onFail: (sdkType, code, message) {
print("$sdkType Native广告失败 $code $message");
},
onClick: (sdkType) {
print("$sdkType Native广告点击");
},
onClose: (sdkType) {
print("$sdkType Native广告关闭");
},
),
)
7、Banner广告
展示Banner广告并设置监听器:
FlutterUniversalad.bannerAdView(
pAndroidId: "945410197", // 穿山甲广告android id
pIosId: "945410197", // 穿山甲广告ios id
tAndroidId: "8042711873318113", // 优量汇广告android id
tIosId: "6062430096832369", // 优量汇广告ios id
width: 300.0,
height: 100.0,
loadType: UniversalLoadType.INTURN, // 广告加载模式
probability: 0.5, // 穿山甲出现的几率
callBack: UBannerCallBack(
onShow: (sdkType) {
print("$sdkType Banner广告显示");
},
onFail: (sdkType, code, message) {
print("$sdkType Banner广告失败 $code $message");
},
onClick: (sdkType) {
print("$sdkType Banner广告点击");
},
onClose: (sdkType) {
print("$sdkType Banner广告关闭");
},
),
)
更多关于Flutter广告集成插件flutter_universalad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件flutter_universalad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中集成并使用flutter_universalad
插件的代码示例。这个插件用于集成和管理多种广告平台的广告。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加flutter_universalad
依赖:
dependencies:
flutter:
sdk: flutter
flutter_universal_ad: ^最新版本号 # 请替换为实际可用的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android平台
在你的android/app/src/main/AndroidManifest.xml
文件中,添加必要的权限和广告平台的配置。这通常包括网络权限和特定广告平台的元数据配置。具体配置需要参考flutter_universalad
的官方文档。
3. 配置iOS平台
对于iOS,你需要在ios/Runner/Info.plist
中添加广告标识符等配置。同样,具体配置需要参考flutter_universalad
的官方文档。
4. 初始化广告
在你的Dart代码中,初始化广告平台。这通常在应用的入口文件(如main.dart
)中进行。
import 'package:flutter/material.dart';
import 'package:flutter_universal_ad/flutter_universal_ad.dart';
void main() {
// 初始化广告平台
FlutterUniversalAd.init(
appId: '你的广告平台APP ID', // 替换为你的实际APP ID
isDebug: kDebugMode, // 是否开启调试模式
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Universal Ad Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 显示广告位示例
AdWidget(
placementId: '你的广告位ID', // 替换为你的实际广告位ID
adType: AdType.banner, // 广告类型,如banner、interstitial等
onError: (error) {
// 广告加载失败回调
print('广告加载失败: $error');
},
onLoad: () {
// 广告加载成功回调
print('广告加载成功');
},
onClick: () {
// 广告点击回调
print('广告被点击');
},
),
],
),
),
);
}
}
5. 处理广告事件
在上面的代码中,我们使用了AdWidget
来显示广告,并提供了onError
、onLoad
和onClick
回调来处理广告加载失败、加载成功和点击事件。
6. 运行应用
确保你已经按照上述步骤正确配置并初始化了广告插件,然后运行你的Flutter应用。你应该能够在应用中看到广告位,并能够处理广告事件。
注意事项
- 请确保你使用的广告平台ID和广告位ID是有效的,并且已经在广告平台后台进行了正确的配置。
- 遵循广告平台的政策和指导原则,确保合规性。
- 在实际应用中,可能需要更复杂的错误处理和用户交互逻辑。
这个示例代码提供了一个基本的框架,你可以根据需要进行扩展和修改。更多详细信息和高级用法,请参考flutter_universalad
的官方文档。