Flutter广告集成插件gtads_ks的使用

Flutter广告集成插件gtads_ks的使用

GTAds快手广告支持插件

GTAds快手广告支持插件

喜欢数

评分

Flutter交流群 Flutter交流群2 Flutter插件反馈

相关插件

  • ksad:快手广告本体,内部已集成无需额外引入,配置相关查看插件说明。
  • GTAds:聚合广告插件基础库,必须引入。

使用

pubspec.yaml
dependencies:
  // 广告基础库 必须引入
  gtads: ^1.5.0
  // 快手广告支持
  gtads_ks: ^1.5.x
引入
import 'package:gtads_ks/gtads_ks.dart';

注意事项:

如果Android出现 NoClassDefFoundError 闪退错误:

java.lang.NoClassDefFoundError: Failed resolution of:Landroidx/localbroadcastmanager/content/LocalBroadcastManager

则在 app 下的 build.gradle 中引入库:

implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
使用

仅需通过以下方法插入广告至聚合插件,无需关注具体广告的调用:

// 参数依次为 别名、Android app Id、iOS app Id
GTAds.addProvider(GTAdsKSProvider(_alias, "613400004", "613400004"));

广告位使用参考:

广告位使用参考 GTAds

示例代码

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:gtads/gtads.dart';
import 'package:gtads_ks/gtads_ks.dart';
import 'package:gtads_ks_example/native_page.dart';
import 'package:gtads_ks_example/splash_page.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Index(),
    );
  }
}

class Index extends StatefulWidget {
  [@override](/user/override)
  _IndexState createState() => _IndexState();
}

class _IndexState extends State<Index> {
  List<Map<String, bool>> initAd = [];

  final String _alias = "ksad";

  [@override](/user/override)
  void initState() {
    super.initState();
    init();
  }

