Flutter广告集成插件bigo_ads的使用

bigo_ads简介

这是一个新的Flutter插件项目。

Getting Started(开始使用)

这个项目是一个Flutter插件包的起点,该插件包包含针对Android和/或iOS平台的特定实现代码。

如果您想开始Flutter开发,请查看在线文档,其中提供了教程、示例、移动开发指南以及完整的API参考。


完整示例代码

以下是一个完整的示例代码,展示如何在Flutter应用中集成bigo_ads插件。

示例代码:example/lib/main.dart

import 'dart:async';
import 'dart:io';

import 'package:bigo_ads/bigo_ads.dart';
import 'package:bigo_ads_example/interstitial_ad_page.dart';
import 'package:bigo_ads_example/native_ad_page.dart';
import 'package:bigo_ads_example/popup_ad_page.dart';
import 'package:bigo_ads_example/reward_ad_page.dart';
import 'package:bigo_ads_example/splash_ad_app_show_page.dart';
import 'package:bigo_ads_example/splash_ad_sdk_show_page.dart';
import 'package:flutter/material.dart';

import 'banner_ad_page.dart';

void main() {
  runApp(const MaterialApp(
    title: 'BigoAds example app',
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}):super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _bigoAdSdkVersionName = 'Unknown';
  String _bigoAdSdkVersionCode = 'Unknown';
  BigoAdConsentOptions _options = BigoAdConsentOptions.gdpr;
  bool _consent = true;
  final countryController = TextEditingController();
  final hostController = TextEditingController();

  bool _bigoAdSdkInited = false;

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

  Future<void> getBigoAdSdkVersion() async {
    String versionName = await BigoAdSdk.instance.getSDKVersionName() ??
        'Unknown sdk version name';
    String versionCode =
        await BigoAdSdk.instance.getSDKVersion() ?? 'Unknown sdk version code';
    setState(() {
      _bigoAdSdkVersionName = versionName;
      _bigoAdSdkVersionCode = versionCode;
    });
  }

  Future<void> initBigoAdSdk() async {
    BigoAdConfig adConfig = BigoAdConfig(
        appKey: Platform.isAndroid ? '10182906' : '10048891',
        channel: 'flutter',
        isDebug: true,
        age: 20,
        gender: BigoAdGender.male,
        activatedTime: DateTime(2023).millisecondsSinceEpoch);
    adConfig.addExtra(
        key: 'test_init_extra_key', value: 'test_init_extra_value');

    print('BigoAdSdk, initBigoAdSdk adConfig=${adConfig.toMap()}');

    await BigoAdSdk.instance.initialize(adConfig);
    if (!mounted) return;
    setState(() {
      _bigoAdSdkInited = true;
    });
  }

  Future<void> setUserConsent(
      {required BigoAdConsentOptions options, required bool consent}) async {
    print('BigoAdSdk, setUserConsent options=$_options, consent=$_consent.');
    BigoAdSdk.instance.setUserConsent(_options, _consent);
  }

  Future<void> addExtraHost(
      {required String country, required String host}) async {
    String country = countryController.text;
    String host = hostController.text;
    if (country.isEmpty || host.isEmpty) {
      print('BigoAdSdk, addExtraHost error, country=$country, host=$host.');
      return;
    }
    print('BigoAdSdk, addExtraHost country=$country, host=$host.');
    BigoAdSdk.instance.addExtraHost(country, host);
  }

  Future<void> getBidderToken() async {
    String? token = await BigoAdSdk.instance.getBidderToken();
    print('BigoAdSdk, getBidderToken length=${token?.length}, token=$token.');
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('BigoAds example app'),
        ),
        body: SingleChildScrollView(
          child: Column(
            children: [
              Padding(
                padding: const EdgeInsets.fromLTRB(8, 16, 8, 8),
                child: Row(
                  children: [
                    Text(
                        'Bigo Ad Sdk \nPlatform: ${Platform.isAndroid ? 'Android' : (Platform.isIOS ? 'iOS' : 'Unknown')}\nVerName: $_bigoAdSdkVersionName\nVerCode: $_bigoAdSdkVersionCode')
                  ],
                ),
              ),
              const Padding(
                padding: EdgeInsets.fromLTRB(0, 8, 0, 8),
                child: Divider(
                  height: 1,
                  color: Color.fromARGB(0xFF, 0x88, 0x88, 0x88),
                ),
              ),
              Row(
                children: [
                  const Padding(
                    padding: EdgeInsets.fromLTRB(8, 0, 10, 0),
                    child: Text('OPTIONS:'),
                  ),
                  DropdownButton(
                    value: _options,
                    items: <BigoAdConsentOptions>[
                      BigoAdConsentOptions.gdpr,
                      BigoAdConsentOptions.ccpa,
                      BigoAdConsentOptions.coppa,
                      BigoAdConsentOptions.lgpd
                    ]
                        .map((e) => DropdownMenuItem(
                            value: e, child: Text(e.options.toUpperCase())))
                        .toList(),
                    onChanged: (BigoAdConsentOptions? newValue) {
                      setState(() {
                        _options = newValue ?? BigoAdConsentOptions.gdpr;
                      });
                    },
                  ),
                  const Padding(
                    padding: EdgeInsets.fromLTRB(28, 0, 10, 0),
                    child: Text('CONSENT:'),
                  ),
                  DropdownButton(
                    value: _consent,
                    items: <bool>[true, false]
                        .map((e) => DropdownMenuItem(
                            value: e, child: Text(e.toString())))
                        .toList(),
                    onChanged: (bool? newValue) {
                      setState(() {
                        _consent = newValue ?? true;
                      });
                    },
                  ),
                ],
              ),
              Row(
                children: [
                  Padding(
                    padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
                    child: ElevatedButton(
                        onPressed: () {
                          setUserConsent(options: _options, consent: _consent);
                        },
                        child: const Text('UPDATE USE CONSENT')),
                  ),
                ],
              ),
              const Padding(
                padding: EdgeInsets.fromLTRB(0, 8, 0, 8),
                child: Divider(
                  height: 1,
                  color: Color.fromARGB(0xFF, 0x88, 0x88, 0x88),
                ),
              ),
              Padding(
                padding: const EdgeInsets.all(8),
                child: Row(
                  children: [
                    SizedBox(
                      width: 120,
                      height: 50,
                      child: TextField(
                        textAlignVertical: TextAlignVertical.center,
                        decoration: const InputDecoration(
                            border: OutlineInputBorder(), hintText: 'country'),
                        controller: countryController,
                        enabled: true,
                      ),
                    ),
                    const SizedBox(
                      width: 10,
                      height: 50,
                    ),
                    SizedBox(
                      width: 120,
                      height: 50,
                      child: TextField(
                        textAlignVertical: TextAlignVertical.center,
                        decoration: const InputDecoration(
                            border: OutlineInputBorder(), hintText: 'host'),
                        controller: hostController,
                        enabled: true,
                      ),
                    ),
                  ],
                ),
              ),
              Row(
                children: [
                  Padding(
                    padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
                    child: ElevatedButton(
                        onPressed: () {
                          addExtraHost(
                              country: countryController.text,
                              host: hostController.text);
                        },
                        child: const Text('ADD EXTRA COUNTRY HOST')),
                  ),
                ],
              ),
              const Padding(
                padding: EdgeInsets.fromLTRB(0, 8, 0, 8),
                child: Divider(
                  height: 1,
                  color: Color.fromARGB(0xFF, 0x88, 0x88, 0x88),
                ),
              ),
              Row(
                children: [
                  Padding(
                    padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
                    child: ElevatedButton(
                        onPressed: initBigoAdSdk,
                        child: const Text('INIT BIGO AD SDK')),
                  ),
                  if (_bigoAdSdkInited)
                    Padding(
                      padding: const EdgeInsets.fromLTRB(8, 0, 8, 0),
                      child: ElevatedButton(
                          onPressed: getBidderToken,
                          child: const Text('GET BIDDER TOKEN')),
                    ),
                ],
              ),
              const Padding(
                padding: EdgeInsets.fromLTRB(0, 8, 0, 8),
                child: Divider(
                  height: 1,
                  color: Color.fromARGB(0xFF, 0x88, 0x88, 0x88),
                ),
              ),
              if (_bigoAdSdkInited)
                Column(
                  children: [
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => const BannerAdPage()),
                        );
                      },
                      child: const Text('Banner Ad example'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => const NativeAdPage()),
                        );
                      },
                      child: const Text('Native Ad example'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => const InterstitialAdPage()),
                        );
                      },
                      child: const Text('Interstitial Ad example'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => const RewardAdPage()),
                        );
                      },
                      child: const Text('Reward Ad example'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) =>
                                  const SplashAdAppShowPage()),
                        );
                      },
                      child: const Text('Splash Ad example(app show)'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) =>
                                  const SplashAdSdkShowPage()),
                        );
                      },
                      child: const Text('Splash Ad example(sdk show)'),
                    ),
                    ElevatedButton(
                      onPressed: () {
                        Navigator.push(
                          context,
                          MaterialPageRoute(
                              builder: (context) => const PopupAdPage()),
                        );
                      },
                      child: const Text('Popup Ad example'),
                    ),
                  ],
                ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


