Flutter广告插件gtads_ylh的使用

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

Flutter广告插件gtads_ylh的使用

相关插件

  • flutter_tencentad:腾讯优量汇广告本体,内部已集成无需额外引入,配置相关查看插件说明。
  • GTAds:聚合广告插件,必须引入。

使用

pubspec.yaml

dependencies:
  // 广告基础库 必须引入
  gtads: ^1.5.0
  // 优量汇广告
  gtads_ylh: ^1.5.x

引入

import 'package:gtads_ylh/gtads_ylh.dart';

使用

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

// 别名、androidId、iosId
GTAdsYlhProvider("ylh", "1200009850", "1200718557", 
  // 安卓隐私管理
  androidPrivacy: {
    // 优量汇SDK将不采集mac地址
    "mac_address": false,
    // 允许优量汇SDK采集android_id
    "android_id": false,
    // 允许收集ip
    "wipaddr": false
  },
  // 安卓隐私合规 是否开启收集应用安装状态
  enableCollectAppInstallStatus: false,
)

完整示例代码

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

import 'package:flutter/services.dart';
import 'package:gtads/gtads.dart';
import 'package:gtads_ylh/gtads_ylh.dart';
import 'package:gtads_ylh_example/banner_page.dart';
import 'package:gtads_ylh_example/native_page.dart';
import 'package:gtads_ylh_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 = [];

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

  Future<void> init() async {
    GTAds.addProvider(GTAdsYlhProvider(
      "ylh",
      "1200009850",
      "1200718557",
      androidPrivacy: {
        // 优量汇SDK将不采集mac地址
        "mac_address": false,
        // 允许优量汇SDK采集android_id
        "android_id": false,
        // 允许收集ip
        "wipaddr": false
      },
      // 安卓隐私合规 是否开启收集应用安装状态
      enableCollectAppInstallStatus: false,
    ));
    initAd = await GTAds.init(isDebug: true);
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('GTAds_ylh demo'),
        ),
        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) => const BannerPage(),
                      ),
                    );
                  },
                ),
                MaterialButton(
                  color: Colors.blue,
                  textColor: Colors.white,
                  child: const Text('激励广告'),
                  onPressed: () async {
                    var b = await GTAds.rewardAd(
                      codes: [
                        GTAdsCode(
                            alias: "ylh",
                            probability: 5,
                            androidId: "5042816813706194",
                            iosId: "3035541744552914")
                      ],
                      // 奖励名称
                      rewardName: "100金币",
                      // 奖励数量
                      rewardAmount: 100,
                      // 用户id
                      userId: "user100",
                      // 扩展参数
                      customData: "123",
                      timeout: 10,
                      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: "ylh",
                              probability: 5,
                              androidId: "2015540734459587",
                              iosId: "5095940784157969")
                        ],
                        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_ylh的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是如何在Flutter项目中集成和使用gtads_ylh插件的一个基本示例。这个插件通常用于集成广告服务,例如Google Ads或第三方广告服务。不过,由于gtads_ylh可能是一个特定于某个广告网络或第三方服务的插件,因此具体实现可能会有所不同。以下示例将基于一般Flutter插件的使用方式来展示如何集成和使用它。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加gtads_ylh依赖项(请注意,gtads_ylh可能是一个假设的插件名,你需要替换为实际的插件名):

dependencies:
  flutter:
    sdk: flutter
  gtads_ylh: ^x.y.z  # 替换为实际的版本号

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

2. 导入插件

在你的Dart文件中导入该插件:

import 'package:gtads_ylh/gtads_ylh.dart';

3. 初始化插件

通常,广告插件需要在应用启动时进行初始化。你可以在main.dart文件的void main()函数中进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化广告插件
  await GtAdsYlh.instance.init(
    appId: '你的广告应用ID',  // 替换为你的广告应用ID
    // 其他初始化参数,根据插件文档添加
  );

  runApp(MyApp());
}

4. 显示广告

在你的Flutter应用中显示广告。例如,显示一个横幅广告:

import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Ads Example'),
        ),
        body: Center(
          child: BannerAdWidget(),  // 自定义的横幅广告组件
        ),
      ),
    );
  }
}

class BannerAdWidget extends StatefulWidget {
  @override
  _BannerAdWidgetState createState() => _BannerAdWidgetState();
}

class _BannerAdWidgetState extends State<BannerAdWidget> {
  BannerAd? _bannerAd;

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

  void _loadBannerAd() {
    // 创建横幅广告实例
    _bannerAd = BannerAd(
      adUnitId: '你的横幅广告单元ID',  // 替换为你的横幅广告单元ID
      size: AdSize.banner,
      listener: BannerAdListener(
        onAdLoaded: () {
          // 广告加载成功
          _bannerAd?.show();
        },
        onAdFailedToLoad: (AdError error) {
          // 广告加载失败
          print('Ad failed to load: ${error.message}');
        },
      ),
    )..load();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: _bannerAd?.size?.height ?? 0,
      child: AdWidget(ad: _bannerAd),
    );
  }

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

5. 处理广告生命周期事件

确保处理广告的生命周期事件,例如在应用暂停和恢复时暂停和恢复广告:

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.paused) {
    GtAdsYlh.instance.pauseAllAds();
  } else if (state == AppLifecycleState.resumed) {
    GtAdsYlh.instance.resumeAllAds();
  }
  super.didChangeAppLifecycleState(state);
}

注意

  • gtads_ylh插件的具体方法和属性可能有所不同,因此请参考该插件的官方文档进行详细的集成和使用。
  • 广告ID和单元ID需要替换为你从广告网络获取的实际值。
  • 确保遵守广告网络的政策和指南,以避免违规和广告展示问题。

这个示例提供了一个基本的框架,你可以根据gtads_ylh插件的实际文档和API进行调整和扩展。

回到顶部