Flutter移动广告集成插件vpon_mobile_ads的使用
Flutter移动广告集成插件vpon_mobile_ads的使用
vpon_mobile_ads
一个用于轻松集成Vpon SDK的Flutter插件。
开始使用
对于详细的设置和配置说明,请参阅Vpon SDK Wiki。
如果您需要了解如何开始Flutter开发,可以查看Flutter官方文档,其中包含教程、示例、移动开发指南和完整的API参考。
许可证
该项目根据Apache许可证2.0版本进行授权。更多信息请参见LICENSE文件。
完整示例代码
以下是一个完整的示例代码,演示了如何在Flutter应用中集成Vpon广告。
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_ad_sdk.dart';
import 'package:vpon_mobile_ads_example/banner_example.dart';
import 'package:vpon_mobile_ads_example/interstitial_example.dart';
import 'package:vpon_mobile_ads_example/native_example.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
VponAdSDK.instance.initialize();
runApp(const MaterialApp(
title: 'Vpon 插件 Demo',
home: MyApp(),
));
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
static const interstitial = '插屏广告';
static const banner = '横幅广告';
static const native = '原生广告';
final List<String> menuItems = [interstitial, banner, native];
[@override](/user/override)
void initState() {
super.initState();
// 设置日志级别为调试模式
VponAdSDK.instance.setLogLevel(VponLogLevel.debug);
// 获取Vpon ID
VponAdSDK.instance.getVponID().then((id) {
debugPrint('Vpon ID = $id');
});
// 获取SDK版本号
VponAdSDK.instance.getVersionString().then((version) {
debugPrint('版本 = $version');
});
// 禁用位置管理
VponAdLocationManager.instance.setIsEnable(false);
// 设置音频管理
VponAdAudioManager.instance.setIsAudioApplicationManaged(true);
VponAdAudioManager.instance.noticeApplicationAudioDidEnd();
// 设置用户同意状态
VponUCB.instance.setConsentStatus(VponConsentStatus.personalized);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Builder(builder: (BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Vpon 插件示例'),
),
body: Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
colors: [
Colors.orange,
Colors.deepOrange,
],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
),
),
child: ListView.builder(
padding: const EdgeInsets.all(10),
itemCount: menuItems.length,
itemBuilder: (BuildContext context, int index) {
return Padding(
padding: const EdgeInsets.only(bottom: 8),
child: Card(
child: ListTile(
title: Text(menuItems[index]),
trailing: const Icon(Icons.keyboard_arrow_right),
onTap: () {
_handleMenuItemSelected(menuItems[index]);
},
),
),
);
},
),
),
);
}),
);
}
void _handleMenuItemSelected(String selectedItem) {
switch (selectedItem) {
case interstitial:
// 导航到插屏广告示例页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const InterstitialExample()),
);
break;
case banner:
// 导航到横幅广告示例页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const BannerExample()),
);
break;
case native:
// 导航到原生广告示例页面
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const NativeExample()),
);
break;
default:
throw AssertionError('意外按钮: $selectedItem');
}
}
}
Banner广告示例代码
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_ad_sdk.dart';
class BannerExample extends StatefulWidget {
[@override](/user/override)
_BannerExampleState createState() => _BannerExampleState();
}
class _BannerExampleState extends State<BannerExample> {
late BannerAd bannerAd;
[@override](/user/override)
void initState() {
super.initState();
bannerAd = BannerAd(
adUnitId: 'your_banner_ad_unit_id',
listener: BannerAdListener(
onAdLoaded: (ad) {
setState(() {});
},
onAdFailedToLoad: (ad, error) {
ad.dispose();
},
),
);
bannerAd.load();
}
[@override](/user/override)
void dispose() {
bannerAd.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('横幅广告示例'),
),
body: Center(
child: bannerAd.size != null
? AdWidget(ad: bannerAd)
: CircularProgressIndicator(),
),
);
}
}
插屏广告示例代码
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_ad_sdk.dart';
class InterstitialExample extends StatefulWidget {
[@override](/user/override)
_InterstitialExampleState createState() => _InterstitialExampleState();
}
class _InterstitialExampleState extends State<InterstitialExample> {
late InterstitialAd interstitialAd;
[@override](/user/override)
void initState() {
super.initState();
interstitialAd = InterstitialAd(
adUnitId: 'your_interstitial_ad_unit_id',
listener: InterstitialAdListener(
onAdLoaded: (ad) {
setState(() {});
},
onAdFailedToLoad: (ad, error) {
ad.dispose();
},
onAdClosed: (ad) {
ad.dispose();
},
),
);
interstitialAd.load();
}
[@override](/user/override)
void dispose() {
interstitialAd.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('插屏广告示例'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
if (interstitialAd.isLoaded) {
interstitialAd.show();
} else {
print('InterstitialAd is not loaded yet.');
}
},
child: Text('显示插屏广告'),
),
),
);
}
}
原生广告示例代码
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_ad_sdk.dart';
class NativeExample extends StatefulWidget {
[@override](/user/override)
_NativeExampleState createState() => _NativeExampleState();
}
class _NativeExampleState extends State<NativeExample> {
late NativeAd nativeAd;
[@override](/user/override)
void initState() {
super.initState();
nativeAd = NativeAd(
adUnitId: 'your_native_ad_unit_id',
listener: NativeAdListener(
onAdLoaded: (ad) {
setState(() {});
},
onAdFailedToLoad: (ad, error) {
ad.dispose();
},
),
);
nativeAd.load();
}
[@override](/user/override)
void dispose() {
nativeAd.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('原生广告示例'),
),
body: Center(
child: nativeAd.adBuilder != null
? nativeAd.adBuilder(context)
: CircularProgressIndicator(),
),
);
}
}
更多关于Flutter移动广告集成插件vpon_mobile_ads的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter移动广告集成插件vpon_mobile_ads的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
vpon_mobile_ads
是一个用于在 Flutter 应用中集成 Vpon 广告的插件。Vpon 是一个广告平台,提供横幅广告、插页式广告、原生广告和视频广告等多种广告形式。以下是如何在 Flutter 项目中使用 vpon_mobile_ads
插件的详细步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 vpon_mobile_ads
插件的依赖:
dependencies:
flutter:
sdk: flutter
vpon_mobile_ads: ^latest_version
然后运行 flutter pub get
来获取依赖。
2. 初始化 Vpon SDK
在使用 Vpon 广告之前,需要先初始化 SDK。通常可以在 main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_mobile_ads.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Vpon SDK
await VponMobileAds.instance.initialize(
appId: 'your_app_id', // 替换为你的 Vpon App ID
isTesting: true, // 设置为 true 以启用测试模式
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Vpon Ads Example',
home: HomeScreen(),
);
}
}
3. 展示横幅广告
要在应用中展示横幅广告,可以使用 VponBannerAd
组件:
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_mobile_ads.dart';
class HomeScreen extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Vpon Banner Ad Example'),
),
body: Column(
children: [
Expanded(
child: Center(
child: Text('Your Content Here'),
),
),
Container(
height: 50, // 设置广告的高度
child: VponBannerAd(
adUnitId: 'your_banner_ad_unit_id', // 替换为你的横幅广告单元 ID
size: VponBannerSize.BANNER, // 设置广告尺寸
listener: VponAdListener(
onAdLoaded: (ad) {
print('Banner Ad Loaded');
},
onAdFailedToLoad: (ad, error) {
print('Banner Ad Failed to Load: $error');
},
),
),
),
],
),
);
}
}
4. 展示插页式广告
要展示插页式广告,可以使用 VponInterstitialAd
:
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_mobile_ads.dart';
class InterstitialAdExample extends StatelessWidget {
void showInterstitialAd() async {
VponInterstitialAd interstitialAd = VponInterstitialAd(
adUnitId: 'your_interstitial_ad_unit_id', // 替换为你的插页式广告单元 ID
listener: VponAdListener(
onAdLoaded: (ad) {
print('Interstitial Ad Loaded');
interstitialAd.show();
},
onAdFailedToLoad: (ad, error) {
print('Interstitial Ad Failed to Load: $error');
},
onAdClosed: (ad) {
print('Interstitial Ad Closed');
},
),
);
await interstitialAd.load();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Vpon Interstitial Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
),
);
}
}
5. 展示原生广告
要展示原生广告,可以使用 VponNativeAd
:
import 'package:flutter/material.dart';
import 'package:vpon_mobile_ads/vpon_mobile_ads.dart';
class NativeAdExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Vpon Native Ad Example'),
),
body: ListView(
children: [
VponNativeAd(
adUnitId: 'your_native_ad_unit_id', // 替换为你的原生广告单元 ID
layout: VponNativeAdLayout.medium, // 设置广告布局
listener: VponAdListener(
onAdLoaded: (ad) {
print('Native Ad Loaded');
},
onAdFailedToLoad: (ad, error) {
print('Native Ad Failed to Load: $error');
},
),
),
// 其他内容
],
),
);
}
}
6. 处理广告生命周期
确保在页面销毁时释放广告资源,以避免内存泄漏:
[@override](/user/override)
void dispose() {
// 释放广告资源
interstitialAd?.dispose();
super.dispose();
}