Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用

Flutter Adobe Visitor ID管理插件tealium_adobevisitor的使用

文档

完整的文档请参阅Tealium学习社区:

Tealium for Flutter

许可证

使用本软件受“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

1 回复

更多关于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'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部