Flutter个性化推荐插件segmentify_flutter_sdk的使用

Flutter个性化推荐插件segmentify_flutter_sdk的使用

Segmentify Flutter SDK

版本 许可证: MIT Twitter: sarpkayature

🏠 首页

Homepage

✨ 描述

我们的创新Flutter应用旨在改变电子商务个性化和细分领域的格局。基于强大的Flutter框架构建,该应用为iOS和Android用户提供无缝跨平台体验。它旨在帮助电子商务企业提升客户参与度和留存策略。通过此应用,过去的一刀切营销方式已成为历史。它帮助企业深入理解客户,根据个人偏好和行为定制产品推荐,从而为更个性化和有效的营销活动铺平道路。

关键特性

  • 个性化推荐: 我们的应用利用先进的算法和机器学习技术分析用户行为、购买历史和偏好。基于这些洞察,生成个性化的产品推荐并在应用内展示。这有助于企业增强用户体验、提高转化率并推动客户忠诚度。

  • 动态内容: 向正确的人群传递正确的信息对于吸引用户的注意力至关重要。我们的应用允许企业根据用户分段动态更新和自定义应用内容。无论是展示定向横幅、促销优惠还是专属内容,我们的应用确保每位用户看到与其兴趣和需求相关的相关内容。

  • 搜索功能: 我们的应用包含一个强大的搜索功能,允许用户根据其偏好快速找到产品。用户可以通过关键词、过滤器、类别或其他相关属性进行搜索。搜索结果实时显示,确保流畅高效的用户体验。企业还可以利用搜索分析来获得热门搜索词、用户偏好等方面的见解,并优化其产品供应。

  • 用户细分: 了解你的受众是有效营销的关键。我们的应用使企业能够使用多种标准对用户群体进行细分,包括人口统计学、购买历史、参与水平等。这种细分能力让企业可以创建高度针对性的营销活动,并针对特定用户群定制其信息,从而提高参与度和转化率。

  • A/B测试: 利用我们的A/B测试功能轻松优化用户体验和营销策略。企业可以创建应用组件(如布局、UI元素或促销内容)的多个版本,并与不同的用户群体进行测试。通过衡量和分析用户互动和转化率,企业可以做出数据驱动的决策,持续改进其应用性能和用户满意度。

  • 无缝集成: 我们的Flutter应用与现有的电子商务平台无缝集成,确保实施过程顺畅无阻。无论你使用的是流行的电子商务平台(如Shopify或WooCommerce),我们的应用都可以轻松集成到现有基础设施中,让你无需中断当前运营即可利用个性化和细分的力量。

  • 分析和洞察: 深入的分析和报告为企业提供了宝贵的用户行为、偏好和活动表现的见解。我们的应用提供详细的分析仪表板,使企业能够跟踪关键指标、监控个性化努力的成功情况,并基于数据做出优化营销策略的决定。

  • 推送通知: 我们的应用允许企业向用户发送个性化推送通知。企业可以根据用户细分(如位置、人口统计学或购买历史)创建自定义推送通知。这使得企业能够向特定用户群体发送有针对性的信息,从而提高参与度和转化率。

借助我们的Flutter应用,将您的电子商务业务推向新的高度。以个性化和细分为核心,与用户建立个人联系,提供相关的内容,并以前所未有的方式推动转化。领先于竞争对手,与客户建立持久的关系。

前提条件

  • flutter >= v2.8

安装

flutter pub add segmentify-sdk

使用

配置

segmentifyConfig 包含以下属性:

  • apiKey: 字符串(必需)
  • dataCenterUrl: 字符串(必需)
  • dataCenterPushUrl: 字符串(可选)
  • subDomain: 字符串(必需)
  • language: 字符串(必需)

这是你可以从Segmentify获取的配置:

const Map<String, dynamic> segmentifyConfig = {
  'sgm_config': {
    'apiKey': 'your-api-key',
    'dataCenterUrl': 'https://per.segmentify.com',
    'subDomain': 'https://www.yoursite.com',
    'dataCenterPushUrl': 'https://psh.segmentify.com',
    'isApnsEnabled': false,
    'language': 'TR',
  },
  'sgm_user': {
    'userId': '',
    'sessionId': '',
  },
};

