Flutter广告集成插件gtads_csj的使用

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

Flutter广告集成插件gtads_csj的使用

1. 整理后的内容中关于“Flutter广告集成插件gtads_csj的使用”的完整示例demo

import 'package:flutter/material.dart';
import 'package:gtads/gtads_manager.dart';
import 'package:gtads_csj/gtads_csj.dart';

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

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

class Index extends StatefulWidget {
  @override
  _IndexState createState() => _IndexState();
}

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

  @override
  void initState() {
    super.initState();
    init();
  }

  Future<void> init() async {
    GTAds.addProvider(GTAdsCsjProvider(
      "csj",
      "5098580",
      "5098580",
      ohosId: "",
      appName: "unionad",
      useMediation: true,
      androidPrivacy: AndroidPrivacy(),
      iosPrivacy: IOSPrivacy(),
    ));
    initAd = await GTAds.init(isDebug: true);
    print(initAd);
    setState(() {});
    var version = await FlutterUnionad.getSDKVersion();
    print("version -> $version");
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: SingleChildScrollView(
            child: Column(
              children: [
                Text("初始化结果$initAd"),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('横幅广告'),
                  onPressed: () async {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) =&gt; const BannerPage(),
                      ),
                    );
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('激励广告'),
                  onPressed: () async {
                    var b = await GTAds.rewardAd(
                      codes: [
                        GTAdsCode(
                            alias: "csj",
                            probability: 5,
                            androidId: "945418088",
                            iosId: "945418088")
                      ],
                      // 奖励名称
                      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: "csj",
                            probability: 5,
                            androidId: "946201351",
                            iosId: "946201351")
                      ],
                      issFull: 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("插屏广告开始请求");
                    } else {
                      print("插屏广告开始请求失败");
                    }
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('开屏广告'),
                  onPressed: () async {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) =&gt; const SplashPage(),
                      ),
                    );
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('信息流广告'),
                  onPressed: () async {
                    Navigator.push(
                      context,
                      MaterialPageRoute(
                        builder: (context) =&gt; const NativePage(),
                      ),
                    );
                  },
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

2. 参考我提供的内容和示例代码回答“Flutter广告集成插件gtads_csj的使用”对应的内容


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

1 回复

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


在Flutter中集成广告插件 gtads_csj 可以帮助你在应用中显示广告。以下是一个简单的代码案例,展示如何使用 gtads_csj 插件来集成广告。

首先,确保你已经在 pubspec.yaml 文件中添加了 gtads_csj 插件的依赖:

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

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

接下来,你需要按照广告平台的要求进行初始化配置。假设你已经获得了广告平台的 appId 和其他必要的配置信息,下面是如何在 Flutter 应用中使用这些信息的示例代码。

1. 初始化广告 SDK

在你的主文件(例如 main.dart)中,进行 SDK 的初始化:

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化广告 SDK
  GtAds.instance.init(
    appId: '你的AppId',  // 替换为你的AppId
    // 其他初始化参数(根据广告平台的要求添加)
  );
  runApp(MyApp());
}

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

2. 显示广告(例如横幅广告)

在你的 MyHomePage 或其他页面中,添加代码来显示横幅广告:

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

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

class _MyHomePageState extends State<MyHomePage> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    // 创建横幅广告实例
    _bannerAd = BannerAd(
      adUnitId: '你的横幅广告单元ID',  // 替换为你的横幅广告单元ID
      adSize: AdSize.banner,  // 或使用其他尺寸,如 AdSize.largeBanner, AdSize.fullBanner
      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');
          _bannerAd?.dispose();
        },
      ),
    )..load();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo'),
      ),
      body: Center(
        child: _bannerAd == null || !_bannerAd!.isLoaded()
            ? CircularProgressIndicator()
            : Container(
                height: _bannerAd!.size.height.toDouble(),
                child: AdWidget(ad: _bannerAd!),
              ),
      ),
    );
  }

  @override
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }
}

3. 显示插屏广告(可选)

如果你还需要显示插屏广告,可以类似地创建和显示插屏广告:

import 'package:gtads_csj/gtads_csj.dart';

// 在某个按钮点击事件中显示插屏广告
void _showInterstitialAd() {
  InterstitialAd? _interstitialAd = InterstitialAd(
    adUnitId: '你的插屏广告单元ID',  // 替换为你的插屏广告单元ID
    listener: InterstitialAdListener(
      onAdLoaded: () {
        _interstitialAd!.show();
      },
      onAdFailedToLoad: (AdError error) {
        print('Interstitial Ad Failed to Load: ${error.message}');
      },
      onAdOpened: () {
        print('Interstitial Ad Opened');
      },
      onAdClosed: () {
        print('Interstitial Ad Closed');
        _interstitialAd?.dispose();
      },
    ),
  )..load();
}

_showInterstitialAd 方法绑定到某个按钮的点击事件即可。

注意事项

  1. 确保你已经正确配置了广告平台的 AndroidManifest.xmlInfo.plist 文件。
  2. 根据广告平台的要求,可能需要添加网络权限和其他必要的配置。
  3. 测试广告和实际广告的单元 ID 是不同的,确保在发布应用时使用正确的广告单元 ID。

通过上述步骤,你应该能够在 Flutter 应用中成功集成并使用 gtads_csj 插件来显示广告。

回到顶部