Flutter广告集成插件dktech_ads的使用
Flutter广告集成插件dktech_ads的使用
在本教程中,我们将详细介绍如何在Flutter应用中使用dktech_ads
插件来集成广告。该插件支持多种广告类型,包括Banner广告、原生广告、插屏广告(Interstitial)以及激励视频广告(Rewarded Interstitial)。我们将通过示例代码来演示每种广告类型的加载与展示。
初始化广告
首先,我们需要初始化广告服务。这一步骤通常在应用启动时完成。
AdmobUtils.initAdmob(isDebug: true, isShowAds: true);
isDebug
: 设置为true
表示使用测试广告,设置为false
表示使用真实广告。isShowAds
: 控制是否显示广告。
Banner广告
Banner广告通常固定在屏幕底部或顶部。
1. 创建静态变量
static BannerHolder bannerHolder = BannerHolder(idAndroid: "your_admob_banner_id_android", idIOS: "your_admob_banner_id_ios");
2. 加载Banner广告
AdsManager.loadBanner(context, AdsManager.bannerHolder);
3. 展示Banner广告
AdmobUtils.bannerView(AdsManager.bannerHolder),
原生广告(Load后展示)
原生广告允许你自定义广告的外观。
1. 创建静态变量
static NativeHolder nativeHolder = NativeHolder(idAndroid: "your_admob_native_id_android", idIOS: "your_admob_native_id_ios");
2. 加载原生广告
AdsManager.loadNativeMediumWithLayout(context, AdsManager.nativeHolder);
3. 展示原生广告
AdmobUtils.bannerView(AdsManager.bannerHolder),
注意:在需要展示原生广告的页面中调用load
方法以确保广告已加载完毕。
插屏广告(Interstitial)
插屏广告通常在用户执行特定操作后展示。
1. 创建静态变量
static InterHolder interHolder = InterHolder(idAndroid: "your_admob_inter_id_android", idIOS: "your_admob_inter_id_ios");
2. 加载并展示插屏广告
AdmobUtils.loadAndShowInter(interHolder, onAdClosed: () {
// 广告关闭后的操作
}, onAdFail: () {
// 广告加载失败后的操作
}, enableLoadingDialog: true);
onAdClosed
: 当广告关闭时触发。onAdFail
: 当广告加载失败时触发。enableLoadingDialog
: 是否启用加载对话框。
激励视频广告(Rewarded Interstitial)
激励视频广告通常用于奖励用户观看广告后获得一些奖励。
1. 创建静态变量
static RewardHolder rewardHolder = RewardHolder(idAndroid: "your_admob_reward_id_android", idIOS: "your_admob_reward_id_ios");
2. 加载并展示激励视频广告
AdmobUtils.loadAndShowRewardedInterstitial(rewardHolder,
onEarned: () {
// 用户获得奖励后的操作
}, onAdClosed: () {
// 广告关闭后的操作
}, onAdFail: () {
// 广告加载失败后的操作
}, enableLoadingDialog: true);
onEarned
: 用户获得奖励后的操作。onAdClosed
: 广告关闭后的操作。onAdFail
: 广告加载失败后的操作。enableLoadingDialog
: 是否启用加载对话框。
注意事项
- 原生广告支持单独定制每个平台(目前仅限Android)。
- Android平台的原生广告代码位于
MainActivity
文件中。 - 布局文件位于
res/layout
目录下。 - 原生广告的背景文件位于
res/drawable
目录下。
完整示例代码
import 'package:dktech_ads/ads_manager.dart';
import 'package:dktech_ads/ads_utils/admob_utils.dart';
import 'package:dktech_ads/screen2.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
Future<void> main() async {
AdmobUtils.initAdmob(isDebug: true, isShowAds: true);
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
builder: EasyLoading.init(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
void initState() {
super.initState();
AdsManager.loadNativeMediumWithLayout(context, AdsManager.nativeHolder);
AdsManager.loadBanner(context, AdsManager.bannerHolder);
}
[@override](/user/override)
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Column(
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
AdmobUtils.bannerView(AdsManager.bannerHolder),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
AdsManager.loadAndShowInter(context, AdsManager.interHolder, () {
Navigator.push(context,
CupertinoPageRoute(builder: (context) => const Screen2()));
});
},
tooltip: 'Increment',
child: const Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
),
);
}
}
更多关于Flutter广告集成插件dktech_ads的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件dktech_ads的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成并使用dktech_ads
插件的代码示例。这个插件通常用于集成多种广告网络,但具体实现可能会根据广告网络的不同而有所变化。以下是一个基本的集成示例:
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加dktech_ads
依赖:
dependencies:
flutter:
sdk: flutter
dktech_ads: ^最新版本号 # 请替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的Flutter应用的入口文件(通常是main.dart
)中,初始化dktech_ads
插件。这里假设你需要集成的是Banner广告:
import 'package:flutter/material.dart';
import 'package:dktech_ads/dktech_ads.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化广告插件,这里以Banner广告为例
DktechAds.initialize(
bannerAdUnitId: '你的Banner广告单元ID', // 替换为你的实际广告单元ID
interstitialAdUnitId: '你的插屏广告单元ID', // 可选,如果需要使用插屏广告
rewardedAdUnitId: '你的激励视频广告单元ID', // 可选,如果需要使用激励视频广告
// 其他初始化参数,根据文档配置
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
3. 显示Banner广告
在你的主屏幕(HomeScreen
)中显示Banner广告:
import 'package:flutter/material.dart';
import 'package:dktech_ads/dktech_ads.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
// 加载Banner广告
_loadBannerAd();
}
void _loadBannerAd() {
DktechAds.loadBannerAd().then((bannerAd) {
setState(() {
_bannerAd = bannerAd;
});
}).catchError((error) {
print('Failed to load banner ad: $error');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter 广告集成示例'),
),
body: Column(
children: <Widget>[
Expanded(
child: _bannerAd != null
? AdWidget(ad: _bannerAd!)
: Center(child: CircularProgressIndicator()),
),
// 其他UI组件
],
),
);
}
@override
void dispose() {
// 释放广告资源
_bannerAd?.dispose();
super.dispose();
}
}
4. 显示插屏和激励视频广告(可选)
如果你还需要显示插屏或激励视频广告,可以在适当的地方调用相关方法。例如,在按钮点击事件中:
import 'package:flutter/material.dart';
// ...(省略其他代码)
class _HomeScreenState extends State<HomeScreen> {
// ...(省略其他代码)
void _showInterstitialAd() {
DktechAds.showInterstitialAd().catchError((error) {
print('Failed to show interstitial ad: $error');
});
}
void _showRewardedAd() {
DktechAds.showRewardedAd().then((result) {
if (result == RewardedAdResult.completed) {
print('User completed the rewarded ad.');
// 奖励用户
} else if (result == RewardedAdResult.skipped) {
print('User skipped the rewarded ad.');
} else {
print('Failed to show rewarded ad.');
}
}).catchError((error) {
print('Failed to show rewarded ad: $error');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter 广告集成示例'),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// Banner广告(省略)
SizedBox(height: 20),
ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('显示插屏广告'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _showRewardedAd,
child: Text('显示激励视频广告'),
),
],
),
);
}
// ...(省略其他代码)
}
注意事项
- 确保你已经在相应的广告平台(如AdMob、Facebook Audience Network等)上创建了广告单元,并获取了广告单元ID。
- 根据广告平台的政策,你可能需要在应用的
AndroidManifest.xml
和Info.plist
文件中添加必要的权限和配置。 - 测试广告通常与实际广告的行为略有不同,确保在发布前使用真实广告单元进行测试。
这个示例展示了如何在Flutter应用中集成并使用dktech_ads
插件来显示Banner、插屏和激励视频广告。根据你的具体需求,你可能需要调整代码或添加更多的错误处理逻辑。