Flutter资金筹集选择插件flutter_funding_choices的使用
Flutter资金筹集选择插件flutter_funding_choices的使用
Flutter Funding Choices 是一个非官方的 Flutter 实现,用于 Google 的 Funding Choices 服务,该服务允许请求用户对 AdMob 中的个性化广告进行同意。
前提条件
在使用 flutter_funding_choices 插件之前,你需要将你的 FundingChoices 账户与 Admob 账户链接。可以参考 Google Support 文档。
安装
Android
你的应用必须使用 Android Embedding V2。此外,你需要在 AndroidManifest.xml
文件中的 <application>
标签内添加一个应用 ID:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.skyost.example">
<application>
<!-- 其他属性 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="YOUR-APP-ID"/>
<!-- 活动等 -->
</application>
</manifest>
你可以通过遵循 这些说明 获取你的应用 ID。
iOS
你需要在 Info.plist
文件中添加一个应用 ID:
<key>GADApplicationIdentifier</key>
<string>YOUR-APP-ID</string>
你也可以通过遵循 这些说明 获取你的应用 ID。你可能还需要处理 Apple 的 App Tracking Transparency 消息,方法是在 Info.plist
中添加以下内容:
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
你可以根据需要配置消息内容。
如何使用
有三种主要方法:
FlutterFundingChoices.requestConsentInformation()
:获取当前用户的同意信息(是否需要显示同意表单、用户是否想要个性化广告等)。FlutterFundingChoices.showConsentForm()
:加载并显示同意表单。首先需要检查是否有可用的同意表单(通过调用上一个方法返回的对象上的isConsentFormAvailable
方法)。FlutterFundingChoices.reset()
:重置同意信息。
典型的使用方式如下:
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
ConsentInformation consentInfo = await FlutterFundingChoices.requestConsentInformation();
if (consentInfo.isConsentFormAvailable && consentInfo.consentStatus == ConsentStatus.required) {
await FlutterFundingChoices.showConsentForm();
// 你可以通过再次调用 `FlutterFundingChoices.requestConsentInformation()` 来检查结果!
}
});
}
示例代码
下面是一个完整的示例 demo,展示如何在 Flutter 应用中使用 flutter_funding_choices 插件:
import 'package:flutter/material.dart';
import 'package:flutter_funding_choices/flutter_funding_choices.dart';
/// Hello world !
void main() {
runApp(_ExampleApp());
}
/// 我们的主部件
class _ExampleApp extends StatefulWidget {
@override
_ExampleAppState createState() => _ExampleAppState();
}
/// 我们主部件的状态
class _ExampleAppState extends State<_ExampleApp> {
bool consentInfoRetrieved = false;
/// 当前的同意信息
late ConsentInformation consentInfo;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) async {
await refreshConsentInfo();
});
}
@override
Widget build(BuildContext context) => MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter Funding Choices'),
),
body: !consentInfoRetrieved
? const Center(
child: CircularProgressIndicator(),
)
: Padding(
padding: const EdgeInsets.all(40),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: buildChildren(),
),
),
),
);
/// 构建列子部件
List<Widget> buildChildren() => [
Text(
'同意状态 : $consentStatusString.',
textAlign: TextAlign.center,
),
Text(
'是否有同意表单可用?' + (consentInfo.isConsentFormAvailable ? '是' : '否') + '.',
textAlign: TextAlign.center,
),
if (consentInfo.isConsentFormAvailable && consentInfo.consentStatus == ConsentStatus.required)
ElevatedButton(
child: const Text('显示同意表单'),
onPressed: () async {
await FlutterFundingChoices.showConsentForm();
await refreshConsentInfo();
},
),
ElevatedButton(
child: const Text('重置'),
onPressed: () async {
await FlutterFundingChoices.reset();
await refreshConsentInfo();
},
),
];
/// 刷新当前的同意信息
Future<void> refreshConsentInfo() async {
ConsentInformation consentInfo = await FlutterFundingChoices.requestConsentInformation();
setState(() {
consentInfoRetrieved = true;
this.consentInfo = consentInfo;
});
}
/// 将同意状态转换为可读字符串
String get consentStatusString {
if (consentInfo.consentStatus == ConsentStatus.obtained) {
return '已获得';
}
if (consentInfo.consentStatus == ConsentStatus.notRequired) {
return '不需要';
}
if (consentInfo.consentStatus == ConsentStatus.required) {
return '需要';
}
return '未知';
}
}
这个示例展示了如何初始化、刷新和显示用户同意信息,并提供了相应的按钮来显示同意表单或重置同意信息。
贡献
你有很多选项可以为该项目做出贡献!你可以:
更多关于Flutter资金筹集选择插件flutter_funding_choices的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter资金筹集选择插件flutter_funding_choices的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_funding_choices
插件的一个基本示例。这个插件允许你在应用中展示一个资金筹集选择界面,用户可以选择不同的资助选项,如一次性捐赠、每月捐赠等。
首先,确保你的Flutter项目已经设置好,并且你的pubspec.yaml
文件中已经添加了flutter_funding_choices
依赖。如果还没有添加,可以按照以下步骤操作:
- 打开你的
pubspec.yaml
文件。 - 在
dependencies
部分添加flutter_funding_choices
:
dependencies:
flutter:
sdk: flutter
flutter_funding_choices: ^最新版本号 # 替换为实际的最新版本号
- 运行
flutter pub get
来获取依赖。
接下来,你可以在你的Flutter应用中使用flutter_funding_choices
插件。以下是一个简单的示例代码,展示如何集成和使用该插件:
import 'package:flutter/material.dart';
import 'package:flutter_funding_choices/flutter_funding_choices.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Funding Choices Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: FundingChoicesScreen(),
);
}
}
class FundingChoicesScreen extends StatefulWidget {
@override
_FundingChoicesScreenState createState() => _FundingChoicesScreenState();
}
class _FundingChoicesScreenState extends State<FundingChoicesScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Funding Choices Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 显示资金筹集选择界面
showFundingChoices(
context: context,
configuration: FundingChoicesConfiguration(
// 配置你的资金筹集选项
apiKey: '你的API_KEY', // 替换为你的实际API_KEY
projectId: '你的PROJECT_ID', // 替换为你的实际PROJECT_ID
platform: FundingChoicesPlatform.googlePlay, // 或者 FundingChoicesPlatform.appleAppStore
customDonationAmountEnabled: true,
presets: [
FundingChoicesPreset.oneTime(amount: 5.0),
FundingChoicesPreset.oneTime(amount: 10.0),
FundingChoicesPreset.monthly(amount: 3.0),
],
),
).then((result) {
// 处理用户选择的结果
if (result != null) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('用户选择了: ${result.userChoice.description}'),
),
);
}
});
},
child: Text('显示资金筹集选择'),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,将显示一个资金筹集选择界面。你需要替换apiKey
和projectId
为你的实际值。这些值通常是由你选择的资金筹集平台(如Google Play或Apple App Store)提供的。
FundingChoicesConfiguration
类允许你配置各种选项,如是否启用自定义捐赠金额、预设的捐赠选项等。用户完成选择后,结果将通过then
回调返回,你可以根据需要对结果进行处理。
请注意,为了使用flutter_funding_choices
插件,你可能需要在Google Play Console或App Store Connect中设置相关的资金筹集选项,并获取相应的API密钥和项目ID。
此外,确保你已经阅读并遵守了相关平台的条款和政策,以确保你的应用符合其要求。