Flutter智能技术集成插件smartech_flutter_plugin的使用

Flutter智能技术集成插件smartech_flutter_plugin的使用

Logo

Smartech-Flutter-Plugin

Smartech 是一个全渠道平台,提供驱动移动参与和创建有价值的消费者关系所需的一切。Smartech Flutter 插件使您的 Flutter 应用能够使用所有功能。本指南包含将 Smartech Flutter 插件集成到应用所需的所有信息。

开发者文档

要开始使用,请参阅我们的开发者文档以了解如何使用插件跟踪事件和用户属性,如何实现推送通知以及如何展示应用内消息。

开发者文档

支持

如需报告任何与我们的 Flutter 插件相关的错误,请访问此存储库的 GitHub 问题跟踪器


示例代码

以下是完整的示例代码,展示了如何在 Flutter 应用中使用 Smartech 插件:

import 'dart:io';

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:location/location.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:smartech_flutter_plugin/smartech_plugin.dart';
import 'package:url_launcher/url_launcher.dart';

import 'profile_page.dart';
import 'splash_screen.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  if (Platform.isAndroid) {
    await Firebase.initializeApp();
    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  }
  
  // 处理深度链接动作
  SmartechPlugin().handleDeeplinkAction((String? link, Map<dynamic, dynamic>? map, bool? isAfterTerminated) {
    if (link == null || link.isEmpty) {
      return;
    }
    if (link.contains('http')) {
      // 显示对话框并打开链接
      showDialog(
        context: Globle().context,
        builder: (builder) => AlertDialog(
          title: Text(link),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(Globle().context).pop();
                SmartechPlugin().openUrl(link);
              },
              child: Text("确定")
            )
          ],
        )
      );
    } else {
      // 导航到用户配置页面
      Navigator.of(Globle().context).push(MaterialPageRoute(builder: (builder) => ProfilePage()));
    }
  });

  runApp(MyApp());
  getLocation();
}

// 启动 URL
void launchURL(String url) async {
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw '无法启动 $url';
  }
}

// 获取位置信息
getLocation() async {
  Location location = new Location();

  bool _serviceEnabled;
  PermissionStatus _permissionGranted;
  LocationData _locationData;

  _serviceEnabled = await location.serviceEnabled();
  if (!_serviceEnabled) {
    _serviceEnabled = await location.requestService();
    if (!_serviceEnabled) {
      return;
    }
  }

  _permissionGranted = await location.hasPermission();
  if (_permissionGranted == PermissionStatus.denied) {
    _permissionGranted = await location.requestPermission();
    if (_permissionGranted != PermissionStatus.granted) {
      return;
    }
  }
  
  _locationData = await location.getLocation();
}

// 处理后台消息
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  await Firebase.initializeApp();
  SmartechPlugin().handlePushNotification(message.data.toString());
}

// 应用主入口
class MyApp extends StatefulWidget {
  [@override](/user/override)
  State<StatefulWidget> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
  [@override](/user/override)
  void initState() {
    super.initState();

    if (Platform.isAndroid) {
      getToken();
      SmartechPlugin().setInAppCustomHTMLListener(customHTMLCallback);
    }
  }

  [@override](/user/override)
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        print("应用处于活跃状态");
        break;
      case AppLifecycleState.inactive:
        print("应用处于非活跃状态");
        break;
      case AppLifecycleState.paused:
        print("应用处于暂停状态");
        break;
      case AppLifecycleState.detached:
        print("应用处于分离状态");
        break;
    }
  }

  // 自定义 HTML 回调
  Future<void> customHTMLCallback(Map<String, dynamic>? payload) async {
    print(payload);
  }

  // 获取设备令牌
  getToken() async {
    var token = await FirebaseMessaging.instance.getToken();
    print(token);
    if (token != null) {
      var _shp = await SharedPreferences.getInstance();
      var saveToken = _shp.get("token") ?? "";
      if (saveToken != token) {
        _shp.setString(token, "token");
        SmartechPlugin().setDevicePushToken(token);
      }
    }

    FirebaseMessaging.onMessage.listen((event) {
      SmartechPlugin().handlePushNotification(event.data.toString());
    });
    FirebaseMessaging.onMessageOpenedApp.listen((event) {
      SmartechPlugin().handlePushNotification(event.data.toString());
    });
    FirebaseMessaging.instance.getInitialMessage().then((event) {
      if (event != null) {
        SmartechPlugin().handlePushNotification(event.data.toString());
      }
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SplashScreen(),
    );
  }

  [@override](/user/override)
  void dispose() {
    super.dispose();
  }
}

