Flutter广告集成插件flutter_adfit的使用
Flutter广告集成插件flutter_adfit的使用
卡卡奥爱德菲特提供的广告横幅视图实现的软件包。
- 本软件包不是卡卡奥爱德菲特官方提供的插件。
- 卡卡奥爱德菲特提供的广告详细信息可以在 AdFit平台 查看。
平台支持
- ✅ android
- ✅ iOS
- web (尚未支持)
开始使用
1. 获取广告单元ID(Client ID)
为了接收广告,您需要在 AdFit平台 注册应用并获取广告单元ID(Client ID)。您可以在以下网站注册应用并获取广告单元ID。AdFit平台:https://adfit.kakao.com
2. 项目配置
2-1. Android
- AdFitSDK (3.8.5) SDK 相关信息请参阅 adfit-android-sdk 指南
网络安全设置 (target API 28 及以上)
如果您的应用 targetSdkVersion
设置为 Android 9(API 级别 28)及以上,则为了使广告正常展示和点击,您需要允许普通文本流量的网络安全设置。
-
创建或修改
res/xml/network_security_config.xml
文件,添加以下内容:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"/> </network-security-config>
-
在
AndroidManifest.xml
中添加以下属性:<application ... android:networkSecurityConfig="@xml/network_security_config" >
2-2. iOS
- AdFitSDK (3.8.5) SDK 相关信息请参阅 adfit-ios-sdk 指南
iOS 9 ATS (App Transport Security) 处理 (iOS 9 及以上)
从 iOS 9 开始,ATS (App Transport Security) 功能默认启用,并且只允许加密的 HTTPS 通信。虽然 AdFit SDK 在 ATS 启用状态下也能正常工作,但广告可能会展示不支持 HTTPS 的广告主页面。因此,您需要将以下内容应用到应用项目的 Info.plist
文件中:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Objective-C 项目 (仅限 Objective-C)
AdFit SDK 是基于最新版本的 Xcode 开发的。如果您在 Objective-C 项目中使用 AdFit SDK,则需要嵌入 Swift 标准库。请在应用项目的构建设置中将 Always Embed Swift Standard Libraries
设置为 Yes
。
ATT (App Tracking Transparency) 框架应用 (iOS 14 及以上)
针对 iOS14 的应用必须应用 ATT 框架才能获得 IDFA 识别符。您需要向用户说明应用请求数据权限的原因。请在 Info.plist
文件中添加以下内容:
<key>NSUserTrackingUsageDescription</key>
<string>为了提供定制广告,您的数据将被使用。</string>
使用方法
import 'package:flutter_adfit/flutter_adfit.dart';
AdFitBanner(
adId: Platform.isIOS ? '<IOS_AD_ID>'
: Platform.isAndroid ? '<ANDROID_AD_ID>' : '',
adSize: AdFitBannerSize.BANNER,
listener: (AdFitEvent event, AdFitEventData data) {
switch (event) {
case AdFitEvent.AdReceived:
// 广告成功加载时调用
break;
case AdFitEvent.AdClicked:
// 用户点击广告时调用
break;
case AdFitEvent.AdReceiveFailed:
// 广告加载失败时调用
break;
case AdFitEvent.OnError:
// 广告初始化失败时调用
break;
}
},
)
AdFitBannerSize
名称 | 尺寸 |
---|---|
LARGE_RECTANGLE | 300x250 |
BANNER | 320x100 |
SMALL_BANNER | 320x50 |
AdFitEvent
事件名称 | 描述 |
---|---|
AdReceived | 广告展示完成时调用 |
AdClicked | 用户点击广告时调用 |
AdReceiveFailed | 广告加载失败时调用 |
OnError | 广告初始化失败时调用 |
完整示例
下面是一个完整的 Flutter 应用示例,展示了如何集成和使用 flutter_adfit
插件。
import 'package:flutter/material.dart';
import 'package:flutter_adfit/flutter_adfit.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter AdFit Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Welcome to the AdFit Example!',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
AdFitBanner(
adId: '<YOUR_AD_ID>',
adSize: AdFitBannerSize.BANNER,
listener: (AdFitEvent event, AdFitEventData data) {
switch (event) {
case AdFitEvent.AdReceived:
print('Ad received successfully');
break;
case AdFitEvent.AdClicked:
print('Ad clicked by user');
break;
case AdFitEvent.AdReceiveFailed:
print('Failed to receive ad: ${data.errorCode}');
break;
case AdFitEvent.OnError:
print('Error occurred: ${data.message}');
break;
}
},
),
],
),
),
),
);
}
}
更多关于Flutter广告集成插件flutter_adfit的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告集成插件flutter_adfit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成广告插件flutter_adfit
可以帮助你展示各种广告格式,比如横幅广告(Banner Ads)、插屏广告(Interstitial Ads)等。下面是一个基本的使用示例,展示如何在Flutter应用中集成和使用flutter_adfit
插件。
步骤 1: 添加依赖
首先,在你的pubspec.yaml
文件中添加flutter_adfit
依赖:
dependencies:
flutter:
sdk: flutter
flutter_adfit: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 配置AdFit
在AdFit官网注册并获取你的appId
和unitId
。然后,在你的Flutter应用的main.dart
或其他合适的初始化文件中进行配置。
步骤 3: 初始化AdFit并展示广告
以下是一个完整的示例代码,展示如何初始化AdFit并展示一个横幅广告:
import 'package:flutter/material.dart';
import 'package:flutter_adfit/flutter_adfit.dart';
void main() {
// 初始化AdFit SDK
AdFit.initialize(
appId: 'YOUR_APP_ID', // 替换为你的appId
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AdFit Integration Example'),
),
body: Center(
child: AdFitBannerAd(
unitId: 'YOUR_BANNER_UNIT_ID', // 替换为你的横幅广告unitId
adSize: AdSize.banner, // 横幅广告尺寸
listener: (AdFitAdEvent event, Map<String, dynamic> args) {
// 广告事件监听器
print('Ad event: $event, args: $args');
if (event == AdFitAdEvent.loaded) {
print('Ad loaded successfully');
} else if (event == AdFitAdEvent.failedToLoad) {
print('Failed to load ad: ${args['error']}');
}
},
),
),
),
);
}
}
插屏广告示例
如果你还想展示插屏广告,可以按照以下方式实现:
import 'package:flutter/material.dart';
import 'package:flutter_adfit/flutter_adfit.dart';
void main() {
// 初始化AdFit SDK
AdFit.initialize(
appId: 'YOUR_APP_ID', // 替换为你的appId
);
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _isAdLoaded = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AdFit Integration Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
],
),
),
),
);
}
void _showInterstitialAd() async {
// 加载插屏广告
final AdFitInterstitialAd interstitialAd = AdFitInterstitialAd(
unitId: 'YOUR_INTERSTITIAL_UNIT_ID', // 替换为你的插屏广告unitId
listener: (AdFitAdEvent event, Map<String, dynamic> args) {
// 广告事件监听器
if (event == AdFitAdEvent.loaded) {
setState(() {
_isAdLoaded = true;
});
print('Interstitial Ad loaded successfully');
} else if (event == AdFitAdEvent.failedToLoad) {
print('Failed to load interstitial ad: ${args['error']}');
} else if (event == AdFitAdEvent.closed) {
print('Interstitial Ad closed');
setState(() {
_isAdLoaded = false;
});
}
},
);
// 加载广告
await interstitialAd.load();
// 如果广告加载成功,则展示广告
if (_isAdLoaded) {
interstitialAd.show();
}
}
}
注意事项
- 确保你已经正确配置了AdFit的appId和unitId。
- 监听广告事件以处理加载成功、加载失败等情况。
- 遵循AdFit的使用政策和指南,以确保合规性。
以上代码提供了一个基本的集成示例,你可以根据需要进行调整和扩展。