Flutter插件sdxfluttersdk的使用方法详解

Flutter插件sdxfluttersdk的使用方法详解

sdxfluttersdk

品牌通常通过多种离线和在线沟通触点与用户互动,并在这些触点上使用不同的身份标识。SmartDx分析是一项增值服务,用于跟踪和报告网站及原生应用的流量和行为。将SmartDx分析模块集成到应用中可以启用一系列服务,例如用户旅程报告、客户数据增强以及创建或触发活动。生成分析服务涉及使用软件开发套件(SDK)进行数据捕获。SmartDx应用生成SDK代码片段并将其嵌入到网站和移动应用的目标着陆页面中。

SmartDX SDK with Flutter允许集成推送通知服务,并通过Flutter应用捕获与分析相关的数据,支持Android和iOS平台。该SDK在不同的跨平台应用中工作,并通过特定识别为iOS或Android的API调用,在两个平台上提供相同代码的支持。

文档介绍了SmartDx SDK与Flutter的基础知识。


使用示例

以下是一个完整的示例,展示如何使用SDXFlutterSDK插件来实现用户注册、推送通知管理、事件追踪等功能。

示例代码

// example/lib/main.dart

import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart' if (dart.library.io) 'package:firebase_messaging/firebase_messaging.dart';
import 'package:firebase_core/firebase_core.dart' if (dart.library.io) 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';
import 'package:sdxfluttersdk/refluttersdk.dart';