// 全局对象
class Globle {
  static final Globle _singleton = Globle._internal();

  factory Globle() {
    return _singleton;
  }

  Globle._internal();
  late BuildContext context;
}

更多关于Flutter智能技术集成插件smartech_flutter_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter智能技术集成插件smartech_flutter_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


smartech_flutter_plugin 是一个用于在 Flutter 应用中集成 Smartech 智能技术的插件。Smartech 是一个全方位的用户互动和营销自动化平台,通过集成该插件,你可以在 Flutter 应用中实现推送通知、应用内消息、用户行为跟踪等功能。

安装 smartech_flutter_plugin

首先,你需要在 pubspec.yaml 文件中添加 smartech_flutter_plugin 依赖:

dependencies:
  flutter:
    sdk: flutter
  smartech_flutter_plugin: ^latest_version

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

初始化 Smartech

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

import 'package:flutter/material.dart';
import 'package:smartech_flutter_plugin/smartech_flutter_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Smartech
  await SmartechFlutterPlugin.initSmartech();
  
  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(),
    );
  }
}

用户登录和跟踪

Smartech 允许你通过用户 ID 来跟踪用户行为。当用户登录时,你可以调用 login 方法来关联用户 ID:

SmartechFlutterPlugin.login("user_id");

当用户注销时,你可以调用 logout 方法来清除用户关联:

SmartechFlutterPlugin.logout();

跟踪用户事件

你可以使用 trackEvent 方法来跟踪用户的特定事件:

SmartechFlutterPlugin.trackEvent("event_name", {"param1": "value1", "param2": "value2"});

推送通知

Smartech 支持推送通知功能。你可以在应用启动时请求用户权限:

SmartechFlutterPlugin.registerForPushNotifications();

当收到推送通知时,你可以通过监听通知事件来处理通知:

SmartechFlutterPlugin.setOnPushNotificationClickListener((Map<String, dynamic> notification) {
  print("Push Notification Clicked: $notification");
});

应用内消息

Smartech 还支持应用内消息功能。你可以在特定场景下触发应用内消息:

SmartechFlutterPlugin.showInAppMessage("message_id");

调试

你可以启用 Smartech 的调试模式来查看详细的日志信息:

SmartechFlutterPlugin.setDebugLevel(SmartechDebugLevel.verbose);

完整示例

以下是一个完整的示例,展示了如何在 Flutter 应用中集成和使用 smartech_flutter_plugin

import 'package:flutter/material.dart';
import 'package:smartech_flutter_plugin/smartech_flutter_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Smartech
  await SmartechFlutterPlugin.initSmartech();
  
  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> {
  [@override](/user/override)
  void initState() {
    super.initState();
    
    // 请求推送通知权限
    SmartechFlutterPlugin.registerForPushNotifications();
    
    // 监听推送通知点击事件
    SmartechFlutterPlugin.setOnPushNotificationClickListener((Map<String, dynamic> notification) {
      print("Push Notification Clicked: $notification");
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Smartech Demo"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                // 用户登录
                SmartechFlutterPlugin.login("user123");
              },
              child: Text("Login"),
            ),
            ElevatedButton(
              onPressed: () {
                // 用户注销
                SmartechFlutterPlugin.logout();
              },
              child: Text("Logout"),
            ),
            ElevatedButton(
              onPressed: () {
                // 跟踪用户事件
                SmartechFlutterPlugin.trackEvent("button_clicked", {"button_name": "Track Event"});
              },
              child: Text("Track Event"),
            ),
            ElevatedButton(
              onPressed: () {
                // 显示应用内消息
                SmartechFlutterPlugin.showInAppMessage("welcome_message");
              },
              child: Text("Show In-App Message"),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部