Flutter广告集成插件quakerbirdad的使用
Flutter广告集成插件quakerbirdad的使用
Flutter信天翁广告插件
官方文档
版本更新
本地开发环境
[✓] Flutter (Channel stable, 3.13.9, on macOS 14.1 23B74 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.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] Android Studio (version 2022.3)
[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.4)
[✓] VS Code (version 1.83.1)
[✓] Connected device (3 available)
[✓] Network resources
集成步骤
1. pubspec.yaml
quakerbirdad: ^0.0.8
// quakerbirdad:
// git:
// url: https://github.com/gstory0404/quakerbirdad.git
// ref: 0.0.7
引入
import 'package:quakerbirdad/quakerbirdad.dart';
2. Android
根据官方文件进行权限等配置。
3. IOS
根据官方文件进行权限等配置。
注意事项
- 广告view传入的宽高仅加载时起效,加载完成后动态修改成SDK返回广告大小
使用
SDK初始化
QuakerBirdAd.register(
//android app id
androidAppId: "881",
//ios app id
iosAppId: "881",
//是否显示日志,建议正式上线时,设置为false
debug: true,
//是否非WiFi下提示确认
download: QuakerBirdAdDownload.ALWAYS,
//应用渠道id (非必填,填写后可以按渠道查看广告数据)
channelId: "test",
//设置是否初始化时就申请权限
permission: true,
);
获取SDK版本
await QuakerBirdAd.getSDKVersion();
获取权限
目前仅iOS生效,用于ATT权限获取
QuakerBirdAd.requestPermission().then((value) => {
print("获取权限结果 $value")
});
开屏广告
QuakerBirdAdSplash(
androidId: "3561",
iosId: "3561",
width: window.physicalSize.width / window.devicePixelRatio,
height: window.physicalSize.height / window.devicePixelRatio,
callBack: QuakerBirdAdSplashCallBack(
onShow: () {
print("开屏广告显示");
},
onError: (msg) {
print("开屏广告失败 $msg");
},
onClick: () {
print("开屏广告点击");
},
onDismiss: () {
print("开屏广告关闭");
},
onStatus: (type, platform, status, msg) {
print("开屏广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
),
);
横幅广告
QuakerBirdAdBanner(
androidId: "1983",
iosId: "1983",
width: 500,
height: 50,
callBack: QuakerBirdAdBannerCallBack(
onShow: (){
print("横幅广告显示");
},
onError: (msg){
print("横幅广告失败 $msg");
},
onClick: (){
print("横幅广告点击");
},
onDismiss: (){
print("横幅广告关闭");
Navigator.pop(context);
},
onStatus: (type,platform,status,msg){
print("横幅广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
}
),
);
信息流广告
QuakerBirdAdNative(
androidId: "2351",
iosId: "2351",
width: 500,
height: 200,
callBack: QuakerBirdAdNativeCallBack(
onShow: (){
print("信息流广告显示");
},
onError: (msg){
print("信息流广告失败 $msg");
},
onClick: (){
print("信息流广告点击");
},
onDismiss: (){
print("信息流广告关闭");
Navigator.pop(context);
},
onStatus: (type,platform,status,msg){
print("信息流广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
}
),
),
模版广告
QuakerBirdAdExpress(
androidId: "8461",
iosId: "8461",
width: 500,
height: 300,
callBack: QuakerBirdAdExpressCallBack(
onShow: (){
print("模版广告显示");
},
onError: (msg){
print("模版广告失败 $msg");
},
onClick: (){
print("模版广告点击");
},
onDismiss: (){
print("模版广告关闭");
Navigator.pop(context);
},
onStatus: (type,platform,status,msg){
print("模版广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
}
),
),
模版视频广告
QuakerBirdAdExpressDraw(
androidId: "8517",
iosId: "8517",
width: 500,
height: 300,
callBack: QuakerBirdAdExpressDrawCallBack(
onShow: (){
print("模版视频广告显示");
},
onError: (msg){
print("模版视频广告失败 $msg");
},
onClick: (){
print("模版视频广告点击");
},
onDismiss: (){
print("模版视频广告关闭");
Navigator.pop(context);
},
onStatus: (type,platform,status,msg){
print("模版视频广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
}
),
),
插屏广告
请求广告
QuakerBirdAd.loadInteractionAd(androidId: "11087", iosId: "11087");
监听结果
FlutterUnionadStream.initAdStream(
rewardCallBack: QuakerBirdAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onError: (msg) {
print("激励广告失败 $msg");
},
onClick: () {
print("激励广告点击");
},
onDismiss: () {
print("激励广告关闭");
},
onStatus: (type, platform, status, msg) {
print("激励广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
onReward: (type) {
print("激励广告奖励 $type");
},
),
);
全屏广告
请求广告
QuakerBirdAd.loadFullScreenAd(androidId: "8811", iosId: "8811");
监听结果
FlutterUnionadStream.initAdStream(
fullScreenCallBack: QuakerBirdAdFullScreenCallBack(
onShow: () {
print("全屏广告显示");
},
onError: (msg) {
print("全屏广告失败 $msg");
},
onClick: () {
print("全屏广告点击");
},
onDismiss: () {
print("全屏广告关闭");
},
onStatus: (type, platform, status, msg) {
print("全屏广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
),
);
激励广告
请求广告
QuakerBirdAd.loadRewardVideoAd(androidId: "1028", iosId: "1028");
监听结果
FlutterUnionadStream.initAdStream(
rewardCallBack: QuakerBirdAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onError: (msg) {
print("激励广告失败 $msg");
},
onClick: () {
print("激励广告点击");
},
onDismiss: () {
print("激励广告关闭");
},
onStatus: (type, platform, status, msg) {
print("激励广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
onReward: (type) {
print("激励广告奖励 $type");
},
),
);
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:quakerbirdad/quakerbirdad.dart';
import 'package:quakerbirdad_example/banner_page.dart';
import 'package:quakerbirdad_example/express_page.dart';
import 'package:quakerbirdad_example/splash_page.dart';
import 'express_draw_page.dart';
import 'native_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: IndexPage(),
);
}
}
class IndexPage extends StatefulWidget {
const IndexPage({super.key});
[@override](/user/override)
_IndexPageState createState() => _IndexPageState();
}
class _IndexPageState extends State<IndexPage> {
String? _version = "";
StreamSubscription? _adViewStream;
[@override](/user/override)
void initState() {
super.initState();
_initRegister();
_adViewStream = FlutterUnionadStream.initAdStream(
interactionCallBack: QuakerBirdAdInteractionCallBack(
onShow: () {
print("插屏广告显示");
},
onError: (msg) {
print("插屏广告失败 $msg");
},
onClick: () {
print("插屏广告点击");
},
onDismiss: () {
print("插屏广告关闭");
},
onStatus: (type, platform, status, msg) {
print("插屏广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
),
fullScreenCallBack: QuakerBirdAdFullScreenCallBack(
onShow: () {
print("全屏广告显示");
},
onError: (msg) {
print("全屏广告失败 $msg");
},
onClick: () {
print("全屏广告点击");
},
onDismiss: () {
print("全屏广告关闭");
},
onStatus: (type, platform, status, msg) {
print("全屏广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
),
rewardCallBack: QuakerBirdAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onError: (msg) {
print("激励广告失败 $msg");
},
onClick: () {
print("激励广告点击");
},
onDismiss: () {
print("激励广告关闭");
},
onStatus: (type, platform, status, msg) {
print("激励广告状态 类型:$type 平台:$platform 状态:$status 错误消息 (失败时有效):$msg");
},
onReward: (type) {
print("激励广告奖励 $type");
},
),
);
}
[@override](/user/override)
void dispose() {
super.dispose();
FlutterUnionadStream.deleteAdStream(_adViewStream);
}
//注册
void _initRegister() async {
QuakerBirdAd.register(
//android app id
androidAppId: "881",
//ios app id
iosAppId: "1330788821410791458-7",
//是否显示日志,建议正式上线时,设置为false
debug: true,
//是否非WiFi下提示确认
download: QuakerBirdAdDownload.ALWAYS,
//应用渠道id (非必填,填写后可以按渠道查看广告数据)
channelId: "test",
//设置是否初始化时就申请权限
permission: true,
);
QuakerBirdAd.getSDKVersion().then((value) {
setState(() {
_version = value;
});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Flutter信天翁广告插件'),
),
body: SingleChildScrollView(
scrollDirection: Axis.vertical,
reverse: false,
physics: const BouncingScrollPhysics(),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
alignment: Alignment.center,
height: 50,
child: const Text("Flutter信天翁广告插件"),
),
Container(
alignment: Alignment.center,
height: 50,
child: Text("信天翁SDK版本号>>>>>> v$_version"),
),
button("获取权限", () {
QuakerBirdAd.requestPermission().then((value) => {
print("获取权限结果 $value")
});
}),
button("开屏广告", () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SplashPage(),
),
);
}),
button("插屏广告", () {
QuakerBirdAd.loadInteractionAd(
androidId: "11087", iosId: "1473895494450167827");
}),
button("全屏广告", () {
QuakerBirdAd.loadFullScreenAd(androidId: "8811", iosId: "1473895822729953353");
}),
button("横幅广告", () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const BannerPage(),
),
);
}),
button("信息流广告", () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const NativePage(),
),
);
}),
button("模版广告", () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ExpressPage(),
),
);
}),
button("模版视频广告", () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ExpressDrawPage(),
),
);
}),
button("激励广告", () {
QuakerBirdAd.loadRewardVideoAd(androidId: "1028", iosId: "1330851356566634576");
}),
],
),
),
);
}
button(String title, VoidCallback call) {
return MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: Text(title),
onPressed: call,
);
}
}
更多关于Flutter广告集成插件quakerbirdad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter广告集成插件quakerbirdad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quakerbirdad
是一个用于在 Flutter 应用中集成广告的插件。它支持多种广告格式,如横幅广告、插页广告、激励视频广告等。以下是如何在 Flutter 项目中使用 quakerbirdad
插件的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 quakerbirdad
插件的依赖:
dependencies:
flutter:
sdk: flutter
quakerbirdad: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化广告 SDK
在 main.dart
或应用的入口文件中初始化广告 SDK。通常这是在 main()
函数中完成的。
import 'package:flutter/material.dart';
import 'package:quakerbirdad/quakerbirdad.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化广告 SDK
await Quakerbirdad.init(
appId: 'YOUR_APP_ID', // 替换为你的应用ID
isDebug: true, // 调试模式
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
3. 显示横幅广告
在需要显示横幅广告的地方,使用 BannerAdWidget
。
import 'package:flutter/material.dart';
import 'package:quakerbirdad/quakerbirdad.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Column(
children: [
Expanded(
child: Center(
child: Text('Hello, world!'),
),
),
// 显示横幅广告
BannerAdWidget(
adUnitId: 'YOUR_BANNER_AD_UNIT_ID', // 替换为你的横幅广告单元ID
adSize: AdSize.banner,
),
],
),
);
}
}
4. 显示插页广告
插页广告通常在全屏显示,可以在应用的自然过渡点(如页面切换或完成某个操作)时显示。
import 'package:flutter/material.dart';
import 'package:quakerbirdad/quakerbirdad.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 加载插页广告
bool isLoaded = await Quakerbirdad.loadInterstitialAd(
adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID', // 替换为你的插页广告单元ID
);
if (isLoaded) {
// 显示插页广告
Quakerbirdad.showInterstitialAd();
}
},
child: Text('Show Interstitial Ad'),
),
),
);
}
}
5. 显示激励视频广告
激励视频广告通常用于奖励用户观看广告,比如在游戏中获得额外生命或金币。
import 'package:flutter/material.dart';
import 'package:quakerbirdad/quakerbirdad.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 显示激励视频广告
bool isRewarded = await Quakerbirdad.showRewardedVideoAd(
adUnitId: 'YOUR_REWARDED_AD_UNIT_ID', // 替换为你的激励视频广告单元ID
);
if (isRewarded) {
// 用户观看了完整的广告,给予奖励
print('User rewarded!');
}
},
child: Text('Show Rewarded Video Ad'),
),
),
);
}
}
6. 处理广告生命周期事件
你可以监听广告的生命周期事件,如广告加载成功、广告展示、广告点击、广告关闭等。
Quakerbirdad.setAdListener(
onAdLoaded: (adType) {
print('Ad loaded: $adType');
},
onAdFailedToLoad: (adType, errorCode, errorMessage) {
print('Ad failed to load: $adType, $errorCode, $errorMessage');
},
onAdShowed: (adType) {
print('Ad showed: $adType');
},
onAdClicked: (adType) {
print('Ad clicked: $adType');
},
onAdClosed: (adType) {
print('Ad closed: $adType');
},
);
7. 其他注意事项
- 测试广告单元ID:在开发阶段,建议使用测试广告单元ID,以避免产生无效的广告展示。
- 广告频率控制:根据应用场景合理控制广告的显示频率,避免影响用户体验。
- 广告合规性:确保广告的展示符合广告平台和应用商店的政策要求。
8. 发布应用
在发布应用之前,请确保将测试广告单元ID替换为正式的广告单元ID,并关闭调试模式。
await Quakerbirdad.init(
appId: 'YOUR_APP_ID',
isDebug: false, // 关闭调试模式
);