void main() async {
  if (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS) {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
  }
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SDXFlutterSDK-Example',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

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

final _refluttersdkPlugin = Refluttersdk();

method() async {
  _refluttersdkPlugin.unReadNotification("CampaignId");
}

class _MyHomePageState extends State<MyHomePage> {
  var token;
  StreamSubscription<String>? streamSubscription;

  [@override](/user/override)
  void initState() {
    super.initState();
    if (kIsWeb) {
      _refluttersdkPlugin.initWebSDK("./sw.js");
    }
    if (defaultTargetPlatform == TargetPlatform.android || defaultTargetPlatform == TargetPlatform.iOS) {
      _getFcmToken();
    }
    if (defaultTargetPlatform == TargetPlatform.android) {
      deeplinkListener();
    } else {
      getDeeplinkData();
    }
  }

  deeplinkListener() {
    streamSubscription = _refluttersdkPlugin.listenDeeplinkData().listen((data) async {
      try {
        debugPrint('DeepLink Listener :: $data');
        var deeplinkData = jsonDecode(data);
        var customParams = deeplinkData['customParams'];
        _refluttersdkPlugin.deepLinkDataReset();
        if (customParams != null) {
          screenNavigator(jsonDecode(customParams)['screenName'], jsonDecode(customParams)['data']);
        }
      } catch (e) {
        debugPrint('$e');
      }
    });
  }

  getDeeplinkData() {
    _refluttersdkPlugin.listener((data) {
      debugPrint("Deeplink Data :: $data");
      var deeplinkData = jsonDecode(data);
      var customParams = deeplinkData['customParams'];
      _refluttersdkPlugin.deepLinkDataReset();
      if (customParams != null) {
        screenNavigator(jsonDecode(customParams)['screenName'], jsonDecode(customParams)['data']);
      }
    });
  }

  screenNavigator(var screenName, var data) {
    switch (screenName) {
      case "CareerPage":
        if (data != null) {}
        else {
          Navigator.push(context, MaterialPageRoute(builder: (context) => const Page1()));
        }
        break;
      case "CertificationPage":
        if (data != null) {}
        else {
          Navigator.push(context, MaterialPageRoute(builder: (context) => const Page2()));
        }
        break;
      case "Page3":
        if (data != null) {}
        else {
          Navigator.push(context, MaterialPageRoute(builder: (context) => const Page3()));
        }
        break;
      default:
        debugPrint("ScreenName is not defined!!!");
    }
  }

  Future<void> _getFcmToken() async {
    FirebaseMessaging messaging = FirebaseMessaging.instance;
    messaging.getToken().then((value) {
      debugPrint('Fcm Token: $value');
      setState(() {
        token = value;
      });
    });
  }

  passLocation() {
    double lat = 13.0827;
    double lang = 80.2707;
    _refluttersdkPlugin.locationUpdate(lat, lang);
  }

  customEvent() {
    var event = "On Track Event called!!!";
    _refluttersdkPlugin.customEvent(event);
  }

  customEventwithData() {
    if (kIsWeb) {
      var data = {'eventName': 'Website Opened', 'eventData': 'Viewed Groceries', 'pId': 123};
      _refluttersdkPlugin.customEventWithData(data);
    } else {
      var eventData = {"name": "payment", "data": {"id": "6744", "price": "477"}};
      _refluttersdkPlugin.customEventWithData(eventData);
    }
  }

  deleteNotificationByCampaignid(campaignId) {
    _refluttersdkPlugin.deleteNotificationByCampaignId(campaignId);
  }

  readnotification(campaignId) {
    _refluttersdkPlugin.readNotification(campaignId);
  }

  unreadNotification(campaignId) {
    _refluttersdkPlugin.unReadNotification(campaignId);
  }

  appconversionTracking() {
    _refluttersdkPlugin.appConversion();
  }

  appconversionTrackingWithData() {
    Map appConversionData = {"name": "xyrr", "data": {"age": "23", "city": "yyy"}};
    _refluttersdkPlugin.appConversionWithData(appConversionData);
  }

  formdataCapture() {
    Map formData = {
      "Name": "vishwa",
      "EmailID": "abc@gmail.com",
      "MobileNo": 9329333,
      "Gender": "Male",
      "formid": 101,
      "apikey": "b78db6rb3-9462-4132-a4d3-894db10b3782",
      "City": "Chennai"
    };
    _refluttersdkPlugin.formDataCapture(formData);
  }

  updatepushToken(fcmToken) {
    _refluttersdkPlugin.updatePushToken(fcmToken);
  }

  notificationCTAClick(String campaignId, int actionId) {
    _refluttersdkPlugin.notificationCTAClicked(campaignId, actionId);
  }

  sdkRegisteration() {
    if (kIsWeb) {
      Map userData = {
        "userUniqueId": "visionuser@email.com",
        "name": "<name>",
        "age": "<age>",
        "email": "<email>",
        "phone": "<phone>",
        "gender": "<gender>",
        "profileUrl": "<profileUrl>",
        "dateOfBirth": "<dob>",
      };
      _refluttersdkPlugin.sdkRegisteration(userData);
    } else {
      Map userData = {
        "userUniqueId": "abc@gmail.com",
        "name": "kkkkk",
        "age": "23",
        "email": "abc@gmail.com",
        "phone": "12334455",
        "gender": "Male",
        "profileUrl": "",
        "dob": "23/12/2010",
        "education": "BE",
        "employed": "true",
        "married": "false",
        "deviceToken": token,
        "storeId": "555"
      };
      _refluttersdkPlugin.sdkRegisteration(userData);
    }
  }

  readnotificationCount() async {
    var rnCount = await _refluttersdkPlugin.getReadNotificationCount();
    if (kDebugMode) {
      debugPrint("readNotificationCount::$rnCount");
    }
  }

  unReadnotificationCount() async {
    var unreadCount = await _refluttersdkPlugin.getUnReadNotificationCount();
    debugPrint("unReadNotificationCount::$unreadCount");
  }

  getNotificationList() async {
    var notificationList = await _refluttersdkPlugin.getNotificationList();
    debugPrint("GetNotificationList::$notificationList");
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('SDXFlutterSDK', style: TextStyle(fontWeight: FontWeight.bold)),
      ),
      body: SingleChildScrollView(
        child: ConstrainedBox(
          constraints: const BoxConstraints(),
          child: Container(
            child: Column(
              children: [
                ElevatedButton(
                  onPressed: () {
                    sdkRegisteration();
                  },
                  child: const Text("On Device User Register"),
                ),
                ElevatedButton(
                  onPressed: () {
                    updatepushToken(token);
                  },
                  child: const Text("update Push Token"),
                ),
                ElevatedButton(
                  onPressed: () {
                    passLocation();
                  },
                  child: const Text("Update Location"),
                ),
                ElevatedButton(
                  onPressed: () {
                    readnotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124");
                  },
                  child: const Text("Read Notification By Id"),
                ),
                ElevatedButton(
                  onPressed: () {
                    unreadNotification("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124");
                  },
                  child: const Text("UnRead Notification BY Id"),
                ),
                ElevatedButton(
                  onPressed: () {
                    getNotificationList();
                  },
                  child: const Text("Get Notification List"),
                ),
                ElevatedButton(
                  onPressed: () {
                    readnotificationCount();
                  },
                  child: const Text("Read Notification Count"),
                ),
                ElevatedButton(
                  onPressed: () {
                    unReadnotificationCount();
                  },
                  child: const Text("Un_Read_Notification_Count"),
                ),
                ElevatedButton(
                  onPressed: () {
                    deleteNotificationByCampaignid("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124");
                  },
                  child: const Text("Delete Notification By CampaignId"),
                ),
                ElevatedButton(
                  onPressed: () {
                    formdataCapture();
                  },
                  child: const Text("form Data Capture"),
                ),
                ElevatedButton(
                  onPressed: () {
                    customEvent();
                  },
                  child: const Text("customEvent"),
                ),
                ElevatedButton(
                  onPressed: () {
                    customEventwithData();
                  },
                  child: const Text("customEventwithData"),
                ),
                ElevatedButton(
                  onPressed: () {
                    appconversionTracking();
                  },
                  child: const Text("app Conversion Tracking"),
                ),
                ElevatedButton(
                  onPressed: () {
                    appconversionTrackingWithData();
                  },
                  child: const Text("App Conversion Tracking WithData"),
                ),
                ElevatedButton(
                  onPressed: () {
                    notificationCTAClick("w39|G|qqD|iF|DEA5Q|430404|Bulk|20230418060124", 4833);
                  },
                  child: const Text("NotificationCTA clicked"),
                ),
                ElevatedButton(
                  onPressed: () {
                    WidgetsBinding.instance.addPostFrameCallback((_) {
                      _refluttersdkPlugin.screentracking("page1");
                    });
                    Navigator.push(context, MaterialPageRoute(builder: (context) => const Page1()));
                  },
                  child: const Text("Page-1"),
                ),
                ElevatedButton(
                  onPressed: () {
                    WidgetsBinding.instance.addPostFrameCallback((_) {
                      _refluttersdkPlugin.screentracking("page2");
                    });
                    Navigator.push(context, MaterialPageRoute(builder: (context) => const Page2()));
                  },
                  child: const Text("Page-2"),
                ),
                ElevatedButton(
                  onPressed: () {
                    WidgetsBinding.instance.addPostFrameCallback((_) {
                      _refluttersdkPlugin.screentracking("page3");
                    });
                    Navigator.push(context, MaterialPageRoute(builder: (context) => const Page3()));
                  },
                  child: const Text("Page-3"),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: const Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Page1'),
          ],
        ),
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: const Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Page2'),
          ],
        ),
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: const Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Page3'),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter插件sdxfluttersdk的使用方法详解的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件sdxfluttersdk的使用方法详解的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


SDXFlutterSDK 是一个可能用于与特定服务或功能集成的 Flutter 插件。由于“SDXFlutterSDK”并不是一个广泛知名或官方维护的插件,因此具体的使用方法和功能可能会根据插件的实现和用途有所不同。以下是一些通用的步骤和指南,帮助你探索和使用未知的 Flutter 插件。

1. 查找插件的文档

首先,尝试查找插件的官方文档或 GitHub 仓库。通常,插件的 README 文件会提供安装步骤、基本用法和示例代码。

  • GitHub: 搜索 SDXFlutterSDK,看看是否有相关的开源项目。
  • Pub.dev: 在 pub.dev 上搜索插件,查看是否有详细的使用说明。

2. 安装插件

pubspec.yaml 文件中添加插件的依赖项。例如:

dependencies:
  sdxfluttersdk: ^版本号

然后运行 flutter pub get 来安装插件。

3. 导入插件

在你的 Dart 文件中导入插件:

import 'package:sdxfluttersdk/sdxfluttersdk.dart';

4. 初始化插件

某些插件需要在使用前进行初始化。查看文档是否有相关说明:

SDXFlutterSDK.initialize(apiKey: 'your_api_key');

5. 使用插件功能

根据插件的功能,调用相应的方法。例如,如果插件提供了数据获取功能,可以这样使用:

var data = await SDXFlutterSDK.fetchData();
print(data);

6. 处理错误和异常

在使用插件时,确保处理可能出现的错误和异常:

try {
  var data = await SDXFlutterSDK.fetchData();
  print(data);
} catch (e) {
  print('Error: $e');
}

7. 调试和日志

如果插件提供了日志或调试功能,启用它们以帮助诊断问题:

SDXFlutterSDK.setDebugMode(true);
回到顶部