Flutter广告集成插件yandex_mobileads的使用
Flutter广告集成插件yandex_mobileads的使用
Mobile Ads Flutter Plugin
Flutter plugin for the Yandex Mobile Ads SDK. The plugin allows Flutter developers to integrate the Yandex Mobile Ads SDK into Android and iOS apps.
文档
许可证
快速开始
1. 导入项目
2. 构建和运行
集成
配置 pubspec
在 pubspec.yaml
文件中添加 YandexMobileAds SDK:
dependencies:
yandex_mobileads: ^7.7.0
广告中介 (Mediation)
Android
在 android/app/build.gradle
中配置依赖项:
你可以使用包含所有适配器的通用中介依赖(推荐):
dependencies {
// ...
implementation 'com.yandex.android:mobileads-mediation:7.8.0.0'
}
或者你可以手动选择适配器并仅包含它们的依赖项:
dependencies {
// ...
implementation 'com.yandex.android:mobileads:7.8.0'
implementation 'com.yandex.ads.mediation:mobileads-google:23.5.0.0'
implementation 'com.yandex.ads.mediation:mobileads-inmobi:10.8.0.0'
implementation 'com.yandex.ads.mediation:mobileads-mytarget:5.22.1.4'
implementation 'com.yandex.ads.mediation:mobileads-unityads:4.12.5.0'
implementation 'com.yandex.ads.mediation:mobileads-applovin:12.6.0.5'
implementation 'com.yandex.ads.mediation:mobileads-ironsource:8.5.0.0'
implementation 'com.yandex.ads.mediation:mobileads-chartboost:9.3.1.13'
implementation 'com.yandex.ads.mediation:mobileads-pangle:6.4.0.2.0'
implementation 'com.yandex.ads.mediation:mobileads-tapjoy:13.4.1.8'
implementation 'com.yandex.ads.mediation:mobileads-vungle:7.4.2.0'
implementation 'com.yandex.ads.mediation:mobileads-mintegral:16.8.61.2'
implementation 'com.yandex.ads.mediation:mobileads-bigoads:5.0.2.0'
}
如果你计划使用 AdMob,你需要在 AndroidManifest.xml
文件中使用 <meta-data>
标签添加你的 AdMob ID:
<manifest>
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
某些适配器还需要添加特定的 Maven URL:
在 android/build.gradle
中:
allprojects {
repositories {
// ...
// IronSource
maven { url 'https://android-sdk.is.com/' }
// Pangle
maven { url 'https://artifact.bytedance.com/repository/pangle' }
// Tapjoy
maven { url "https://sdk.tapjoy.com/" }
// Mintegral
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
// Chartboost
maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/" }
// AppNext
maven { url "https://dl.appnext.com/" }
}
}
iOS
在 ios/Podfile
中配置依赖项:
你可以使用包含所有适配器的通用中介依赖(推荐):
pod 'YandexMobileAdsMediation', '~> 7.8.0'
或者你可以手动选择适配器并仅包含它们的依赖项:
pod 'YandexMobileAds', '~> 7.8.0'
pod 'GoogleYandexMobileAdsAdapters', '11.12.0.0'
pod 'InMobiYandexMobileAdsAdapters', '10.7.8.3'
pod 'MyTargetYandexMobileAdsAdapters', '5.22.0.0'
pod 'UnityAdsYandexMobileAdsAdapters', '4.12.4.0'
pod 'AppLovinYandexMobileAdsAdapters', '13.0.1.0'
pod 'IronSourceYandexMobileAdsAdapters', '8.5.0.0'
pod 'MintegralYandexMobileAdsAdapters', '7.7.3.3'
pod 'ChartboostYandexMobileAdsAdapters', '9.8.0.1'
pod 'BigoADSYandexMobileAdsAdapters', '4.5.1.0'
pod 'zMaticooYandexMobileAdsAdapters', '1.5.0.0'
如果你计划使用 AdMob,添加 GADApplicationIdentifier 键与你的 AdMob ID 到应用程序的 Info.plist 文件:
在 ios/Info.plist
中:
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
网络也需要添加特定的 SKAdNetworkIdentifiers 到 SKAdNetworkItems:
在 ios/Info.plist
中:
<key>SKAdNetworkItems</key>
<array>
<!-- 添加多个 SKAdNetworkIdentifier -->
</array>
示例代码
以下是集成 Yandex Mobile Ads 的完整示例代码:
/*
* This file is a part of the Yandex Advertising Network
*
* Version for Flutter (C) 2023 YANDEX
*
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at https://legal.yandex.com/partner_ch/
*/
import 'package:flutter/material.dart';
import 'package:yandex_mobileads_sample/pages/app_open_ad_page.dart';
import 'package:yandex_mobileads_sample/policies/policies_page.dart';
import 'pages/banner_ad_page.dart';
import 'pages/home_page.dart';
import 'pages/interstitial_ad_page.dart';
import 'pages/rewarded_ad_page.dart';
void main() => runApp(const YandexMobileAdsApp());
class YandexMobileAdsApp extends StatelessWidget {
static const colorSchemeSeed = Colors.green;
static const inputDecorationTheme = InputDecorationTheme(
border: OutlineInputBorder(),
);
static const listTileTheme = ListTileThemeData(
horizontalTitleGap: 12.0,
);
const YandexMobileAdsApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Yandex Mobile Ads',
theme: ThemeData(
useMaterial3: true,
colorSchemeSeed: colorSchemeSeed,
inputDecorationTheme: inputDecorationTheme,
listTileTheme: listTileTheme,
),
darkTheme: ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorSchemeSeed: colorSchemeSeed,
inputDecorationTheme: inputDecorationTheme,
listTileTheme: listTileTheme,
),
routes: {
'/': (context) => const HomePage(),
'/app_open': (context) => const AppOpenAdPage(),
'/banner_sticky': (context) {
return const BannerAdPage(
title: 'Sticky banner ad',
isSticky: true,
);
},
'/banner_inline': (context) {
return const BannerAdPage(
title: 'Inline banner ad',
);
},
'/interstitial': (context) => const InterstitialAdPage(),
'/rewarded': (context) => const RewardedAdPage(),
'/policies': (context) => const PoliciesPage(),
},
);
}
}
这个示例展示了如何创建一个包含不同广告类型的 Flutter 应用程序。通过定义不同的路由,可以导航到展示不同广告类型的页面。确保你已经按照前面的步骤正确配置了 Yandex Mobile Ads 插件。
更多关于Flutter广告集成插件yandex_mobileads的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件yandex_mobileads的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成并使用yandex_mobileads
插件来显示Yandex广告的示例代码。请确保你已经按照Yandex Mobile Ads的官方文档完成了广告的创建和配置,并获取了必要的广告单元ID。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加yandex_mobileads
依赖:
dependencies:
flutter:
sdk: flutter
yandex_mobileads: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
2. 配置Android和iOS
Android
在android/app/src/main/AndroidManifest.xml
中添加必要的权限和网络配置(如果需要)。
iOS
在ios/Runner/Info.plist
中添加必要的配置,比如广告追踪权限等(具体配置请参考Yandex官方文档)。
3. 初始化广告
在你的Flutter应用的入口文件(通常是main.dart
)中初始化Yandex广告SDK。
import 'package:flutter/material.dart';
import 'package:yandex_mobileads/yandex_mobileads.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
YandexMobileAds.instance.initialize(
appId: '你的Yandex广告应用ID', // 替换为你的Yandex广告应用ID
testDevices: <String>[
YandexMobileAds.simulatorId, // 用于模拟器测试
// '你的真实设备测试ID', // 如果有真实设备测试ID的话
],
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Yandex Ads Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
4. 显示Banner广告
在你的主页面或其他需要显示广告的Widget中添加Banner广告。
import 'package:flutter/material.dart';
import 'package:yandex_mobileads/yandex_mobileads.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
_loadBannerAd();
}
void _loadBannerAd() {
_bannerAd = BannerAd(
adUnitId: '你的Banner广告单元ID', // 替换为你的Banner广告单元ID
size: AdSize.banner, // 或其他适合你应用的尺寸
listener: (AdEvent event, Map<String, dynamic>? info) {
if (event == AdEvent.loaded) {
_bannerAd?.show(
anchorOffset: 0.0,
anchorType: AnchorType.bottom,
);
}
},
)..load();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Yandex Ads Demo'),
),
body: Center(
child: Text('查看底部Banner广告'),
),
);
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}
}
5. 显示Interstitial广告
如果你想显示Interstitial广告,可以类似地创建一个InterstitialAd
对象并在合适的时候展示它。
void _showInterstitialAd() {
InterstitialAd(
adUnitId: '你的Interstitial广告单元ID', // 替换为你的Interstitial广告单元ID
listener: (AdEvent event, Map<String, dynamic>? info) {
if (event == AdEvent.loaded) {
_interstitialAd?.show();
}
},
)..load();
}
你可以在一个按钮点击事件中调用_showInterstitialAd()
方法来显示Interstitial广告。
注意事项
- 确保你已经按照Yandex Mobile Ads的官方文档完成了所有必要的配置。
- 在实际发布前,请移除测试设备ID。
- 监听广告事件(如加载、展示、点击等)以优化用户体验和广告收入。
这样,你就完成了在Flutter项目中集成和使用Yandex Mobile Ads的基本流程。希望这个示例对你有所帮助!