Flutter广告集成插件gtads_sigmob的使用

Flutter广告集成插件gtads_sigmob的使用

GTAds Sigmob广告支持插件

相关插件

  • sigmobad Sigmob广告本体,内部已集成无需额外引入,配置相关查看插件说明
  • GTAds 聚合广告插件,必须引入

使用

pubspec.yaml

// 广告基础库 必须引入
gtads: ^1.5.0
// Sigmob广告
gtads_sigmob: ^1.5.x

引入

import 'package:gtads_sigmob/gtads_sigmob.dart';

使用

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

// 参数依次为 别名、andorid app Id、ios app Id
GTAds.addProvider([
    GTAdsSigmobProvider(
    // 广告别名 唯一
    alias: _alias,
    // andorid app id
    androidId: '6878',
    // ios app id
    iosId: '6877',
    // andorid app key
    androidAppKey: '8ebc1fd1c27e650c',
    // ios app key
    iosAppKey: 'eccdcdbd9adbd4a7')
]);

设置userid

GTAdsSigmobProvider? provider =
        GTAds.getProvider(_alias) as GTAdsSigmobProvider?;
provider?.setUserId("123");

完整示例代码

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

import 'package:flutter/services.dart';
import 'package:gtads/gtads.dart';
import 'package:gtads_sigmob/gtads_sigmob.dart';
import 'package:gtads_sigmob_example/native_page.dart';
import 'package:gtads_sigmob_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 = "sigmob";

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

  Future<void> init() async {
    GTAds.addProvider(GTAdsSigmobProvider(
        alias: _alias,
        androidId: '6878',
        iosId: '6877',
        androidAppKey: '8ebc1fd1c27e650c',
        iosAppKey: 'eccdcdbd9adbd4a7'));
    initAd = await GTAds.init(isDebug: true);
    GTAdsSigmobProvider? provider =
        GTAds.getProvider(_alias) as GTAdsSigmobProvider?;
    provider?.setUserId("123");
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('SigMob支持插件'),
        ),
        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: "ea1f8ea2d90",
                            iosId: "ea1f8f7b662")
                      ],
                      // 奖励名称
                      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: "ea1f8f45d80",
                              iosId: "ea1f8fb93fb")
                        ],
                        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_sigmob的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是如何在Flutter项目中集成并使用gtads_sigmob广告插件的详细步骤和相关代码示例。

第一步:添加依赖

首先,在你的Flutter项目的pubspec.yaml文件中添加gtads_sigmob依赖:

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

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

第二步:配置Android平台

2.1 在android/app/build.gradle中添加以下内容:

android {
    ...
    defaultConfig {
        ...
        // 添加必要的权限
        manifestPlaceholders = [
                SIGMOB_APP_KEY: "你的Sigmob应用Key",
                SIGMOB_APP_SECRET: "你的Sigmob应用Secret"
        ]
    }
}

2.2 在android/app/src/main/AndroidManifest.xml中添加以下权限(如果还没有):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

第三步:配置iOS平台

3.1 在ios/Runner/Info.plist中添加必要的权限(如果还没有):

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3.2 在ios/Podfile中添加以下代码(如果需要):

platform :ios, '10.0'

target 'Runner' do
  use_frameworks!
  ...
  # 如果需要处理其他依赖,可以在这里添加
end

第四步:初始化并使用gtads_sigmob插件

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

import 'package:gtads_sigmob/gtads_sigmob.dart';

4.2 初始化插件并加载广告:

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

  // 初始化插件
  GtAdsSigmob.instance.init();

  // 加载广告示例(如横幅广告)
  GtAdsSigmob.instance.loadBannerAd(
    unitId: "你的横幅广告Unit ID",
    success: (ad) {
      print("横幅广告加载成功: $ad");
      // 在这里显示广告
    },
    fail: (error) {
      print("横幅广告加载失败: $error");
    }
  );
}

4.3 显示广告(例如横幅广告):

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Sigmob广告集成示例'),
        ),
        body: Center(
          child: BannerAdWidget(
            adId: "你的横幅广告ID", // 你可以在这里传递广告实例的ID,如果适用
            // 或者你可以根据广告加载的状态动态显示或隐藏广告
          ),
        ),
      ),
    );
  }
}

class BannerAdWidget extends StatefulWidget {
  final String adId;

  BannerAdWidget({required this.adId});

  @override
  _BannerAdWidgetState createState() => _BannerAdWidgetState();
}

class _BannerAdWidgetState extends State<BannerAdWidget> {
  bool _adLoaded = false;

  @override
  Widget build(BuildContext context) {
    if (!_adLoaded) {
      // 广告未加载时显示占位符
      return Container(
        height: 50, // 根据你的广告尺寸调整
        color: Colors.grey,
        child: Center(child: Text('广告加载中...')),
      );
    } else {
      // 广告加载成功后显示广告
      // 这里假设你已经有了广告实例,可以通过插件的API获取并显示
      // 例如: GtAdsSigmob.instance.showBannerAd(adInstance);
      // 但由于插件API可能不同,请参考具体文档实现
      return Container(
        height: 50, // 根据你的广告尺寸调整
        child: Text('这里是广告位'), // 占位,实际应为广告视图
      );
    }
  }

  // 注意:这里应该有一个方法来监听广告加载状态并更新_adLoaded
  // 由于具体API实现可能不同,请参考插件的官方文档
}

注意

  • 由于gtads_sigmob插件的具体API和实现可能有所不同,上面的代码只是一个示例,你可能需要根据插件的官方文档进行调整。
  • 请确保你已经在Sigmob平台上正确配置了应用信息,并获取了必要的Unit ID和Key。
  • 广告加载和显示可能会涉及异步操作,请确保正确处理异步逻辑。

希望这些步骤和代码示例能帮助你在Flutter项目中成功集成并使用gtads_sigmob插件。

回到顶部