Flutter插件antsomisdk2的特性与使用方法介绍

Flutter插件antsomisdk2的特性与使用方法介绍

插件概述

An Antsomi CDP SDK for mobile apps(Antsomi客户数据平台SDK)为移动应用程序提供了强大的功能。该插件允许开发者集成深度链接处理、用户行为跟踪、消息通知管理等功能。

特性

  • 深度链接处理:支持从其他应用或网页跳转到特定页面。
  • 用户行为跟踪:记录用户的操作以优化用户体验。
  • 消息通知管理:处理未读消息计数及点击事件。

开始使用

以下是使用antsomisdk2插件的基本步骤及其示例代码。

初始化插件

在应用启动时,需要配置插件并设置必要的参数。

void main() async {
  runZonedGuarded(() async {
    WidgetsFlutterBinding.ensureInitialized();

    // 配置插件参数
    AntsomiSDK.instance.config(
      appGroupId: "group.flutter.example.pro",
      portalId: '564890637',
      propsId: '564993464',
      applicationId: 'fbdfb60d-7ff6-41cd-8203-3ce029c51764',
    );

    // 设置客户属性
    AntsomiSDK.instance.setCustomerProperties(customerId: "1998");

    // 初始化应用内收件箱
    AntsomiSDK.instance
        .appInboxInit(destinationId: '8317604', audienceType: 'visitor');

    runApp(const MyApp());
  }, printError);
}

获取未读消息数量

通过调用getUnreadMessageCount方法获取未读消息的数量,并更新UI。

Future<void> getBadge() async {
  final count = await AntsomiSDK.instance.getUnreadMessageCount();
  print(count);
  debugPrint("[UID]: ${await AntsomiSDK.instance.getUID()}");

  setState(() {
    _badgeCount = count ?? 0;
  });

  final event = CDPEvent(en: 'view_product');
  AntsomiSDK.instance.track(event: event);
}

处理导航栏点击事件

当用户点击底部导航栏时,触发相应的屏幕切换,并记录屏幕名称。

void onPressNavBar(int index) {
  setState(() {
    _selectedIndex = index;
  });
  AntsomiSDK.instance.trackScreen(name: _name[_selectedIndex]);
}

深度链接处理

插件支持从其他应用或网页跳转到特定页面的功能。以下代码展示了如何处理深度链接。

/// DEEP LINK HANDLER
StreamSubscription? _streamSubscription;
Future<void> _initURIHandler() async {
  if (!_initialURILinkHandled) {
    _initialURILinkHandled = true;

    try {
      final initialURI = await getInitialUri();
      if (initialURI != null) {
        debugPrint("Initial URI received $initialURI");
        if (!mounted) {
          return;
        }
        AntsomiSDK.instance.parseDeepLink(initialURI);
        final res = await AntsomiSDK.instance
            .getMessageById(messageId: initialURI.path.split('/')[1]);

        WidgetsBinding.instance.addPostFrameCallback((_) {
          NavigatorKey.instance.currentState
              ?.pushNamed("/detail", arguments: res);
        });
      } else {
        debugPrint("Null Initial URI received");
      }
    } on PlatformException {
      debugPrint("Failed to receive initial uri");
    } on FormatException {
      if (!mounted) {
        return;
      }
      debugPrint('Malformed Initial URI received');
    }
  }
}

示例界面

以下是一个完整的示例界面,包含底部导航栏和消息通知功能。

Scaffold _homeWidget() {
  return Scaffold(
    body: IndexedStack(
      index: _selectedIndex,
      children: _body,
    ),
    bottomNavigationBar: BottomNavigationBar(
      unselectedItemColor: Colors.black,
      elevation: 0,
      selectedIconTheme: const IconThemeData(color: Colors.blue, size: 28),
      showUnselectedLabels: true,
      selectedLabelStyle: const TextStyle(color: Colors.blue),
      selectedItemColor: Colors.blue,
      onTap: onPressNavBar,
      currentIndex: _selectedIndex,
      items: [
        const BottomNavigationBarItem(
          icon: Icon(CupertinoIcons.home),
          label: "Home",
        ),
        const BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.search), label: "Search"),
        BottomNavigationBarItem(
            icon: Stack(
              children: [
                const Icon(CupertinoIcons.bell),
                Positioned(
                  right: 0,
                  child: _badgeCount != 0
                      ? Container(
                          padding: const EdgeInsets.all(1),
                          decoration: BoxDecoration(
                            color: Colors.red,
                            borderRadius: BorderRadius.circular(10),
                          ),
                          constraints: const BoxConstraints(
                            minWidth: 16,
                            minHeight: 16,
                          ),
                          child: Text(
                            '$_badgeCount',
                            style: const TextStyle(
                              color: Colors.white,
                              fontSize: 10,
                            ),
                            textAlign: TextAlign.center,
                          ),
                        )
                      : Container(),
                )
              ],
            ),
            label: "Notifications"),
        const BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.cart), label: "Cart")
      ],
    ),
  );
}

更多关于Flutter插件antsomisdk2的特性与使用方法介绍的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部