Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用
Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用
文档
完整的文档请参阅Tealium学习社区:
许可证
使用本软件受“LICENSE.txt”文件中包含的许可协议条款和条件约束。在下载或使用此存储库中的任何文件之前,请务必阅读许可协议。通过下载或使用这些文件,即表示您同意受该许可协议的约束并遵守其条款。
版权 (C) 2012-2022, Tealium Inc.
示例代码
以下是使用tealium_adobevisitor
插件的完整示例代码:
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:convert';
import 'dart:developer' as developer;
import 'package:tealium_adobevisitor/tealium_adobevisitor.dart';
import 'tealium_button.dart';
import 'package:tealium_adobevisitor/common.dart';
import 'package:tealium/common.dart';
import 'package:tealium/tealium.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final _adobeOrgIdController = TextEditingController();
var _adobeOrgSet = false;
AdobeVisitor? _adobeVisitor;
final _knownIdController = TextEditingController();
final _dataProviderIdController = TextEditingController();
var _linkEcidReady = false;
final _authStateOptions = [
const DropdownMenuItem<int>(
value: -1,
child: Text("Not Set"),
)
] +
AuthState.values.map<DropdownMenuItem<int>>((AuthState authState) {
return DropdownMenuItem<int>(
value: authState.intValue,
child: Text(authState.name),
);
}).toList();
int? _authStateSelection;
final _urlController = TextEditingController(text: "https://mysite.com/");
var _decoratedUrl = "";
var _urlParameters = "";
[@override](/user/override)
void initState() {
super.initState();
_knownIdController.addListener(_validateLinkSettings);
_dataProviderIdController.addListener(_validateLinkSettings);
}
void initializeTealium(String adobeOrgId) {
if (adobeOrgId == "") return;
TealiumAdobeVisitor.configure(AdobeVisitorConfig(adobeOrgId));
var config = TealiumConfig(
'tealiummobile',
'demo',
TealiumEnvironment.dev,
[Collectors.AppData],
[Dispatchers.Collect],
batchingEnabled: false,
);
Tealium.initialize(config).then((value) => {
developer.log('Tealium Initialized'),
setState(() {
_adobeOrgSet = true;
}),
_fetchAdobeVisitor()
});
}
Padding _listView() {
return Padding(
padding: const EdgeInsets.all(10),
child: ListView(
scrollDirection: Axis.vertical,
children: <Widget>[
const Padding(padding: EdgeInsets.all(8)),
TextField(
controller: _adobeOrgIdController,
autocorrect: true,
decoration:
const InputDecoration(hintText: 'Enter a valid AdobeOrgId'),
),
TealiumButton(
title: 'Initialize Tealium',
onPressed: () => initializeTealium(_adobeOrgIdController.text)),
TealiumButton(
disabled: !_adobeOrgSet,
title: 'Get Adobe Visitor',
onPressed: () => _fetchAdobeVisitor()),
TealiumButton(
disabled: !_adobeOrgSet,
title: 'Reset Visitor',
onPressed: () => _resetVisitor()),
const Padding(padding: EdgeInsets.all(8)),
TextField(
enabled: _adobeOrgSet,
controller: _urlController,
autocorrect: true,
decoration:
const InputDecoration(hintText: 'Enter a url to decorate.'),
),
TealiumButton(
disabled: !_adobeOrgSet,
title: 'Decorate Url',
onPressed: () =>
TealiumAdobeVisitor.decorateUrl(_urlController.text).then(
(value) => setState(() => _decoratedUrl = value as String))),
Visibility(
visible: _decoratedUrl.isNotEmpty, child: Text(_decoratedUrl)),
TealiumButton(
disabled: !_adobeOrgSet,
title: 'Get URL Parameters',
onPressed: () =>
TealiumAdobeVisitor.getUrlParameters().then(
(value) => setState(() => _urlParameters = value?["adobe_mc"] as String)).catchError(
(error) =>
setState(() => _urlParameters = "Adobe Visitor could not be retrieved. Check Org ID."
))),
Visibility(
visible: _urlParameters.isNotEmpty, child: Text(_urlParameters)),
const Padding(padding: EdgeInsets.all(8)),
TextField(
enabled: _adobeOrgSet,
controller: _knownIdController,
autocorrect: true,
decoration:
const InputDecoration(hintText: 'Enter a known Id to link.'),
),
TextField(
enabled: _adobeOrgSet,
controller: _dataProviderIdController,
autocorrect: true,
decoration:
const InputDecoration(hintText: 'Enter the dataProviderId.'),
),
const Padding(padding: EdgeInsets.all(8)),
DropdownButton<int>(
value: _authStateSelection,
hint: const Text("(Optional) Select an AuthState."),
elevation: 16,
onChanged: (int? value) {
setState(() {
_authStateSelection = value!;
});
},
items: _authStateOptions,
),
TealiumButton(
disabled: !_linkEcidReady,
title: 'Link known Id',
onPressed: () =>
TealiumAdobeVisitor.linkEcidToKnownIdentifier(
_knownIdController.text,
_dataProviderIdController.text,
_getSelectedAuthState())
.then((visitor) => _setAdobeVisitor(visitor))),
const Padding(padding: EdgeInsets.all(8)),
const Padding(
padding: EdgeInsets.all(4),
child: Text("Visitor:",
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20)),
),
Text(_adobeVisitor != null
? const JsonEncoder.withIndent(" ").convert(_adobeVisitor)
: "No visitor retrieved yet.")
],
));
}
AuthState? _getSelectedAuthState() {
var authState = _authStateSelection;
if (authState == null) {
return null;
} else {
return AuthState.fromIntValue(authState);
}
}
void _fetchAdobeVisitor() {
TealiumAdobeVisitor.getAdobeVisitor()
.then((visitor) => {_log(visitor), _setAdobeVisitor(visitor)});
}
void _resetVisitor() {
TealiumAdobeVisitor.resetVisitor();
_fetchAdobeVisitor();
}
void _setAdobeVisitor(AdobeVisitor? adobeVisitor) {
setState(() {
_adobeVisitor = adobeVisitor;
});
}
void _validateLinkSettings() {
setState(() {
_linkEcidReady =
_knownIdController.text != "" && _dataProviderIdController.text != "";
});
}
void _log(dynamic payload) {
developer.log(const JsonEncoder().convert(payload));
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: _listView(),
),
);
}
}
更多关于Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
tealium_adobevisitor
是一个 Flutter 插件,用于在 Flutter 应用中集成 Adobe Visitor ID 管理功能。它通过 Tealium 的 Adobe Visitor API 来管理和同步 Adobe Visitor ID,以便在跨设备和跨平台的情况下跟踪用户行为。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 tealium_adobevisitor
插件的依赖:
dependencies:
flutter:
sdk: flutter
tealium_adobevisitor: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装插件。
初始化插件
在使用 tealium_adobevisitor
插件之前,你需要在应用启动时初始化它。通常,你可以在 main.dart
文件中进行初始化:
import 'package:flutter/material.dart';
import 'package:tealium_adobevisitor/tealium_adobevisitor.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Tealium Adobe Visitor 插件
await TealiumAdobeVisitor.initialize(
accountName: 'your_account_name',
profileName: 'your_profile_name',
environment: TealiumEnvironment.production, // 或 TealiumEnvironment.dev
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
使用插件
1. 获取 Adobe Visitor ID
你可以使用 TealiumAdobeVisitor
来获取当前的 Adobe Visitor ID:
String visitorId = await TealiumAdobeVisitor.getVisitorId();
print('Adobe Visitor ID: $visitorId');
2. 同步 Adobe Visitor ID
如果你需要同步 Adobe Visitor ID,可以使用 syncIdentifier
方法:
await TealiumAdobeVisitor.syncIdentifier(
identifier: 'your_identifier',
authState: TealiumAdobeVisitorAuthState.authenticated, // 或 TealiumAdobeVisitorAuthState.loggedOut
);
3. 重置 Adobe Visitor ID
在某些情况下,你可能需要重置 Adobe Visitor ID。你可以使用 resetVisitorId
方法:
await TealiumAdobeVisitor.resetVisitorId();
处理回调
tealium_adobevisitor
插件还提供了回调功能,以便在 Adobe Visitor ID 发生变化时进行处理。你可以通过设置回调来监听这些变化:
TealiumAdobeVisitor.setVisitorIdCallback((String visitorId) {
print('Adobe Visitor ID changed: $visitorId');
});
示例代码
以下是一个完整的示例,展示了如何在 Flutter 应用中使用 tealium_adobevisitor
插件:
import 'package:flutter/material.dart';
import 'package:tealium_adobevisitor/tealium_adobevisitor.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Tealium Adobe Visitor 插件
await TealiumAdobeVisitor.initialize(
accountName: 'your_account_name',
profileName: 'your_profile_name',
environment: TealiumEnvironment.production,
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _visitorId = '';
[@override](/user/override)
void initState() {
super.initState();
_getVisitorId();
TealiumAdobeVisitor.setVisitorIdCallback((String visitorId) {
setState(() {
_visitorId = visitorId;
});
});
}
Future<void> _getVisitorId() async {
String visitorId = await TealiumAdobeVisitor.getVisitorId();
setState(() {
_visitorId = visitorId;
});
}
Future<void> _syncIdentifier() async {
await TealiumAdobeVisitor.syncIdentifier(
identifier: 'your_identifier',
authState: TealiumAdobeVisitorAuthState.authenticated,
);
}
Future<void> _resetVisitorId() async {
await TealiumAdobeVisitor.resetVisitorId();
_getVisitorId();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Tealium Adobe Visitor Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Adobe Visitor ID: $_visitorId'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _syncIdentifier,
child: Text('Sync Identifier'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _resetVisitorId,
child: Text('Reset Visitor ID'),
),
],
),
),
);
}
}