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

1 回复

更多关于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.xmlInfo.plist文件中添加必要的权限和配置。
  • 测试广告通常与实际广告的行为略有不同,确保在发布前使用真实广告单元进行测试。

这个示例展示了如何在Flutter应用中集成并使用dktech_ads插件来显示Banner、插屏和激励视频广告。根据你的具体需求,你可能需要调整代码或添加更多的错误处理逻辑。

回到顶部