Flutter广告集成插件adx_sdk的使用
Flutter广告集成插件adx_sdk的使用
在本教程中,我们将介绍如何在Flutter应用中使用adx_sdk插件来集成广告。adx_sdk插件支持Android和iOS平台。
步骤1:添加依赖项
首先,在你的pubspec.yaml
文件中添加adx_sdk插件:
dependencies:
flutter:
sdk: flutter
adx_sdk: ^1.0.0 # 请确保使用最新版本
app_tracking_transparency: ^1.0.0 # 如果你需要处理跟踪权限
然后运行flutter pub get
以获取这些依赖项。
步骤2:初始化adx_sdk插件
在main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:adx_sdk/adx_sdk.dart';
import 'dart:io' show Platform;
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
import 'banner_ad.dart';
import 'interstitial_ad.dart';
import 'rewarded_ad.dart';
String appId = Platform.isAndroid ? "61ee18cecb8c670001000023" : "6200fea42a918d0001000001";
void main() {
WidgetsFlutterBinding.ensureInitialized();
initializeAdxPlugin();
runApp(const MyApp());
}
Future<void> initializeAdxPlugin() async {
if (Platform.isIOS) {
/// Do not call the method below if calling 'AdxSdk.initialize()' method with 'gdprTypePopupLocation' or 'gdprTypePopupDebug'
await requestTrackingAuthorization();
}
AdxInitResult adxInitResult = await AdxSdk.initialize(
appId,
AdxCommon.gdprTypeDirectNotRequired,
[]);
bool result = adxInitResult.result;
int consentState = adxInitResult.consent;
debugPrint("ADX Init result : $result, consentState : $consentState");
}
Future<void> requestTrackingAuthorization() async {
final TrackingStatus status =
await AppTrackingTransparency.trackingAuthorizationStatus;
if (status == TrackingStatus.notDetermined) {
final TrackingStatus status =
await AppTrackingTransparency.requestTrackingAuthorization();
}
final uuid = await AppTrackingTransparency.getAdvertisingIdentifier();
debugPrint("UUID: $uuid");
}
步骤3:创建广告页面
Banner广告
创建一个名为banner_ad.dart
的文件,并编写以下代码:
import 'package:flutter/material.dart';
import 'package:adx_sdk/adx_sdk.dart';
class AdxBanner extends StatefulWidget {
const AdxBanner({Key? key}) : super(key: key);
[@override](/user/override)
_AdxBannerState createState() => _AdxBannerState();
}
class _AdxBannerState extends State<AdxBanner> {
late BannerAd bannerAd;
[@override](/user/override)
void initState() {
super.initState();
bannerAd = BannerAd(
adUnitId: 'your_banner_ad_unit_id',
size: AdSize.BANNER,
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 Center(
child: bannerAd.size == AdSize.BANNER
? SizedBox(
width: bannerAd.size.width.toDouble(),
height: bannerAd.size.height.toDouble(),
child: AdWidget(ad: bannerAd),
)
: Container(),
);
}
}
插屏广告
创建一个名为interstitial_ad.dart
的文件,并编写以下代码:
import 'package:flutter/material.dart';
import 'package:adx_sdk/adx_sdk.dart';
class AdxInterstitialAd extends StatefulWidget {
const AdxInterstitialAd({Key? key}) : super(key: key);
[@override](/user/override)
_AdxInterstitialAdState createState() => _AdxInterstitialAdState();
}
class _AdxInterstitialAdState extends State<AdxInterstitialAd> {
late InterstitialAd interstitialAd;
[@override](/user/override)
void initState() {
super.initState();
interstitialAd = InterstitialAd(
adUnitId: 'your_interstitial_ad_unit_id',
listener: InterstitialAdListener(
onAdLoaded: (ad) {},
onAdClosed: (ad) {
ad.dispose();
},
),
);
interstitialAd.load();
}
[@override](/user/override)
void dispose() {
interstitialAd.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () {
if (interstitialAd.isLoaded) {
interstitialAd.show();
} else {
debugPrint('InterstitalAd is not loaded yet');
}
},
child: const Text('Show Interstitial Ad'),
),
);
}
}
激励视频广告
创建一个名为rewarded_ad.dart
的文件,并编写以下代码:
import 'package:flutter/material.dart';
import 'package:adx_sdk/adx_sdk.dart';
class AdxRewardedAd extends StatefulWidget {
const AdxRewardedAd({Key? key}) : super(key: key);
[@override](/user/override)
_AdxRewardedAdState createState() => _AdxRewardedAdState();
}
class _AdxRewardedAdState extends State<AdxRewardedAd> {
late RewardedAd rewardedAd;
[@override](/user/override)
void initState() {
super.initState();
rewardedAd = RewardedAd(
adUnitId: 'your_rewarded_ad_unit_id',
listener: RewardedAdListener(
onAdLoaded: (ad) {},
onAdClosed: (ad) {
ad.dispose();
},
),
);
rewardedAd.load();
}
[@override](/user/override)
void dispose() {
rewardedAd.dispose();
super.dispose();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () {
if (rewardedAd.isLoaded) {
rewardedAd.show();
} else {
debugPrint('RewardedAd is not loaded yet');
}
},
child: const Text('Show Rewarded Ad'),
),
);
}
}
步骤4:创建主页面
在main.dart
中创建一个主页面,用于选择不同类型的广告:
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'AD(X) Flutter Sample',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'ADX Flutter Sample Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<String> adList = [
'Banner Ad',
'Interstitial Ad',
'Rewarded Ad'
];
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListView.separated(
itemCount: adList.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(adList[index], textAlign: TextAlign.center),
onTap: () {
switch(index) {
case 0:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AdxBanner()),
);
break;
case 1:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AdxInterstitialAd()),
);
break;
case 2:
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AdxRewardedAd()),
);
break;
}
},
);
},
separatorBuilder: (BuildContext context, int index) {
return const Divider(thickness: 0);
},
),
);
}
}
更多关于Flutter广告集成插件adx_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件adx_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
adx_sdk
是一个用于 Flutter 应用中集成广告的插件。它支持多种广告格式,如横幅广告、插页广告、激励视频广告等。以下是如何在 Flutter 项目中使用 adx_sdk
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 adx_sdk
依赖:
dependencies:
flutter:
sdk: flutter
adx_sdk: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化 SDK
在 main.dart
文件中初始化 adx_sdk
:
import 'package:adx_sdk/adx_sdk.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化SDK
await AdxSdk.init(
appId: 'YOUR_APP_ID', // 替换为你的App ID
isDebug: true, // 调试模式
);
runApp(MyApp());
}
3. 展示横幅广告
在需要展示横幅广告的地方,使用 BannerAdWidget
:
import 'package:adx_sdk/adx_sdk.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Banner Ad Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Hello, world!'),
SizedBox(height: 20),
// 展示横幅广告
BannerAdWidget(
adUnitId: 'YOUR_BANNER_AD_UNIT_ID', // 替换为你的横幅广告单元ID
adSize: AdSize.banner, // 广告尺寸
),
],
),
),
);
}
}
4. 展示插页广告
插页广告通常在用户点击某个按钮或完成某个操作后展示。你可以使用 InterstitialAd
来加载和展示插页广告:
import 'package:adx_sdk/adx_sdk.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatelessWidget {
void _showInterstitialAd() async {
await InterstitialAd.load(
adUnitId: 'YOUR_INTERSTITIAL_AD_UNIT_ID', // 替换为你的插页广告单元ID
);
// 展示插页广告
await InterstitialAd.show();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Interstitial Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
),
);
}
}
5. 展示激励视频广告
激励视频广告通常用于奖励用户观看视频。你可以使用 RewardedAd
来加载和展示激励视频广告:
import 'package:adx_sdk/adx_sdk.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatelessWidget {
void _showRewardedAd() async {
await RewardedAd.load(
adUnitId: 'YOUR_REWARDED_AD_UNIT_ID', // 替换为你的激励视频广告单元ID
);
// 展示激励视频广告
await RewardedAd.show();
// 处理奖励逻辑
// 例如:给用户发放奖励
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rewarded Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _showRewardedAd,
child: Text('Show Rewarded Ad'),
),
),
);
}
}
6. 处理广告事件
你可以监听广告事件来处理不同的广告状态,例如广告加载成功、失败、点击等:
import 'package:adx_sdk/adx_sdk.dart';
import 'package:flutter/material.dart';
class MyHomePage extends StatelessWidget {
void _showBannerAd() {
BannerAdWidget(
adUnitId: 'YOUR_BANNER_AD_UNIT_ID',
adSize: AdSize.banner,
listener: (AdEvent event) {
switch (event) {
case AdEvent.loaded:
print('Banner Ad loaded');
break;
case AdEvent.failedToLoad:
print('Banner Ad failed to load');
break;
case AdEvent.clicked:
print('Banner Ad clicked');
break;
case AdEvent.closed:
print('Banner Ad closed');
break;
}
},
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Ad Event Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _showBannerAd,
child: Text('Show Banner Ad'),
),
),
);
}
}