  Future<void> init() async {
    GTAds.addProvider(GTAdsKSProvider(_alias, "2296000003", "2296000003"));
    initAd = await GTAds.init(isDebug: true);
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('GTAds快手广告'),
        ),
        body: Center(
          child: SingleChildScrollView(
            child: Column(
              children: [
                Text("初始化结果$initAd"),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('激励广告'),
                  onPressed: () async {
                    var b = await GTAds.rewardAd(
                      codes: [
                        GTAdsCode(
                            alias: _alias,
                            probability: 5,
                            androidId: "22960000015",
                            iosId: "22960000015")
                      ],
                      // 奖励名称
                      rewardName: "100金币",
                      // 奖励数量
                      rewardAmount: 100,
                      // 用户id
                      userId: "user100",
                      // 扩展参数
                      customData: "123",
                      timeout: 6,
                      callBack: GTAdsCallBack(onShow: (code) {
                        print("激励广告显示 ${code.toJson()}");
                      }, onFail: (code, message) {
                        print("激励广告失败 ${code?.toJson()} $message");
                      }, onClick: (code) {
                        print("激励广告点击 ${code.toJson()}");
                      }, onClose: (code) {
                        print("激励广告关闭 ${code.toJson()}");
                      }, onVerify:
                          (code, verify, transId, rewardName, rewardAmount) {
                        print(
                            "激励广告奖励 ${code.toJson()} $verify $transId $rewardName $rewardAmount");
                      }, onExpand: (code, param) {
                        print("激励广告自定义参数 ${code.toJson()} $param");
                      }),
                    );
                    if (b) {
                      print("激励广告开始请求");
                    } else {
                      print("激励广告开始请求失败");
                    }
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('插屏广告'),
                  onPressed: () async {
                    var b = await GTAds.insertAd(
                        codes: [
                          GTAdsCode(
                              alias: _alias,
                              probability: 5,
                              androidId: "22960000019",
                              iosId: "22960000020")
                        ],
                        isFull: false,
                        timeout: 6,
                        callBack: GTAdsCallBack(
                          onShow: (code) {
                            print("插屏广告显示 ${code.toJson()}");
                          },
                          onFail: (code, message) {
                            print("插屏广告失败 ${code?.toJson()} $message");
                          },
                          onClick: (code) {
                            print("插屏广告点击 ${code.toJson()}");
                          },
                          onClose: (code) {
                            print("插屏广告关闭 ${code.toJson()}");
                          },
                        ));
                    if (b) {
                      print("插屏广告开始请求");
                    }
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('开屏广告'),
                  onPressed: () async {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => const SplashPage(),
                      ),
                    );
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('信息流广告'),
                  onPressed: () async {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) => const NativePage(),
                      ),
                    );
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


gtads_ks 是一个用于在 Flutter 应用中集成广告的插件。它支持多种广告类型,如开屏广告、横幅广告、插屏广告等。这个插件通常用于帮助开发者在应用中轻松地展示广告并实现盈利。

以下是如何在 Flutter 项目中使用 gtads_ks 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 gtads_ks 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  gtads_ks: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 以获取依赖。

2. 初始化插件

在使用插件的任何功能之前,你需要在应用的入口(通常是 main.dart)中初始化插件。你需要提供广告平台的 App ID。

import 'package:gtads_ks/gtads_ks.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 GTAds
  await GTAds.init(
    appId: 'your_app_id',  // 替换为你的广告平台的 App ID
  );
  
  runApp(MyApp());
}

3. 加载和展示广告

gtads_ks 支持多种广告类型。以下是如何加载和展示开屏广告、横幅广告和插屏广告的示例。

开屏广告

开屏广告通常在应用启动时展示。

import 'package:gtads_ks/gtads_ks.dart';

GTAdsSplashAd splashAd = GTAdsSplashAd(
  adUnitId: 'your_splash_ad_unit_id',  // 替换为你的开屏广告单元 ID
  callback: GTAdsSplashCallback(
    onAdLoad: () {
      print('开屏广告加载成功');
    },
    onAdShow: () {
      print('开屏广告展示');
    },
    onAdClick: () {
      print('开屏广告被点击');
    },
    onAdSkip: () {
      print('开屏广告被跳过');
    },
    onAdClose: () {
      print('开屏广告关闭');
    },
    onAdError: (error) {
      print('开屏广告加载失败: $error');
    },
  ),
);

splashAd.load();  // 加载开屏广告

横幅广告

横幅广告通常在页面的顶部或底部展示。

import 'package:gtads_ks/gtads_ks.dart';

GTAdsBannerAd bannerAd = GTAdsBannerAd(
  adUnitId: 'your_banner_ad_unit_id',  // 替换为你的横幅广告单元 ID
  callback: GTAdsBannerCallback(
    onAdLoad: () {
      print('横幅广告加载成功');
    },
    onAdShow: () {
      print('横幅广告展示');
    },
    onAdClick: () {
      print('横幅广告被点击');
    },
    onAdClose: () {
      print('横幅广告关闭');
    },
    onAdError: (error) {
      print('横幅广告加载失败: $error');
    },
  ),
);

bannerAd.load();  // 加载横幅广告

// 在 Widget 中使用
[@override](/user/override)
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('Banner Ad Example'),
    ),
    body: Center(
      child: bannerAd.getAdWidget(),  // 展示横幅广告
    ),
  );
}

插屏广告

插屏广告通常在全屏页面中展示。

import 'package:gtads_ks/gtads_ks.dart';

GTAdsInterstitialAd interstitialAd = GTAdsInterstitialAd(
  adUnitId: 'your_interstitial_ad_unit_id',  // 替换为你的插屏广告单元 ID
  callback: GTAdsInterstitialCallback(
    onAdLoad: () {
      print('插屏广告加载成功');
    },
    onAdShow: () {
      print('插屏广告展示');
    },
    onAdClick: () {
      print('插屏广告被点击');
    },
    onAdClose: () {
      print('插屏广告关闭');
    },
    onAdError: (error) {
      print('插屏广告加载失败: $error');
    },
  ),
);

interstitialAd.load();  // 加载插屏广告

// 在需要展示插屏广告的地方调用
interstitialAd.show();

4. 处理生命周期

确保在应用的生命周期中正确处理广告的加载和销毁。

[@override](/user/override)
void dispose() {
  bannerAd.dispose();  // 销毁横幅广告
  interstitialAd.dispose();  // 销毁插屏广告
  super.dispose();
}
回到顶部