Flutter广告集成插件flutter_universalad的使用

Flutter广告集成插件flutter_universalad的使用

字节跳动穿山甲广告、腾讯优量汇(广点通)聚合广告插件 Flutter版本

📢 推荐使用新版聚合插件

推荐使用新版聚合插件 GTAds,支持自定义广告插入

简介

flutter_universalad 是一款聚合字节跳动穿山甲 flutter_unionad、腾讯优量汇(广点通) flutter_tencentad 的聚合广告插件,方便直接调用多个厂商广告。体验demo

文档

推荐参考以下插件的文档进行插件的集成。

开发环境

[✓] Flutter (Channel stable, 3.16.6, on macOS 14.2.1 23C71 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.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] Android Studio (version 2023.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2023.3.2)
[✓] VS Code (version 1.85.2)
[✓] Connected device (4 available)
[✓] Network resources

集成步骤

1、pubspec.yaml

pubspec.yaml 文件中添加依赖:

flutter_universalad: ^latest

2、引入

在 Dart 文件中引入插件:

import 'package:flutter_universalad/flutter_universalad.dart';

使用

1、SDK初始化

初始化 SDK 并设置回调函数:

await FlutterUniversalad.register(
  pAndroidId: "5098580", // 穿山甲android id
  pIosId: "5098580", // 穿山甲ios id
  tAndroidId: "1200009850", // 优量汇android id
  tIosId: "1200082163", // 优量汇ios id
  appName: "Flutter_universalad", // app名字
  debug: true, // 是否显示日志
  callBack: RegisterCallBack(
    pangolinInit: (result) {
      setState(() {
        _registerResult = "$_registerResult 穿山甲初始化 $result";
      });
    },
    tencentInit: (result) {
      setState(() {
        _registerResult = "$_registerResult 优量汇初始化 $result";
        _getVersion();
      });
    },
  ),
);

2、获取SDK版本

获取 SDK 版本并更新状态:

VersionEntity versionEntity = await FlutterUniversalad.getSDKVersion();
_sdkVersion = "穿山甲SDK ${versionEntity.pangolinVersion}  优量汇SDK ${versionEntity.tencentVersion}";
setState(() {});

3、激励广告

预加载激励广告并设置监听器:

await FlutterUniversalad.loadRewardVideoAd(
  pAndroidId: "945418088", // 穿山甲广告android id
  pIosId: "945418088", // 穿山甲广告ios id
  tAndroidId: "5042816813706194", // 优量汇广告android id
  tIosId: "8062535056034159", // 优量汇广告ios id
  rewardName: "金币", // 奖励名称
  rewardAmount: 10, // 奖励数量
  userID: "123", // 用户id
  loadType: UniversalLoadType.INTURN, // 交替加载
  probability: 0.5, // 穿山甲出现的几率
  customData: "", // 扩展参数,开启服务器验证时上报
);

// 激励广告监听
FlutterUniversalAdStreamSubscription? _subscription;
_subscription = FlutterUniversalAdStream.initAdStream(
  uRewardCallBack: URewardCallBack(
    onShow: (sdkType) {
      print("$sdkType  激励广告开始显示");
    },
    onFail: (sdkType, code, message) {
      print("$sdkType  激励广告失败 $code $message");
    },
    onClick: (sdkType) {
      print("$sdkType  激励广告点击");
    },
    onClose: (sdkType) {
      print("$sdkType  激励广告关闭");
    },
    onReady: (sdkType) {
      print("$sdkType  激励广告预加载完成");
      FlutterUniversalad.showRewardVideoAd();
    },
    onUnReady: (sdkType) {
      print("$sdkType  激励广告未预加载");
    },
    onVerify: (sdkType, transId, verify, amount, name) {
      print(
        "$sdkType  激励广告观看成功 transId=$transId verify=$verify amount=$amount name=$name"
      );
    },
  ),
);

// 移除监听
@override
void dispose() {
  super.dispose();
  _subscription?.cancel();
}

展示激励广告:

FlutterUniversalad.showRewardVideoAd();

4、插屏广告

预加载插屏广告并设置监听器:

await FlutterUniversalad.loadInterstitialAd(
  pAndroidId: "946201351", // 穿山甲广告android id
  pIosId: "946201351", // 穿山甲广告ios id
  tAndroidId: "9062813863614416", // 优量汇广告android id
  tIosId: "1052938046031440", // 优量汇广告ios id
  isFullScreen: false, // 是否全屏 仅优量汇起效
  loadType: UniversalLoadType.INTURN, // 交替加载
  probability: 0.5, // 穿山甲出现的几率
);

// 插屏广告监听
FlutterUniversalAdStreamSubscription? _subscription;
_subscription = FlutterUniversalAdStream.initAdStream(
  uInteractionCallBack: UInteractionCallBack(
    onShow: (sdkType) {
      print("$sdkType  插屏广告开始显示");
    },
    onFail: (sdkType, code, message) {
      print("$sdkType  插屏广告失败 $code $message");
    },
    onClick: (sdkType) {
      print("$sdkType  插屏广告点击");
    },
    onClose: (sdkType) {
      print("$sdkType  插屏广告关闭");
    },
    onReady: (sdkType) {
      print("$sdkType  插屏广告预加载完成");
      FlutterUniversalad.showInterstitialAd();
    },
    onUnReady: (sdkType) {
      print("$sdkType  插屏广告未预加载");
    },
  ),
);

// 移除监听
@override
void dispose() {
  super.dispose();
  _subscription?.cancel();
}

