Flutter集成Blaze平台功能插件blaze_sdk_flutter的使用

Flutter集成Blaze平台功能插件blaze_sdk_flutter的使用

Blaze SDK Flutter 是一个易于使用的工具包,可让您轻松地将 Breeze 1 Click Checkout 及其服务集成到您的 Android 应用程序中。

Flutter SDK 集成

以下是将 Blaze SDK 集成到您的 Android 应用程序中的步骤:

Step 1: 获取 Blaze SDK

1.1 添加 Blaze SDK 依赖项到 pubspec.yaml 文件

运行以下命令以将 blaze_sdk_flutter 作为依赖项添加到您的 Flutter 项目中:

flutter pub add blaze_sdk_flutter

1.2 在项目的 android/build.gradle 文件中包含 SDK 解析的存储库

在项目的 android/build.gradle 文件中添加以下行:

allprojects {
    repositories {
        google()
        mavenCentral()
        // 添加此行
        maven { url "https://jitpack.io" }
    }
}

Step 2: 初始化 SDK

2.1 在应用程序类中导入 Blaze SDK 包

import 'package:blaze_sdk_flutter/blaze_sdk_flutter.dart';

2.2 在应用程序类中创建 BlazeSdkFlutter 类的实例

final _blaze = BlazeSdkFlutter();

2.3 初始化 Blaze 实例

最好在结账页面打开或应用启动时初始化 Blaze。

2.2.1 构造初始化负载

创建一个带有正确参数的 JSON 来初始化 SDK。这是用于初始化 SDK 的数据。

// 创建初始化数据的 JSONObject
Map<String, dynamic> createInitiatePayload() {
  return {
    "merchantId": "<MERCHANT_ID>",
    "environment": "<ENVIRONMENT>",
    "shopUrl": "<SHOP_URL>"
  };
}

// 将初始化负载放入 SDK 负载
Map<String, dynamic> createSDKPayload(Map<String, dynamic> payload) {
  return {
    "requestId": "randomId",
    "service": "in.breeze.onecco",
    "payload": payload
  };
}

var initiatePayload = createSDKPayload(createInitiatePayload());

注意:从 Breeze 团队获取 <MERCHANT_ID><ENVIRONMENT><SHOP_URL> 的值。

参考架构以了解键的含义。

2.2.2 构造回调方法

在用户旅程期间,SDK 将调用带有 SDK 操作结果的回调方法。您需要实现此方法以处理 SDK 操作的结果。

void handleCallbackEvent(Map<String, dynamic> callbackEvent) {
  print("Callback Event: $callbackEvent");
}
2.2.3 在 Blaze 实例上调用初始化方法

最后,在 Blaze 实例上调用初始化方法,传入负载和回调方法。第一个参数是应用程序的上下文。

_blaze.initiate(initiatePayload, handleCallbackEvent);

Step 3: 开始处理请求

一旦 SDK 初始化完成,您可以开始使用已初始化的 SDK 实例来处理请求。SDK 将通过回调方法返回操作结果。

3.1 构造处理负载

创建一个带有所需参数的 JSON 负载来处理请求。处理负载因请求而异。

// 创建 SDK 处理负载
// 创建处理数据的 JSONObject
Map<String, dynamic> createProcessPayload() {
  return {
    "action": "<ACTION>",
    // 其他键...
  };
}

var processPayload = createSDKPayload(createProcessPayload());

3.2 在 Blaze 实例上调用处理方法

调用 Blaze 实例上的处理方法,传入处理负载以开始用户旅程或无头流。

_blaze.process(processSDKPayload);

完整示例代码

