Flutter广告集成插件mintegralad的使用
Flutter广告集成插件mintegralad的使用
Mintegral广告 Flutter版本
官方文档
版本更新
本地开发环境
[✓] Flutter (Channel stable, 3.0.4, on macOS 12.5 21G72 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 13.4.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.1.1)
[✓] VS Code (version 1.69.2)
[✓] Connected device (3 available)
[✓] HTTP Host Availability
集成步骤
1、pubspec.yaml
在pubspec.yaml
文件中添加依赖:
mintegralad: ^0.0.2
然后执行以下命令安装依赖:
flutter pub get
2、引入库
在代码中引入:
import 'package:mintegralad/mintegralad.dart';
使用
1、SDK初始化
在应用启动时调用Mintegralad.register
方法进行初始化。
await Mintegralad.register(
//androidId
androidId: "153806",
//iosId
iosId: "153806",
//androidAppKey
androidAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
//iosAppKey
iosAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
//是否显示日志log
debug: true,
//是否显示个性化推荐广告
personalized: true,
);
2、获取SDK版本
调用Mintegralad.getSDKVersion
获取当前SDK版本号:
await Mintegralad.getSDKVersion();
3、信息流广告
信息流广告是一种嵌入式广告形式,通常出现在内容流中。
MintegralAdNativeWidget(
//android 广告版位ID
androidId: "352221",
//android 广告单元的ID
androidUnitId: "1588294",
//ios 广告版位ID
iosId: "352221",
//ios 广告单元的ID
iosUnitId: "1588294",
//广告宽
width: 400,
//广告高 加载成功后会自动修改为sdk返回广告高
height: 100,
//广告回调
callBack: MintegralAdNativeCallBack(
onShow: () {
print("信息流广告显示");
},
onClose: () {
print("信息流广告关闭");
},
onFail: (message) {
print("信息流广告出错 $message");
},
onClick: () {
print("信息流广告点击");
},
),
),
4、横幅广告
横幅广告通常固定在屏幕顶部或底部。
MintegralAdBannerWidget(
//android 广告版位ID
androidId: "549920",
//android 广告单元的ID
androidUnitId: "1982590",
//ios 广告版位ID
iosId: "549920",
//ios 广告单元的ID
iosUnitId: "1982590",
//广告宽
width: 400,
//广告高 加载成功后会自动修改为sdk返回广告高
height: 100,
//自动刷新时间(以秒为单位)设置在10s〜180s的范围内。
refreshTime: 30,
//广告回调
callBack: MintegralAdBannerCallBack(
onShow: () {
print("横幅广告显示");
},
onClose: () {
print("横幅广告关闭");
},
onFail: (message) {
print("横幅广告出错 $message");
},
onClick: () {
print("横幅广告点击");
},
),
),
5、激励广告
激励广告是在用户完成某些操作后展示的广告,通常带有奖励机制。
预加载广告
await Mintegralad.loadRewardAd(
//android 广告版位ID
androidId: "351457",
//android 广告单元的ID
androidUnitId: "1589582",
//ios 广告版位ID
iosId: "351457",
//ios 广告单元的ID
iosUnitId: "1589582",
//奖励id
rewardId: "12",
//用户id
userId: "123",
);
显示广告
await Mintegralad.showRewardAd();
广告监听
通过MintegralAdStream
监听广告状态:
MintegralAdStream.initAdStream(
//激励广告
rewardCallBack: MintegralAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClick: () {
print("激励广告点击");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClose: () {
print("激励广告关闭");
},
onReady: () async {
print("激励广告预加载准备就绪");
await Mintegralad.showRewardAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (converted, rewardId,rewardName, rewardAmount) {
print("激励广告奖励 是否完整播放=$converted 奖励id=$rewardId 奖励名称=$rewardName 奖励数量=$rewardAmount");
},
),
);
示例代码
以下是完整的示例代码,展示了如何在Flutter中集成Mintegral广告插件。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:mintegralad/mintegralad.dart';
import 'package:mintegralad_example/banner_page.dart';
import 'package:mintegralad_example/native_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
[@override](/user/override)
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool _isRegister = false;
String _sdkVersion = "";
StreamSubscription? _adStream;
[@override](/user/override)
void initState() {
super.initState();
_register();
_adStream = MintegralAdStream.initAdStream(
//激励广告
rewardCallBack: MintegralAdRewardCallBack(
onShow: () {
print("激励广告显示");
},
onClick: () {
print("激励广告点击");
},
onFail: (message) {
print("激励广告失败 $message");
},
onClose: () {
print("激励广告关闭");
},
onReady: () async {
print("激励广告预加载准备就绪");
await Mintegralad.showRewardAd();
},
onUnReady: () {
print("激励广告预加载未准备就绪");
},
onVerify: (converted, rewardId,rewardName, rewardAmount) {
print("激励广告奖励 是否完整播放=$converted 奖励id=$rewardId 奖励名称=$rewardName 奖励数量=$rewardAmount");
},
),
);
}
///初始化
Future<void> _register() async {
_isRegister = await Mintegralad.register(
//androidId
androidId: "153806",
//iosId
iosId: "153806",
//androidAppKey
androidAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
//iosAppKey
iosAppKey: "5ed0c480e4182fc44b2cc3064a2b6b32",
//是否显示日志log
debug: true,
//是否显示个性化推荐广告
personalized: true,
);
print("初始化==》$_isRegister");
_sdkVersion = await Mintegralad.getSDKVersion();
setState(() {});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Mintegralad广告插件'),
),
body: Center(
child: Column(
children: [
Text('快手SDK初始化: $_isRegister\n'),
Text('SDK版本: $_sdkVersion\n'),
//激励广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('激励广告'),
onPressed: () async {
await Mintegralad.loadRewardAd(
//android 广告版位ID
androidId: "351457",
//android 广告单元的ID
androidUnitId: "1589582",
//ios 广告版位ID
iosId: "351457",
//ios 广告单元的ID
iosUnitId: "1589582",
//奖励id
rewardId: "12",
//用户id
userId: "123",
);
},
),
//横幅广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('横幅广告'),
onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (_) {
return const BannerPage();
}));
},
),
//信息流广告
MaterialButton(
color: Colors.blue,
textColor: Colors.white,
child: const Text('信息流广告'),
onPressed: () async {
Navigator.push(context, MaterialPageRoute(builder: (_) {
return const NativePage();
}));
},
),
],
),
),
);
}
}
更多关于Flutter广告集成插件mintegralad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件mintegralad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
mintegralad
是一个用于在 Flutter 应用中集成 Mintegral 广告的插件。Mintegral 是一个全球移动广告平台,提供了多种广告形式,包括横幅广告、插屏广告、激励视频广告等。通过 mintegralad
插件,你可以轻松地将这些广告集成到你的 Flutter 应用中。
以下是如何使用 mintegralad
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 mintegralad
插件的依赖:
dependencies:
flutter:
sdk: flutter
mintegralad: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 初始化 Mintegral SDK
在使用 Mintegral 广告之前,你需要初始化 Mintegral SDK。通常,你可以在应用的 main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:mintegralad/mintegralad.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Mintegral SDK
await MintegralAd.initialize(
appId: 'your_app_id',
appKey: 'your_app_key',
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
3. 加载和显示广告
Mintegral 提供了多种广告形式,以下是几种常见广告的加载和显示方法。
3.1 横幅广告
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
BannerAd? _bannerAd;
[@override](/user/override)
void initState() {
super.initState();
_loadBannerAd();
}
void _loadBannerAd() {
_bannerAd = BannerAd(
unitId: 'your_banner_ad_unit_id',
listener: BannerAdListener(
onAdLoaded: (ad) {
print('Banner Ad loaded.');
},
onAdFailedToLoad: (ad, error) {
print('Banner Ad failed to load: $error');
},
),
);
_bannerAd?.load();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mintegral Ad Example'),
),
body: Center(
child: _bannerAd != null
? Container(
alignment: Alignment.center,
child: AdWidget(ad: _bannerAd!),
width: _bannerAd!.size.width.toDouble(),
height: _bannerAd!.size.height.toDouble(),
)
: Text('Loading Banner Ad...'),
),
);
}
[@override](/user/override)
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
3.2 插屏广告
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
InterstitialAd? _interstitialAd;
[@override](/user/override)
void initState() {
super.initState();
_loadInterstitialAd();
}
void _loadInterstitialAd() {
InterstitialAd.load(
unitId: 'your_interstitial_ad_unit_id',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) {
_interstitialAd = ad;
print('Interstitial Ad loaded.');
},
onAdFailedToLoad: (error) {
print('Interstitial Ad failed to load: $error');
},
),
);
}
void _showInterstitialAd() {
if (_interstitialAd != null) {
_interstitialAd!.show();
} else {
print('Interstitial Ad is not ready yet.');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mintegral Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
),
);
}
[@override](/user/override)
void dispose() {
_interstitialAd?.dispose();
super.dispose();
}
}
3.3 激励视频广告
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
RewardedAd? _rewardedAd;
[@override](/user/override)
void initState() {
super.initState();
_loadRewardedAd();
}
void _loadRewardedAd() {
RewardedAd.load(
unitId: 'your_rewarded_ad_unit_id',
request: AdRequest(),
rewardedAdLoadCallback: RewardedAdLoadCallback(
onAdLoaded: (ad) {
_rewardedAd = ad;
print('Rewarded Ad loaded.');
},
onAdFailedToLoad: (error) {
print('Rewarded Ad failed to load: $error');
},
),
);
}
void _showRewardedAd() {
if (_rewardedAd != null) {
_rewardedAd!.show(
onUserEarnedReward: (RewardedAd ad, RewardItem reward) {
print('User earned reward: ${reward.amount} ${reward.type}');
},
);
} else {
print('Rewarded Ad is not ready yet.');
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mintegral Ad Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _showRewardedAd,
child: Text('Show Rewarded Ad'),
),
),
);
}
[@override](/user/override)
void dispose() {
_rewardedAd?.dispose();
super.dispose();
}
}
4. 处理广告生命周期
确保在页面销毁时释放广告资源,以避免内存泄漏:
[@override](/user/override)
void dispose() {
_bannerAd?.dispose();
_interstitialAd?.dispose();
_rewardedAd?.dispose();
super.dispose();
}