展示插屏广告:

FlutterUniversalad.showInterstitialAd();

5、开屏广告

展示开屏广告并设置监听器:

FlutterUniversalad.splashAdView(
  pAndroidId: "887367774", // 穿山甲广告android id
  pIosId: "887367774", // 穿山甲广告ios id
  tAndroidId: "4052216802299999", // 优量汇广告android id
  tIosId: "8012030096434021", // 优量汇广告ios id
  loadType: UniversalLoadType.INTURN, // 广告加载模式
  probability: 0.5, // 穿山甲出现的几率
  callBack: USplashCallBack(
    onShow: (sdkType) {
      print("$sdkType  开屏广告显示");
    },
    onFail: (sdkType, code, message) {
      print("$sdkType  开屏广告失败  $code $message");
      Navigator.pop(context);
    },
    onClick: (sdkType) {
      print("$sdkType  开屏广告点击");
    },
    onClose: (sdkType) {
      print("$sdkType  开屏广告关闭");
      Navigator.pop(context);
    },
  ),
);

6、信息流广告

展示信息流广告并设置监听器:

FlutterUniversalad.nativeAdView(
  pAndroidId: "945417699", // 穿山甲广告android id
  pIosId: "945417699", // 穿山甲广告ios id
  tAndroidId: "4072918853903023", // 优量汇广告android id
  tIosId: "7082132016439065", // 优量汇广告ios id
  width: 400.0,
  height: 260.0,
  loadType: UniversalLoadType.INTURN, // 广告加载模式
  probability: 0.5, // 穿山甲出现的几率
  callBack: UNativeCallBack(
    onShow: (sdkType) {
      print("$sdkType  Native广告显示");
    },
    onFail: (sdkType, code, message) {
      print("$sdkType  Native广告失败  $code $message");
    },
    onClick: (sdkType) {
      print("$sdkType  Native广告点击");
    },
    onClose: (sdkType) {
      print("$sdkType  Native广告关闭");
    },
  ),
)

7、Banner广告

展示Banner广告并设置监听器:

FlutterUniversalad.bannerAdView(
  pAndroidId: "945410197", // 穿山甲广告android id
  pIosId: "945410197", // 穿山甲广告ios id
  tAndroidId: "8042711873318113", // 优量汇广告android id
  tIosId: "6062430096832369", // 优量汇广告ios id
  width: 300.0,
  height: 100.0,
  loadType: UniversalLoadType.INTURN, // 广告加载模式
  probability: 0.5, // 穿山甲出现的几率
  callBack: UBannerCallBack(
    onShow: (sdkType) {
      print("$sdkType  Banner广告显示");
    },
    onFail: (sdkType, code, message) {
      print("$sdkType  Banner广告失败  $code $message");
    },
    onClick: (sdkType) {
      print("$sdkType  Banner广告点击");
    },
    onClose: (sdkType) {
      print("$sdkType  Banner广告关闭");
    },
  ),
)

更多关于Flutter广告集成插件flutter_universalad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告集成插件flutter_universalad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中集成并使用flutter_universalad插件的代码示例。这个插件用于集成和管理多种广告平台的广告。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加flutter_universalad依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_universal_ad: ^最新版本号  # 请替换为实际可用的最新版本号

然后运行flutter pub get来安装依赖。

2. 配置Android平台

在你的android/app/src/main/AndroidManifest.xml文件中,添加必要的权限和广告平台的配置。这通常包括网络权限和特定广告平台的元数据配置。具体配置需要参考flutter_universalad的官方文档。

3. 配置iOS平台

对于iOS,你需要在ios/Runner/Info.plist中添加广告标识符等配置。同样,具体配置需要参考flutter_universalad的官方文档。

4. 初始化广告

在你的Dart代码中,初始化广告平台。这通常在应用的入口文件(如main.dart)中进行。

import 'package:flutter/material.dart';
import 'package:flutter_universal_ad/flutter_universal_ad.dart';

void main() {
  // 初始化广告平台
  FlutterUniversalAd.init(
    appId: '你的广告平台APP ID',  // 替换为你的实际APP ID
    isDebug: kDebugMode,  // 是否开启调试模式
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Universal Ad Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 显示广告位示例
            AdWidget(
              placementId: '你的广告位ID',  // 替换为你的实际广告位ID
              adType: AdType.banner,  // 广告类型,如banner、interstitial等
              onError: (error) {
                // 广告加载失败回调
                print('广告加载失败: $error');
              },
              onLoad: () {
                // 广告加载成功回调
                print('广告加载成功');
              },
              onClick: () {
                // 广告点击回调
                print('广告被点击');
              },
            ),
          ],
        ),
      ),
    );
  }
}

5. 处理广告事件

在上面的代码中,我们使用了AdWidget来显示广告,并提供了onErroronLoadonClick回调来处理广告加载失败、加载成功和点击事件。

6. 运行应用

确保你已经按照上述步骤正确配置并初始化了广告插件,然后运行你的Flutter应用。你应该能够在应用中看到广告位,并能够处理广告事件。

注意事项

  • 请确保你使用的广告平台ID和广告位ID是有效的,并且已经在广告平台后台进行了正确的配置。
  • 遵循广告平台的政策和指导原则,确保合规性。
  • 在实际应用中,可能需要更复杂的错误处理和用户交互逻辑。

这个示例代码提供了一个基本的框架,你可以根据需要进行扩展和修改。更多详细信息和高级用法,请参考flutter_universalad的官方文档。

回到顶部