Flutter百度广告集成插件baiduad的使用
Flutter 百度广告集成插件 baiduad 的使用
简介
baiduad
是一款集成了百度广告 Android 和 iOS SDK 的 Flutter 插件,可通过 GTAds 实现多个广告平台接入、统一管理。
官方文档
版本更新
查看 更新日志
本地开发环境
[✓] Flutter (Channel stable, 3.24.5, on macOS 14.6.1 23G93 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 16.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.2)
[✓] VS Code (version 1.95.3)
[✓] Connected device (4 available)
[✓] Network resources
集成步骤
1、pubspec.yaml
在 pubspec.yaml
文件中添加插件依赖:
dependencies:
baiduad: ^latest
引入插件:
import 'package:baiduad/baiduad.dart';
使用
1、SDK 初始化
在 main.dart
文件中初始化 SDK:
void _initRegister() async {
// 隐私敏感权限 API & 限制个性化广告推荐
await Baiduad.privacy(
// android 读取设备 ID 的权限(建议授权) ios 是否新的设备标志能力
readDeviceID: false,
// 读取已安装应用列表权限(建议授权)
appList: false,
// 读取粗略地理位置权限
location: false,
// 读写外部存储权限
storage: false,
// 设置限制个性化广告推荐
personalAds: false,
// ios 新标志能力,该能力默认开启,如果有监管或隐私要求,在 app 内配置是否开启该能力。
bDPermission: false,
);
_isRegister = await Baiduad.register(
// 百青藤广告 Android appid 必填
androidAppId: "b423d90d",
// 百青藤广告 ios appid 必填
iosAppId: "a6b7fed6",
// 是否打印日志 发布时改为 false
debug: true,
);
_sdkVersion = await Baiduad.getSDKVersion();
setState(() {});
}
2、获取 SDK 版本
await Baiduad.getSDKVersion();
3、隐私权限
await Baiduad.privacy(
readDeviceID: false,
appList: false,
location: false,
storage: false,
personalAds: false,
bDPermission: false,
);
4、开屏广告
BaiduSplashAdView(
// android 广告位 id
androidId: "7792007",
// ios 广告位 id
iosId: "7792007",
// 超时时间
timeout: 4000,
// 宽
width: MediaQuery.of(context).size.width,
// 高
height: MediaQuery.of(context).size.height,
// 广告回调
callBack: BaiduAdSplashCallBack(
onShow: () {
print("开屏广告显示了");
},
onClick: () {
print("开屏广告点击了");
},
onFail: (message) {
print("开屏广告失败了 $message");
Navigator.pop(context);
},
onClose: () {
print("开屏广告关闭了");
Navigator.pop(context);
},
),
),
5、Banner 广告
BaiduBannerAdView(
// android 广告位 id
androidId: "7792006",
// ios 广告位 id
iosId: "7800783",
// 广告宽 推荐您将 Banner 的宽高比固定为 20:3 以获得最佳的广告展示效果
width: 400,
// 广告高 加载完成后会自动修改为 sdk 返回广告高
height: 60,
// 是否自动切换
autoplay: true,
// 广告回调
callBack: BaiduAdBannerCallBack(
onShow: () {
print("Banner 横幅广告显示了");
},
onClick: () {
print("Banner 横幅广告点击了");
},
onFail: (message) {
print("Banner 横幅广告失败了 $message");
},
onClose: () {
print("Banner 横幅广告关闭了");
},
),
),
6、信息流广告 (优选模版)
BaiduNativeAdView(
// android 广告位 id
androidId: "8352393",
// ios 广告位 id
iosId: "8352393",
// 广告宽 推荐您将 Banner 的宽高比固定为 20:3 以获得最佳的广告展示效果
width: 400,
// 广告高 加载完成后会自动修改为 sdk 返回广告高
height: 200,
// 广告回调
callBack: BaiduAdNativeCallBack(
onShow: () {
print("信息流广告显示了");
},
onClick: () {
print("信息流广告点击了");
},
onFail: (message) {
print("信息流广告失败了 $message");
},
onClose: () {
print("信息流广告关闭了");
},
),
),
7、激励视频广告
预加载激励视频广告
await Baiduad.loadRewardAd(
// android 广告 id
androidId: "7792010",
// ios 广告 id
iosId: "7800949",
// 支持动态设置 APPSID,该信息可从移动联盟获得
appSid: "",
// 用户 id
userId: "123",
// 奖励
rewardName: "100 金币",
// 奖励数
rewardAmount: 100,
// 扩展参数 服务器验证使用
customData: "",
// 是否使用 SurfaceView
useSurfaceView: false,
// 设置点击跳过时是否展示提示弹框
isShowDialog: true,
// 设置是否展示奖励领取倒计时提示
useRewardCountdown: true,
);
显示激励视频广告
await Baiduad.showRewardVideoAd();
监听激励视频结果
BaiduAdStream.initAdStream(
// 激励广告结果监听
baiduAdRewardCallBack: BaiduAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClose: () {
print("激励广告关闭");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClick: () {
print("激励广告点击");
},
onSkip: () {
print("激励广告跳过");
},
onReady: () {
print("激励广告预加载准备就绪");
// 展示激励广告
await Baiduad.showRewardVideoAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (verify, rewardName, rewardAmount) {
print("激励广告奖励 $verify $rewardName $rewardAmount");
},
),
)
7、插屏广告(智选模版)
预加载插屏广告
await Baiduad.loadInterstitialAd(
// android 广告位 id
androidId: "8351686",
// ios 广告位 id
iosId: "8351686",
);
显示插屏广告
await Baiduad.showInterstitialAd();
监听插屏广告
BaiduAdStream.initAdStream(
baiduAdInteractionCallBack: BaiduAdInteractionCallBack(
onClose: () {
print("插屏广告关闭了");
},
onFail: (message) {
print("插屏广告出错了 $message");
},
onClick: () {
print("插屏广告点击了");
},
onShow: () {
print("插屏广告显示了");
},
onReady: () async {
print("插屏广告准备就绪");
// 展示广告
await Baiduad.showInterstitialAd();
},
onUnReady: () {
print("插屏广告未准备就绪");
},
)
);
示例代码
以下是完整的示例代码,展示了如何在 Flutter 应用中集成百度广告插件 baiduad
。
import 'dart:async';
import 'dart:io';
import 'package:baiduad/baiduad.dart';
import 'package:baiduad_example/native_page.dart';
import 'package:baiduad_example/splash_page.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool? _isRegister;
String _sdkVersion = "";
StreamSubscription? _adStream;
[@override](/user/override)
void dispose() {
_adStream?.cancel();
super.dispose();
}
[@override](/user/override)
void initState() {
super.initState();
_initRegister();
_adStream = BaiduAdStream.initAdStream(
// 激励广告结果监听
baiduAdRewardCallBack: BaiduAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClose: () {
print("激励广告关闭");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClick: () {
print("激励广告点击");
},
onSkip: () {
print("激励广告跳过");
},
onReady: () {
print("激励广告预加载准备就绪");
// 展示激励广告
Baiduad.showRewardVideoAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (verify, rewardName, rewardAmount) {
print("激励广告奖励 $verify $rewardName $rewardAmount");
},
),
baiduAdInteractionCallBack: BaiduAdInteractionCallBack(
onClose: () {
print("插屏广告关闭了");
},
onFail: (message) {
print("插屏广告出错了 $message");
},
onClick: () {
print("插屏广告点击了");
},
onShow: () {
print("插屏广告显示了");
},
onReady: () async {
print("插屏广告准备就绪");
// 展示广告
await Baiduad.showInterstitialAd();
},
onUnReady: () {
print("插屏广告未准备就绪");
},
),
);
}
// 注册
void _initRegister() async {
// 隐私敏感权限 API & 限制个性化广告推荐
await Baiduad.privacy(
readDeviceID: false,
appList: false,
location: false,
storage: false,
personalAds: false,
bDPermission: false,
);
_isRegister = await Baiduad.register(
androidAppId: "b423d90d",
iosAppId: "a6b7fed6",
debug: true,
);
_sdkVersion = await Baiduad.getSDKVersion();
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('百度广告插件'),
),
body: SingleChildScrollView(
child: Center(
child: Column(
children: [
Text('百青藤 SDK 初始化: $_isRegister\n'),
Text('百青藤 SDK 版本: $_sdkVersion\n'),
// 激励广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('激励广告'),
onPressed: () async {
await Baiduad.loadRewardAd(
androidId: "7792010",
iosId: "7800949",
appSid: "",
userId: "123",
rewardName: "100 金币",
rewardAmount: 100,
customData: "",
useSurfaceView: false,
isShowDialog: true,
useRewardCountdown: true,
);
},
),
// 插屏广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('插屏广告(智选模版)'),
onPressed: () async {
await Baiduad.loadInterstitialAd(
androidId: "8351686",
iosId: "7803486",
);
},
),
// 横幅广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('信息流广告(优选模版)'),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return const NativePage();
},
),
);
},
),
// 开屏广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('开屏广告'),
onPressed: () async {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) {
return const SplashPage();
},
),
);
},
),
],
),
),
),
),
);
}
}
更多关于Flutter百度广告集成插件baiduad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter百度广告集成插件baiduad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用百度广告插件(baiduad
)的代码示例。请注意,实际使用时,你需要确保已经获取了百度广告的开发者账号和相关配置信息。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加baiduad
插件的依赖:
dependencies:
flutter:
sdk: flutter
baiduad: ^最新版本号 # 请替换为实际可用的最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android和iOS
Android
在android/app/src/main/AndroidManifest.xml
中添加必要的权限和配置,这通常包括网络权限和百度广告SDK的配置。具体配置请参考百度广告SDK的官方文档。
iOS
在ios/Runner/Info.plist
中添加必要的配置,比如广告标识符的使用权限等。同样,具体配置请参考百度广告SDK的官方iOS集成文档。
3. 初始化百度广告SDK
在你的Flutter项目的入口文件(通常是main.dart
)中初始化百度广告SDK。这里假设你需要集成的是Banner广告。
import 'package:flutter/material.dart';
import 'package:baiduad/baiduad.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
// 初始化Baidu Ad SDK(这里假设你已经有了appId和slotId)
String appId = '你的百度广告AppId';
String slotId = '你的百度广告SlotId';
_bannerAd = BannerAd(
adUnitId: slotId,
size: AdSize.banner,
listener: BannerAdListener(
onAdLoaded: () {
print('Banner Ad loaded.');
},
onAdFailedToLoad: (AdError error) {
print('Banner Ad failed to load: ${error.message}');
},
onAdOpened: () {
print('Banner Ad opened.');
},
onAdClosed: () {
print('Banner Ad closed.');
},
onAdLeftApplication: () {
print('User left the app from the ad.');
},
),
request: AdRequest(
keywords: <String>['关键词1', '关键词2'], // 可选
contentUrl: Uri.parse('https://www.example.com'), // 可选
gender: MobileAdGender.male, // 可选
userBirthday: DateTime(1990), // 可选
location: Location(
latitude: 37.7749,
longitude: -122.4194,
), // 可选
extras: <String, dynamic>{
'foo': 'bar',
}, // 可选
)..load();
// 将广告添加到widget树中
_bannerAd?.show(
anchorType: AnchorType.bottom,
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Baidu Ad Integration'),
),
body: Center(
child: Text('Check the bottom for the banner ad.'),
),
),
);
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
注意事项
- 权限和网络配置:确保你的应用已经配置了必要的网络权限,并且能够访问百度广告的服务器。
- 广告位ID:在代码中替换
你的百度广告AppId
和你的百度广告SlotId
为你的实际广告位ID。 - 测试广告:在开发阶段,建议使用百度广告提供的测试广告位ID进行测试,以避免产生不必要的广告费用。
- 隐私政策:在你的应用中添加隐私政策链接,并确保用户了解广告的使用情况。
这个示例展示了如何在Flutter应用中集成并使用百度广告的Banner广告。如果你需要集成其他类型的广告(如插屏广告、激励视频广告等),请参考百度广告SDK的官方文档进行相应的配置和代码实现。