用户流是灵活的。你也可以这样使用。这种方式下,Segmentify会为你生成 userIdsessionId

Segmentify初始化

在Flutter应用中,首先使用别名 Segmentify 导入 segmentify_flutter_sdk 包。然后,在主方法中调用 Segmentify.SegmentifyInitializer 并传入你在 segmentifyConfig 中提供的具体配置设置。这一步骤准备了包在整个应用中的使用。

import 'package:segmentify_flutter_sdk/main.dart' as Segmentify;
import 'config.dart';

void main() async {
  Segmentify.SegmentifyInitializer(segmentifyConfig: segmentifyConfig);

  runApp(const MyApp());
}

与Segmentify交互

如果你有访问Segmentify Web Push产品的权限,你需要额外步骤来将Segmentify SDK集成到你的应用中。有关更多信息,请参阅这里

SegmentifyEvent 类包含用于向Segmentify发送事件的各种函数。要使用这些函数,你需要导入 SegmentifyTypes 模块中的类型。

要使用Segmentify事件,你必须像这样导入 SegmentifySegmentifyTypes 模块:

import 'package:segmentify_flutter_sdk/main.dart' as Segmentify;
import 'package:segmentify_flutter_sdk/models/event_types.dart' as SegmentifyTypes;

以下是使用 Segmentify 事件的示例。当你创建模型时,可以看到所需的参数。例如,使用 SegmentifyTypes.PageViewModel 创建一个 pageView 事件并通过 Segmentify.segmentifyEvent 发送到Segmentify。变量 responseOfEvent 捕获此事件的响应:

final segmentifyEvent = await Segmentify.segmentifyEvent();

final pageViewPayload = SegmentifyTypes.PageViewModel(category: 'Home Page');
final responseOfEvent = await segmentifyEvent.pageView(pageViewPayload);

集成推送通知

安装指南

flutter pub add firebase_core
flutter pub add firebase_messaging

在使用任何其他Firebase服务之前,必须安装 firebase_corefirebase_messaging 模块。

Android设置

生成Android凭证

在Firebase控制台上添加一个新的Android应用程序并输入项目详情。Android package name 必须匹配本地项目的包名称,可以在项目的 /android/app/src/main/AndroidManifest.xml 文件中的 manifest 标签内找到。

下载 google-services.json 文件并放置在项目中的以下位置:/android/app/google-services.json

配置Firebase与Android凭证

为了允许Firebase在Android上使用凭证,必须在项目中启用 google-services 插件。这需要修改Android目录下的两个文件。

首先,在 /android/build.gradle 文件内的依赖项中添加 google-services 插件:

buildscript {
  dependencies {
    // ... 其他依赖
    classpath 'com.google.gms:google-services:4.3.15'
    // 添加我 --- /\
  }
}

最后,在 /android/app/build.gradle 文件中添加以下内容:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // 添加这一行

iOS设置

生成iOS凭证

在Firebase控制台上添加一个新的iOS应用程序并输入项目详情。iOS bundle ID 必须匹配本地项目的Bundle ID。Bundle ID可以在使用Xcode打开项目时在“General”标签页中找到。

下载 GoogleService-Info.plist 文件。

使用Xcode,打开项目的 /ios/{projectName}.xcodeproj 文件(如果使用Pods,则为 /ios/{projectName}.xcworkspace)。

右击项目名称并选择“Add Files”,如下所示:

xcode_step1

从计算机中选择下载的 GoogleService-Info.plist 文件,并确保勾选“Copy items if needed”。

xcode_step2

配置Firebase与iOS凭证

为了让Firebase在iOS上使用凭证,必须在应用启动阶段配置Firebase iOS SDK。

为此,打开你的 /ios/{projectName}/AppDelegate.mm 文件,并添加以下内容:

在文件顶部,导入Firebase SDK,紧接在 #import "AppDelegate.h" 之后:

#import <Firebase.h>

然后,在 didFinishLaunchingWithOptions 方法中添加以下内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // 添加我 --- \/
  [FIRApp configure];
  // 添加我 --- /\
  // ...
}

更新Pods

flutter pub get
cd ios/
pod install --repo-update
cd ..
flutter run

