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();
}
}