bigo_ads 是一个用于在 Flutter 应用中集成 Bigo Ads 广告的插件。它允许你在应用中显示横幅广告、插屏广告、激励视频广告等。以下是使用 bigo_ads 插件的基本步骤:

1. 添加依赖

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

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

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

2. 初始化插件

在你的应用启动时,初始化 bigo_ads 插件。通常可以在 main.dart 文件中进行初始化:

import 'package:bigo_ads/bigo_ads.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Bigo Ads
  await BigoAds.init('YOUR_APP_ID');  // 替换为你的 App ID
  
  runApp(MyApp());
}

3. 显示广告

根据你需要的广告类型,使用 bigo_ads 提供的 API 来显示广告。

3.1 横幅广告

import 'package:bigo_ads/bigo_ads.dart';

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

class _BannerAdExampleState extends State<BannerAdExample> {
  BigoBannerAd? _bannerAd;

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

  void _loadBannerAd() {
    _bannerAd = BigoBannerAd(
      adUnitId: 'YOUR_BANNER_AD_UNIT_ID',  // 替换为你的横幅广告单元 ID
      size: BigoBannerAdSize.BANNER,
      listener: (BigoAdEvent event, Map<String, dynamic>? args) {
        switch (event) {
          case BigoAdEvent.loaded:
            print('Banner Ad loaded');
            break;
          case BigoAdEvent.failedToLoad:
            print('Banner Ad failed to load');
            break;
          case BigoAdEvent.clicked:
            print('Banner Ad clicked');
            break;
          default:
            break;
        }
      },
    );
    _bannerAd?.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Banner Ad Example'),
      ),
      body: Center(
        child: _bannerAd != null
            ? AdWidget(ad: _bannerAd!)
            : Text('Loading Banner Ad...'),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }
}

