Flutter集成Promise功能插件promize_sdk的使用

Flutter集成Promise功能插件promize_sdk的使用

Promize SDK 是一个数据收集SDK,提供了简单的方法来收集用户的数据和兴趣。

概述

App SDK 提供了发送事务性消息和触发事件的方法。其他方法帮助你保存有关人员的信息、最常访问的页面和事件。

开始使用

首先,在 Promize控制台 注册账户。

然后在你的 pubspec.yaml 文件中添加 promize_sdk 依赖:

dependencies:
  promize_sdk: ^latest_version

确保升级你的 Dart SDK 到 >=2.12.4:

sdk: ">=2.12.4 <4.0.0"

此外,该SDK使用了FCM,你需要在项目中设置Firebase。请参阅 文档 获取更多信息。

初始化

初始化SDK时需要调用 initialize 方法:

final _promizeSdkPlugin = PromizeSdk.instance;

@override
void initState() {
  super.initState();
  WidgetsBinding.instance.addPostFrameCallback((_) async {
    await _promizeSdkPlugin.initialize(
      apiKey: 'your_api_key',
      siteId: 'your_site_id',
      baseUrl: 'your_base_url',
      pushEnabled: true, // 是否接收通知
      appVersion: 'your_app_version', // 可选参数
    );
  });
}

身份验证

登录或注册用户时需要添加用户信息:

final user = User(
  name: "name",
  email: "mail@gmail.com",
  userId: "44",
  data: {
    "type": "user",
    "premium": true,
  },
);

_promizeSdkPlugin.createUser(user: user);

更新用户信息

你可以通过以下方式更新用户信息:

_promizeSdkPlugin.updateUser(user: user);

更新设备令牌

为了使用Firebase Cloud Messaging,你需要在 onTokenChangedCallback 中调用 updateDeviceToken 方法:

messaging.onTokenRefresh.listen((newToken) {
  _promizeSdkPlugin.updateDeviceToken(
    deviceToken: newToken,
  );
});

保存设备令牌

你也可以通过调用 saveDeviceToken 方法来保存设备令牌:

_promizeSdkPlugin.saveDeviceToken(
  deviceToken: "your_device_token",
);

登出

当用户从应用中登出时,需要调用 logout 方法以清除用户数据:

_promizeSdkPlugin.logout();

添加事件

在注册用户后,可以在应用的任何地方添加事件,只需调用 addEvent 并传递所需的所有参数:

_promizeSdkPlugin.addEvent(
  eventName: "test Event",
  eventType: EventType.event,
  eventData: {"first_collectd": "data"},
);

通知跟踪

如果你想跟踪系统发送的通知活动,需要在通知点击回调中调用 trackNotificationActivity 方法:

在后台接收通知

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  final _promizeSdkPlugin = PromizeSdk.instance;
  await _promizeSdkPlugin.initialize(
    apiKey: '{your-api-key}',
    siteId: '{your-site-id}',
    baseUrl: '{your-base-url}',
    pushEnabled: true,
    appVersion: '0.0.1',
  );
  _promizeSdkPlugin.trackNotificationActivity(
    activityType: NotificationAction.received,
    data: message.data,
  );
}

在前台接收通知

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  _promizeSdkPlugin.trackNotificationActivity(
    activityType: NotificationAction.received,
    data: message.data,
  );

  if (message.notification != null) {
    print('Message also contained a notification: ${message.notification?.title ?? ''} - ${message.notification?.body ?? ''}');
  }
  Alert.instance.showNotification(
    context,
    message.notification?.title,
    message.notification?.body,
    () {
      _promizeSdkPlugin.trackNotificationActivity(
        activityType: NotificationAction.clicked,
        data: message.data,
      );
    },
  );
});

当通知点击且应用在后台时

FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
  _promizeSdkPlugin.trackNotificationActivity(
    activityType: NotificationAction.clicked,
    data: message.data,
  );
});

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

1 回复

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


在Flutter中集成Promise功能可以通过使用promize_sdk插件来实现。promize_sdk是一个用于在Flutter中处理异步操作的插件,它允许你使用类似于JavaScript中的Promise来处理异步任务。以下是集成和使用promize_sdk插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  promize_sdk: ^1.0.0  # 请根据实际情况使用最新版本

然后运行flutter pub get来获取依赖。

2. 导入包

在需要使用promize_sdk的地方导入包:

import 'package:promize_sdk/promize_sdk.dart';

3. 使用Promise

promize_sdk提供了Promise类来处理异步操作。以下是一个简单的示例,展示了如何使用Promise来处理异步任务:

void main() {
  // 创建一个Promise
  Promise<String> promise = Promise((resolve, reject) {
    // 模拟一个异步操作
    Future.delayed(Duration(seconds: 2), () {
      bool success = true; // 模拟操作是否成功
      if (success) {
        resolve("Operation succeeded!");
      } else {
        reject("Operation failed!");
      }
    });
  });

  // 处理Promise的结果
  promise.then((value) {
    print("Success: $value");
  }).catchError((error) {
    print("Error: $error");
  });
}

4. Promise链式调用

Promise支持链式调用,你可以通过then方法将多个异步操作串联起来:

void main() {
  Promise<String> promise = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 2), () {
      resolve("First operation succeeded!");
    });
  });

  promise
      .then((value) {
        print("Success: $value");
        return "Second operation succeeded!";
      })
      .then((value) {
        print("Success: $value");
      })
      .catchError((error) {
        print("Error: $error");
      });
}

5. 错误处理

你可以使用catchError方法来捕获和处理Promise中的错误:

void main() {
  Promise<String> promise = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 2), () {
      reject("Operation failed!");
    });
  });

  promise
      .then((value) {
        print("Success: $value");
      })
      .catchError((error) {
        print("Error: $error");
      });
}

6. 使用Promise.all

promize_sdk还提供了Promise.all方法,用于处理多个Promise的并发执行:

void main() {
  Promise<String> promise1 = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 2), () {
      resolve("Operation 1 succeeded!");
    });
  });

  Promise<String> promise2 = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 3), () {
      resolve("Operation 2 succeeded!");
    });
  });

  Promise.all([promise1, promise2]).then((values) {
    print("All operations succeeded: $values");
  }).catchError((error) {
    print("Error: $error");
  });
}

7. 使用Promise.race

Promise.race方法用于处理多个Promise的竞态执行,返回最先完成的Promise的结果:

void main() {
  Promise<String> promise1 = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 2), () {
      resolve("Operation 1 succeeded!");
    });
  });

  Promise<String> promise2 = Promise((resolve, reject) {
    Future.delayed(Duration(seconds: 1), () {
      resolve("Operation 2 succeeded!");
    });
  });

  Promise.race([promise1, promise2]).then((value) {
    print("First operation completed: $value");
  }).catchError((error) {
    print("Error: $error");
  });
}
回到顶部