Flutter百度广告集成插件baiduad的使用

发布于 1周前 作者 h691938207 来自 Flutter

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

1 回复

更多关于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();
  }
}

注意事项

  1. 权限和网络配置:确保你的应用已经配置了必要的网络权限,并且能够访问百度广告的服务器。
  2. 广告位ID:在代码中替换你的百度广告AppId你的百度广告SlotId为你的实际广告位ID。
  3. 测试广告:在开发阶段,建议使用百度广告提供的测试广告位ID进行测试,以避免产生不必要的广告费用。
  4. 隐私政策:在你的应用中添加隐私政策链接,并确保用户了解广告的使用情况。

这个示例展示了如何在Flutter应用中集成并使用百度广告的Banner广告。如果你需要集成其他类型的广告(如插屏广告、激励视频广告等),请参考百度广告SDK的官方文档进行相应的配置和代码实现。

回到顶部