一旦成功连接并重建,你的应用将使用 firebase_core Flutter模块连接到Firebase。该模块本身不提供广泛的功能,因此要利用其他Firebase服务,你需要为每个Firebase服务安装单独的模块。

强烈建议

在你的Flutter项目中立即安装Segmentify和Firebase后,建议运行以下命令以确保一切设置正确。 这对于iOS尤为重要:

cd ios/
rm -rf Pods
pod deintegrate
pod install --repo-update
cd ..
flutter clean
flutter pub get
flutter run

这些命令清理并设置了Flutter项目的iOS部分,然后确保所有Flutter依赖项正确获取,应用准备就绪。

集成Segmentify用于推送

FirebaseOptions

首先,你需要创建 FirebaseOptions 以便在Firebase初始化步骤中使用。

import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
    show defaultTargetPlatform, TargetPlatform;

FirebaseOptions get firebaseOptions {
  if (defaultTargetPlatform == TargetPlatform.android) {
    return const FirebaseOptions(
      appId:
          'android_appId', // google-services.json -> client -> client_info -> mobilesdk_app_id
      apiKey:
          'android_apiKey', // google-services.json -> client -> api_key -> current
      projectId:
          'android_projectId', // google-services.json -> project_info -> project_id
      messagingSenderId:
          'android_messagingSenderId', // google-services.json -> project_info -> project_number
    );
  }

  if (defaultTargetPlatform == TargetPlatform.iOS) {
    return const FirebaseOptions(
      appId:
          'ios_appId', // GoogleService-Info.plist -> CLIENT_ID -> REVERSED_CLIENT_ID
      apiKey:
          'ios_apiKey', // GoogleService-Info.plist -> API_KEY -> CURRENT_KEY (or API_KEY)
      projectId:
          'ios_projectId', // GoogleService-Info.plist -> PROJECT_ID (or PROJECT_NUMBER)
      messagingSenderId:
          'ios_messagingSenderId', // GoogleService-Info.plist -> PROJECT_NUMBER (or SENDER_ID)
    );
  }

  throw UnsupportedError('Unsupported platform');
}

Segmentify初始化与推送

Segmentify需要你的 FirebaseFirebase Messaging 实例传递给 SegmentifyInitializer 来自动执行推送流程。

import 'package:segmentify_flutter_sdk/main.dart' as Segmentify;
import 'package:segmentify_flutter_sdk/models/event_types.dart' as SegmentifyTypes;
import 'config.dart';
import 'firebase_options.dart';

void main() async {
  // 初始化Flutter
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Firebase
  await Firebase.initializeApp(options: firebaseOptions);
  // 初始化Segmentify
  messagingCallback(messageData) {
    // 当点击推送通知时调用
    print('回调函数被调用');
    print('消息数据: $messageData');
    print('消息数据正文: ${messageData['body']}');
    print('消息数据标题: ${messageData['title']}');
  }

  FirebaseMessaging messaging = FirebaseMessaging.instance;
  Segmentify.SegmentifyInitializer(
      segmentifyConfig: segmentifyConfig,
      messaging: messaging,
      messagingCallback: messagingCallback);

  runApp(const MyApp());
}

示例应用

Segmentify Demo 应用

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:segmentify_flutter_sdk/main.dart' as Segmentify;
import 'package:segmentify_flutter_sdk/models/event_types.dart'
    as SegmentifyTypes;
import 'config.dart';
import 'firebase_options.dart';