3.2 插屏广告

import 'package:bigo_ads/bigo_ads.dart';

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

class _InterstitialAdExampleState extends State<InterstitialAdExample> {
  BigoInterstitialAd? _interstitialAd;

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

  void _loadInterstitialAd() {
    _interstitialAd = BigoInterstitialAd(
      adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID',  // 替换为你的插屏广告单元 ID
      listener: (BigoAdEvent event, Map<String, dynamic>? args) {
        switch (event) {
          case BigoAdEvent.loaded:
            print('Interstitial Ad loaded');
            _interstitialAd?.show();
            break;
          case BigoAdEvent.failedToLoad:
            print('Interstitial Ad failed to load');
            break;
          case BigoAdEvent.clicked:
            print('Interstitial Ad clicked');
            break;
          case BigoAdEvent.closed:
            print('Interstitial Ad closed');
            break;
          default:
            break;
        }
      },
    );
    _interstitialAd?.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Interstitial Ad Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            if (_interstitialAd != null) {
              _interstitialAd?.show();
            }
          },
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _interstitialAd?.dispose();
    super.dispose();
  }
}

3.3 激励视频广告

import 'package:bigo_ads/bigo_ads.dart';

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

class _RewardedAdExampleState extends State<RewardedAdExample> {
  BigoRewardedAd? _rewardedAd;

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

  void _loadRewardedAd() {
    _rewardedAd = BigoRewardedAd(
      adUnitId: 'YOUR_REWARDED_AD_UNIT_ID',  // 替换为你的激励视频广告单元 ID
      listener: (BigoAdEvent event, Map<String, dynamic>? args) {
        switch (event) {
          case BigoAdEvent.loaded:
            print('Rewarded Ad loaded');
            break;
          case BigoAdEvent.failedToLoad:
            print('Rewarded Ad failed to load');
            break;
          case BigoAdEvent.clicked:
            print('Rewarded Ad clicked');
            break;
          case BigoAdEvent.closed:
            print('Rewarded Ad closed');
            break;
          case BigoAdEvent.rewarded:
            print('Rewarded Ad rewarded');
            break;
          default:
            break;
        }
      },
    );
    _rewardedAd?.load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Rewarded Ad Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            if (_rewardedAd != null) {
              _rewardedAd?.show();
            }
          },
          child: Text('Show Rewarded Ad'),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _rewardedAd?.dispose();
    super.dispose();
  }
}
回到顶部