Flutter广告管理插件sourcepoint_unified_cmp的使用
Flutter广告管理插件 sourcepoint_unified_cmp
的使用
sourcepoint_unified_cmp
是一个用于集成 Sourcepoint 的统一 CMP(Consent Management Platform)SDK 到 Flutter 应用中的插件。以下是如何使用该插件的详细指南和示例代码。
主要概念
- SourcepointController: 用于初始化账户配置,并提供加载同意的方法。
- SourcepointUnifiedCMPBuilder: 一个 Widget,它接收控制器并加载子 Widget 一旦获得用户同意。
示例代码
初始化控制器
首先,我们需要初始化 SourcepointController
并传入账户配置:
import 'package:flutter/material.dart';
import 'package:sourcepoint_unified_cmp/sourcepoint_unified_cmp.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const SourcepointUnifiedCMPBuilderExample(),
);
}
}
使用 SourcepointUnifiedCMPBuilder
在 SourcepointUnifiedCMPBuilder
中,我们可以根据用户的同意状态来显示不同的 UI:
class SourcepointUnifiedCMPBuilderExample extends StatefulWidget {
const SourcepointUnifiedCMPBuilderExample({super.key});
@override
State<SourcepointUnifiedCMPBuilderExample> createState() => _SourcepointUnifiedCMPBuilderExampleState();
}
class _SourcepointUnifiedCMPBuilderExampleState extends State<SourcepointUnifiedCMPBuilderExample> {
late final SourcepointController _controller;
@override
void initState() {
super.initState();
final config = SPConfig(
accountId: 22,
propertyId: 7639,
propertyName: 'tcfv2.mobile.webview',
pmId: '122058',
campaigns: [CampaignType.gdpr],
);
_controller = SourcepointController(config: config)
..setEventDelegate(
SourcepointEventDelegate(
onConsentReady: (SPConsent consent) {
debugPrint('DELEGATE onConsentReady: Consent string: '
'${consent.gdpr?.euconsent}');
},
onSpFinished: (SPConsent consent) {
debugPrint(
'DELEGATE SpFinished: Consent string: ${consent.gdpr?.euconsent}',
);
},
),
)
..addListener(() {
debugPrint('CONSENT CHANGE NOTIFIER: Consent string: '
'${_controller.consent?.gdpr?.euconsent}');
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: const Text('Consent Sample'),
),
body: Center(
child: SourcepointUnifiedCMPBuilder(
controller: _controller,
builder: (BuildContext context, AsyncSnapshot<SPConsent> snapshot) {
List<Widget> children;
if (snapshot.hasData) {
final consent = snapshot.data;
debugPrint('user consent has been loaded:');
debugPrint(' grants: ${consent?.gdpr?.grants}');
debugPrint('euconsent: ${consent?.gdpr?.euconsent}');
children = <Widget>[
const Icon(
Icons.check_circle_outline,
color: Colors.green,
size: 60,
),
const Padding(
padding: EdgeInsets.only(top: 16),
child: Text('Result: We got initial consent'),
),
Padding(
padding: const EdgeInsets.only(top: 16),
child: TextButton(
onPressed: () {
_controller.loadPrivacyManager(
pmId: '122058',
pmTab: PMTab.vendors,
);
},
child: const Text('Load Privacy Manager'),
),
),
];
} else if (snapshot.hasError) {
children = <Widget>[
const Icon(
Icons.error_outline,
color: Colors.red,
size: 60,
),
Padding(
padding: const EdgeInsets.only(top: 16),
child: Text('Error: ${snapshot.error}'),
),
];
} else {
children = const <Widget>[
SizedBox(
width: 60,
height: 60,
child: CircularProgressIndicator(),
),
Padding(
padding: EdgeInsets.only(top: 16),
child: Text('Awaiting consent...'),
),
];
}
return SingleChildScrollView(
child: Column(
children: children,
),
);
},
),
),
);
}
}
处理同意变更
有两种方式可以监听同意变更:
- 注册事件监听器:每当同意变更时会通知你当前的
SPConsent
对象:
_controller = SourcepointController(config: config)
..addListener(() {
debugPrint('CONSENT CHANGE NOTIFIER: Consent string: '
'${_controller.consent?.gdpr?.euconsent}');
});
- 使用事件委托:你可以获取更细粒度的事件,如
onUIReady
,onError
,onAction
,onConsentReady
,onConsentChanged
,onSpFinished
:
_controller = SourcepointController(config: config)
..setEventListener(
SourcepointEventListener(
onConsentReady: (SPConsent consent) {
debugPrint('EVENT onConsentReady: Consent string: '
'${consent.gdpr?.euconsent}');
},
onConsentChanged: (SPConsent consent) {
debugPrint('EVENT onConsentChanged: Consent string: '
'${consent.gdpr?.euconsent}');
},
),
);
加载隐私管理器
你还可以通过按钮动态加载隐私管理器对话框:
TextButton(
onPressed: () {
_controller.loadPrivacyManager(
pmId: '122058',
);
},
child: const Text('Load Privacy Manager'),
)
更多关于Flutter广告管理插件sourcepoint_unified_cmp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告管理插件sourcepoint_unified_cmp的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用Flutter广告管理插件 sourcepoint_unified_cmp
的示例代码。这个插件允许你在Flutter应用中集成和管理广告同意功能。
首先,确保你已经在 pubspec.yaml
文件中添加了 sourcepoint_unified_cmp
依赖:
dependencies:
flutter:
sdk: flutter
sourcepoint_unified_cmp: ^latest_version_number # 请替换为最新版本号
然后,运行 flutter pub get
来获取依赖。
接下来,你可以在你的Flutter应用中按如下方式使用 sourcepoint_unified_cmp
插件:
- 初始化插件
在你的主应用文件(通常是 main.dart
)中,初始化插件并配置必要的参数。
import 'package:flutter/material.dart';
import 'package:sourcepoint_unified_cmp/sourcepoint_unified_cmp.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
// 初始化插件
SourcepointUnifiedCmp.initialize(
config: SourcepointConfig(
cmpId: 'your_cmp_id', // 替换为你的CMP ID
appId: 'your_app_id', // 替换为你的应用ID
debugMode: true, // 是否启用调试模式
// 其他可选配置参数
),
listener: (SourcepointUnifiedCmpEvent event) {
// 处理CMP事件,例如用户同意或拒绝
if (event is SourcepointUserAction) {
if (event.action == SourcepointUserActionAction.ACCEPT) {
print('User accepted the consent.');
} else if (event.action == SourcepointUserActionAction.DECLINE) {
print('User declined the consent.');
}
}
},
);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Sourcepoint Unified CMP Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 显示CMP UI
await SourcepointUnifiedCmp.showCMP();
},
child: Text('Show CMP'),
),
),
),
);
}
}
- 处理CMP事件
在上面的代码中,我们添加了一个事件监听器,用于处理用户同意或拒绝广告同意请求的事件。你可以根据需求在监听器中执行相应的操作。
- 显示CMP UI
通过调用 SourcepointUnifiedCmp.showCMP()
方法,可以在应用中显示CMP的用户界面,让用户进行广告同意的选择。
- 配置参数
SourcepointConfig
类包含多个可选的配置参数,你可以根据需要进行设置。例如,你可以配置CMP的语言、隐私政策URL等。
请确保你已经替换了示例代码中的 your_cmp_id
和 your_app_id
为你实际的CMP ID和应用ID。
这个示例展示了基本的CMP初始化、事件处理和UI显示。你可以根据具体需求进一步扩展和自定义你的实现。