void main() async {
  // 初始化Flutter
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Firebase
  await Firebase.initializeApp(options: firebaseOptions);
  // 初始化Segmentify
  messagingCallback(messageData) {
    // 当点击推送通知时调用
    print('回调函数被调用');
    print('消息数据: $messageData');
    print('消息数据正文: ${messageData['body']}');
    print('消息数据标题: ${messageData['title']}');
  }

  FirebaseMessaging messaging = FirebaseMessaging.instance;
  Segmentify.SegmentifyInitializer(
      segmentifyConfig: segmentifyConfig,
      messaging: messaging,
      messagingCallback: messagingCallback);

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Segmentify Flutter SDK Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() async {
    final segmentifyEvent = await Segmentify.segmentifyEvent();
    final pageViewPayload = SegmentifyTypes.PageViewModel(category: 'Home Page');
    segmentifyEvent.pageView(pageViewPayload);

    final interactionPayload = SegmentifyTypes.InteractionModel(
        type: SegmentifyTypes.InteractionTypes.widgetView,
        interactionId: '1',
        instanceId: '1');
    segmentifyEvent.interaction(interactionPayload);

    final productViewPayload = SegmentifyTypes.ProductViewModel(
        productId: '123',
        title: 'Segmentify Saat',
        price: 129.99,
        url: 'https://www.segmentify.com/saat-123');
    segmentifyEvent.productView(productViewPayload);

    final searchClockPayload = SegmentifyTypes.SearchModel(query: 'saat');
    segmentifyEvent.search(searchClockPayload);

    final searchPayload = SegmentifyTypes.SearchModel(query: '');
    segmentifyEvent.search(searchPayload);

    final basketOperationPayload = SegmentifyTypes.BasketOperationModel(
        step: SegmentifyTypes.BasketOperationSteps.ADD,
        productId: '32652',
        quantity: 1,
        price: 100);
    segmentifyEvent.basketOperation(basketOperationPayload);

    final checkoutPayload = SegmentifyTypes.CheckoutModel(
      step: SegmentifyTypes.CheckoutSteps.PURCHASE,
      totalPrice: 359.99,
      productList: [
        SegmentifyTypes.CheckoutProductModel(
            productId: '32652', price: 100, quantity: 1),
        SegmentifyTypes.CheckoutProductModel(
            productId: '12365', price: 259.99, quantity: 2),
      ],
      orderNo: 'order123',
      currency: SegmentifyTypes.CurrencyTypes.TRY,
    );
    segmentifyEvent.checkout(checkoutPayload);

    final customPayload = SegmentifyTypes.CustomEventModel(
        type: 'Custom Event', params: {'param1': 'param1', 'param2': 'param2'});
    segmentifyEvent.custom(customPayload);

    final userOperationPayload = SegmentifyTypes.UserOperationModel(
        step: SegmentifyTypes.UserOperationSteps.SIGN_UP,
        username: 'John Doe',
        email: 'john@doe.com',
        age: '25');
    segmentifyEvent.userOperation(userOperationPayload);

    final userChangePayload = SegmentifyTypes.UserChangeModel(
        oldUserId: 'oldUserId', userId: 'newUserId');
    segmentifyEvent.userChange(userChangePayload);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              '你已经按下了按钮多少次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter个性化推荐插件segmentify_flutter_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter个性化推荐插件segmentify_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


segmentify_flutter_sdk 是一个用于在 Flutter 应用中集成 Segmentify 个性化推荐功能的插件。Segmentify 是一个强大的个性化推荐引擎,可以帮助你根据用户行为和偏好提供个性化的内容和产品推荐。

以下是如何在 Flutter 项目中使用 segmentify_flutter_sdk 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 segmentify_flutter_sdk 的依赖。

dependencies:
  segmentify_flutter_sdk: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 初始化 SDK

在你的 Flutter 应用中,你需要在应用启动时初始化 segmentify_flutter_sdk。通常可以在 main.dart 文件中进行初始化。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

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

  // 初始化 Segmentify SDK
  await Segmentify.init(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    dataCenterUrl: 'YOUR_DATA_CENTER_URL',  // 替换为你的数据中心 URL
  );

  runApp(MyApp());
}

3. 发送用户事件

你可以使用 Segmentify 来发送用户事件,例如页面浏览、产品查看、添加到购物车等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void sendUserEvent() {
  Segmentify.sendEvent(
    event: Event(
      type: EventType.PAGE_VIEW,
      userId: 'USER_ID',  // 替换为用户 ID
      sessionId: 'SESSION_ID',  // 替换为会话 ID
      pageUrl: 'https://example.com',  // 替换为页面 URL
    ),
  );
}

4. 获取个性化推荐

你可以使用 Segmentify 来获取个性化推荐内容。例如,获取推荐的产品列表。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void getRecommendations() async {
  final response = await Segmentify.getRecommendations(
    recommendationType: RecommendationType.PRODUCT,  // 推荐类型
    userId: 'USER_ID',  // 替换为用户 ID
    sessionId: 'SESSION_ID',  // 替换为会话 ID
  );

  if (response.success) {
    final products = response.data;
    // 处理推荐的产品列表
  } else {
    // 处理错误
  }
}

5. 处理用户交互

你还可以处理用户的交互事件,例如点击推荐产品、添加到购物车等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void handleProductClick(String productId) {
  Segmentify.sendEvent(
    event: Event(
      type: EventType.PRODUCT_CLICK,
      userId: 'USER_ID',  // 替换为用户 ID
      sessionId: 'SESSION_ID',  // 替换为会话 ID
      productId: productId,  // 替换为产品 ID
    ),
  );
}

6. 监听 SDK 事件

你可以监听 SDK 的事件,例如推荐内容加载完成、错误发生等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void listenToSdkEvents() {
  Segmentify.onRecommendationLoaded.listen((response) {
    if (response.success) {
      final products = response.data;
      // 处理推荐的产品列表
    } else {
      // 处理错误
    }
  });

  Segmentify.onError.listen((error) {
    // 处理 SDK 错误
  });
}

7. 处理用户身份

当用户登录或注销时,你需要更新用户的身份信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void updateUserIdentity(String userId) {
  Segmentify.updateUserIdentity(
    userId: userId,  // 替换为用户 ID
  );
}

8. 处理用户属性

你可以设置或更新用户的属性信息,例如姓名、电子邮件、性别等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserAttributes() {
  Segmentify.setUserAttributes(
    attributes: {
      'name': 'John Doe',
      'email': 'john.doe@example.com',
      'gender': 'male',
    },
  );
}

9. 处理用户会话

你可以处理用户的会话信息,例如会话开始、会话结束等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void startSession(String sessionId) {
  Segmentify.startSession(
    sessionId: sessionId,  // 替换为会话 ID
  );
}

void endSession() {
  Segmentify.endSession();
}

10. 处理用户位置

你可以设置或更新用户的位置信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserLocation(double latitude, double longitude) {
  Segmentify.setUserLocation(
    latitude: latitude,
    longitude: longitude,
  );
}

11. 处理用户设备信息

你可以设置或更新用户的设备信息,例如设备类型、操作系统、浏览器等。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserDeviceInfo() {
  Segmentify.setUserDeviceInfo(
    deviceInfo: {
      'deviceType': 'mobile',
      'os': 'android',
      'browser': 'chrome',
    },
  );
}

12. 处理用户语言

你可以设置或更新用户的语言信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserLanguage(String language) {
  Segmentify.setUserLanguage(
    language: language,
  );
}

13. 处理用户时区

你可以设置或更新用户的时区信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserTimezone(String timezone) {
  Segmentify.setUserTimezone(
    timezone: timezone,
  );
}

14. 处理用户 IP 地址

你可以设置或更新用户的 IP 地址信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserIpAddress(String ipAddress) {
  Segmentify.setUserIpAddress(
    ipAddress: ipAddress,
  );
}

15. 处理用户代理

你可以设置或更新用户的代理信息。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserAgent(String userAgent) {
  Segmentify.setUserAgent(
    userAgent: userAgent,
  );
}

16. 处理用户自定义事件

你可以发送自定义事件到 Segmentify。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void sendCustomEvent() {
  Segmentify.sendEvent(
    event: Event(
      type: EventType.CUSTOM,
      userId: 'USER_ID',  // 替换为用户 ID
      sessionId: 'SESSION_ID',  // 替换为会话 ID
      customEventName: 'CUSTOM_EVENT_NAME',  // 替换为自定义事件名称
      customEventData: {
        'key1': 'value1',
        'key2': 'value2',
      },
    ),
  );
}

17. 处理用户自定义属性

你可以设置或更新用户的自定义属性。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserCustomAttributes() {
  Segmentify.setUserCustomAttributes(
    customAttributes: {
      'key1': 'value1',
      'key2': 'value2',
    },
  );
}

18. 处理用户自定义标签

你可以设置或更新用户的自定义标签。

import 'package:segmentify_flutter_sdk/segmentify_flutter_sdk.dart';

void setUserCustomTags() {
  Segmentify.setUserCustomTags(
    customTags: ['tag1', 'tag2'],
  );
}
回到顶部