Flutter广告集成插件mint_admobkit的使用
Flutter广告集成插件mint_admobkit的使用
mint_admobkit
是一套用于集成 AdMob 广告的工具,适用于 MintMinter
应用。
功能包括:
AdBanner
: 显示横幅广告。SimpleAdBanner
: 简单显示横幅广告。AdIdProvider
: 提供不同类型的广告ID。AdType
: 定义广告类型。AttView
: 在iOS上显示ATT请求。
使用
在Android上集成AdMob
-
更新AndroidManifest.xml
-
在
<application>
前添加权限:<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
-
在
</application>
前添加元数据:<!-- 示例AdMob应用ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3940256099942544~3347511713"/> <!-- 延迟应用程序测量直到调用MobileAds.initialize()。参见https://developers.google.com/admob/flutter/eu-consent#delay_app_measurement_optional --> <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/>
-
-
添加广告提供商
import 'package:mintminter_mint/ad/ad.dart'; sealed class ExampleAdType extends AdType { const ExampleAdType({required this.unitId}); final String unitId; [@override](/user/override) List<Object?> get props => [ unitId, ]; } class ExampleTopBannerAndroid extends ExampleAdType { const ExampleTopBannerAndroid({ required super.unitId, }); [@override](/user/override) List<Object?> get props => [super.unitId]; } class ExampleAdProvider extends AdIdProvider { ExampleAdProvider._internal(); static ExampleAdProvider? _instance; /// 获取ExampleAdProvider实例 factory ExampleAdProvider.getInstance() { _instance ??= ExampleAdProvider._internal(); return _instance!; } /// 释放ExampleAdProvider实例 static dispose() { _instance = null; } [@override](/user/override) String getAndroidAdUnitId(AdType adType) { if (adType is ExampleAdType) { return adType.unitId; } else { return ''; } } [@override](/user/override) String getIOSAdUnitId(AdType adType) { return ''; } }
-
在主程序中初始化广告提供商
void main() { WidgetsFlutterBinding.ensureInitialized(); ExampleAdProvider.getInstance().initializeMobileAdsOnMobile(); runApp(const App()); }
-
使用
AdBanner
AdBanner( padding: const EdgeInsets.symmetric(vertical: 50), type: const ExampleTopBannerAndroid(unitId: AdIdProvider.mockAdId), adIdProvider: ExampleAdProvider.getInstance(), )
完整示例Demo
以下是一个完整的示例,展示了如何在Flutter应用中使用mint_admobkit
。
import 'dart:async';
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:mint_admobkit/mint_admobkit.dart';
import 'example_ad_provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
unawaited(ExampleAdProvider.getInstance().initializeMobileAdsOnMobile(
requireEuConsent: !kIsWeb && Platform.isAndroid,
));
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Mint AdMobKit Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange),
useMaterial3: true,
),
home: const HomePage(),
);
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Mint AdMobKit Demo'),
),
body: ListView(
children: [
AdBanner(
padding: const EdgeInsets.symmetric(vertical: 50),
type: const ExampleTopBannerAndroid(unitId: AdIdProvider.mockAdId),
adIdProvider: ExampleAdProvider.getInstance(),
),
if (kDebugMode) ...[
InkWell(
child: Container(
color: Theme.of(context).colorScheme.primaryContainer,
padding: const EdgeInsets.all(20),
child: Text(
'Reset Consent Information',
style: TextStyle(
color: Theme.of(context).colorScheme.onPrimaryContainer,
),
),
),
onTap: () {
ExampleAdProvider.getInstance().resetConsentInformation();
},
)
],
const SizedBox(
height: 20,
),
Container(
color: Theme.of(context).colorScheme.primaryContainer,
padding: const EdgeInsets.all(20),
child: Text(
'Other content',
style: TextStyle(
color: Theme.of(context).colorScheme.onPrimaryContainer,
),
),
)
],
),
);
}
}
更多关于Flutter广告集成插件mint_admobkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件mint_admobkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用mint_admobkit
插件来显示广告的示例代码。mint_admobkit
是一个流行的Flutter插件,用于集成Google AdMob广告。
1. 添加依赖
首先,你需要在你的pubspec.yaml
文件中添加mint_admobkit
依赖:
dependencies:
flutter:
sdk: flutter
mint_admobkit: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置AdMob
在AdMob官网创建一个应用并获取你的app_id
和广告单元ID(例如,横幅广告的banner_ad_unit_id
和插屏广告的interstitial_ad_unit_id
)。
3. 初始化AdMob
在你的Flutter应用的主入口(通常是main.dart
)中初始化AdMob:
import 'package:flutter/material.dart';
import 'package:mint_admobkit/mint_admobkit.dart';
void main() {
// 初始化AdMob
AdMobKit.instance.init(appId: 'your_app_id');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
4. 显示横幅广告
在你的HomeScreen
或其他屏幕中显示横幅广告:
import 'package:flutter/material.dart';
import 'package:mint_admobkit/mint_admobkit.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
// 创建横幅广告
_bannerAd = BannerAd(
adUnitId: 'your_banner_ad_unit_id',
size: AdSize.banner,
listener: (AdEvent event, Map<String, dynamic>? info) {
if (event == AdEvent.loaded) {
// 广告加载成功
} else if (event == AdEvent.failedToLoad) {
// 广告加载失败
}
},
)..load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AdMob Integration'),
),
body: Column(
children: [
// 在底部显示横幅广告
if (_bannerAd != null)
Container(
height: _bannerAd!.size.height.toDouble(),
child: AdWidget(ad: _bannerAd!),
),
// 其他内容
Expanded(
child: Center(
child: Text('Scroll down to see the banner ad.'),
),
),
],
),
);
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
5. 显示插屏广告
在你的应用中某个位置(例如按钮点击时)显示插屏广告:
import 'package:flutter/material.dart';
import 'package:mint_admobkit/mint_admobkit.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
InterstitialAd? _interstitialAd;
@override
void initState() {
super.initState();
// 创建插屏广告
_interstitialAd = InterstitialAd(
adUnitId: 'your_interstitial_ad_unit_id',
listener: (AdEvent event, Map<String, dynamic>? info) {
if (event == AdEvent.loaded) {
// 广告加载成功,可以在这里显示广告
} else if (event == AdEvent.failedToLoad) {
// 广告加载失败
} else if (event == AdEvent.closed) {
// 广告关闭,可以重新加载广告
_interstitialAd?.load();
}
},
)..load();
}
void _showInterstitialAd() {
if (_interstitialAd!.isLoaded) {
_interstitialAd!.show();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AdMob Integration'),
),
body: Center(
child: ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
),
);
}
@override
void dispose() {
_interstitialAd?.dispose();
super.dispose();
}
}
以上代码展示了如何在Flutter应用中使用mint_admobkit
插件来集成和显示横幅广告和插屏广告。请确保将your_app_id
、your_banner_ad_unit_id
和your_interstitial_ad_unit_id
替换为你从AdMob获取的实际值。