以下是完整的示例代码,展示了如何使用 blaze_sdk_flutter 插件:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:blaze_sdk_flutter/blaze_sdk_flutter.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) {}
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _blazeSdkFlutterPlugin = BlazeSdkFlutter();

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

  // 平台消息是异步的,因此我们在异步方法中进行初始化。
  Future<void> initPlatformState() async {
    if (!mounted) return;
    setState(() {});
  }

  Map<String, dynamic> createSDKPayload(Map<String, dynamic> payload) {
    return {
      "requestId": "randomId",
      "service": "in.breeze.onecco",
      "payload": payload
    };
  }

  Map<String, dynamic> createInitiatePayload() {
    return {
      "merchantId": "d2cstorebeta",
      "environment": "beta",
      "shopUrl": "https://d2cstore-custom.vercel.app"
    };
  }

  void handleCallbackEvent(Map<String, dynamic> callbackEvent) {
    print("Callback Event: $callbackEvent");
  }

  Map<String, dynamic> createProcessPayload() {
    return {
      "action": "startCheckout",
      "cart": "{\"id\":\"7feaa429-308d-49b7-8461-46bfa4b37ff7\",\"items\":[{\"id\":\"3aecf419-6823-4581-a093-0c90c5b5e1fc\",\"title\":\"Apple iPhone 7 Plus\",\"variantTitle\":\"256 GB / GOLD\",\"image\":\"https://dfelk5npz6ka0.cloudfront.net/products/40767940985052.jpg\",\"quantity\":1,\"initialPrice\":100,\"finalPrice\":100,\"discount\":0}],\"initialPrice\":100,\"totalPrice\":100,\"totalDiscount\":0,\"itemCount\":1,\"currency\":\"INR\"}",
      "signature": "T4BRKwHKWfkWRLgF5ecss2+2tyID4zKVUqkfEgdFS73lyAokBq92VJRz4g+xzCcUE84ZNl7oQ9t26i8zGQLgh/B/6vNliM9u7VMX0soYDC9pEWd4TsWeetlYMzl/UIzitYan5q9aQ2UfS7HENHQGvGfOjsa75gP3SVwpufK8Sb1VFRFsnJKsXzgWq+y9iWLieJe596poEzUP2Wkt17mSGwH9rWukTy5S1ddZoZXUxDQiMtfXFj9NOnPDUA8psmERifivaD8IvhMEYwlEk+u6MrxF7IhasBs8dYGEZW+YDeaRz6mzK37sarYWgCUJgEYTJ97rmcRedgvnj+28YES/pw==",
      "keyId": "90701"
    };
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Blaze Integration Sample!'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () {
                  _blazeSdkFlutterPlugin.initiate(
                      createSDKPayload(createInitiatePayload()),
                      handleCallbackEvent);
                },
                child: const Text('Initiate SDK'),
              ),
              ElevatedButton(
                onPressed: () {
                  _blazeSdkFlutterPlugin
                      .process(createSDKPayload(createProcessPayload()));
                },
                child: const Text('Process'),
              ),
              ElevatedButton(
                onPressed: () {
                  _blazeSdkFlutterPlugin.terminate();
                },
                child: const Text('Terminate'),
              )
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


要在Flutter项目中集成Blaze平台的功能插件 blaze_sdk_flutter,你需要按照以下步骤进行操作:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 blaze_sdk_flutter 的依赖。

dependencies:
  flutter:
    sdk: flutter
  blaze_sdk_flutter: ^1.0.0  # 请使用最新版本

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

2. 初始化 SDK

在你的 Flutter 项目中的 main.dart 文件中初始化 blaze_sdk_flutter

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Blaze SDK
  await BlazeSdkFlutter.initialize(
    apiKey: 'YOUR_API_KEY',
    environment: BlazeEnvironment.sandbox, // 或者 BlazeEnvironment.production
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

3. 使用 Blaze SDK 功能

你可以在你的应用中使用 BlazeSdkFlutter 提供的各种功能。例如,调用一个 API 或执行某些操作。

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Blaze SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 调用 Blaze SDK 的某个功能
            try {
              var result = await BlazeSdkFlutter.someFunction();
              print('Result: $result');
            } catch (e) {
              print('Error: $e');
            }
          },
          child: Text('Call Blaze SDK'),
        ),
      ),
    );
  }
}

4. 处理平台特定的配置

根据 Blaze SDK 的要求,你可能需要在 AndroidiOS 项目中做一些额外的配置。

Android

android/app/build.gradle 文件中,确保 minSdkVersion 符合 Blaze SDK 的要求。

android {
    defaultConfig {
        minSdkVersion 21
        // 其他配置
    }
}

iOS

ios/Podfile 文件中,确保 platform 版本符合 Blaze SDK 的要求。

platform :ios, '11.0'

然后在 ios/Runner/Info.plist 文件中添加必要的权限或配置。

5. 运行你的应用

完成上述步骤后,运行你的 Flutter 应用:

flutter run
回到顶部