Flutter集成AppBoxo服务插件appboxo_sdk的使用

Flutter集成AppBoxo服务插件appboxo_sdk的使用

一个用于在iOS和Android上集成AppBoxo的Flutter插件。

使用方法

import 'package:appboxo_sdk/appboxo_sdk.dart';

Appboxo.setConfig("[client_id]"); // 设置你的AppBoxo client_id

Appboxo.setConfig("[client_id]", sandboxMode: false, multitaskMode: false);
// 'multitaskMode'仅适用于Android,默认为true,每个小程序都会出现在最近的任务列表中。

Appboxo.openMiniapp("[miniapp_id]", data, theme); 
// 通过ID启动小程序。[data]是一个map,theme可以是 "light" | "dark" | "system"

Appboxo.hideAllMiniapps(); // 使用此方法关闭所有小程序屏幕

Appboxo.logout(); // 在从应用中注销时调用此方法以清除所有小程序数据。

示例代码

Appboxo.openMiniapp("[miniapp_id]", "[data]");

使用此方法可以在启动小程序时传递数据。

自定义事件

处理来自小程序的事件并发送到小程序。

Appboxo.customEvents().listen((CustomEvent event) {
  if (event.appId == 'app12345') {
    event.payload = {"foo": "bar"};
    Appboxo.sendEvent(event);
  }
});

支付事件

处理来自小程序的支付事件并发送到小程序。

Appboxo.paymentEvents().listen((PaymentEvent event) {
  if (event.appId == 'app12345') {
    event.status = "success";
    Appboxo.sendPaymentEvent(event);
  }
});

Android 配置

需要AndroidX支持。在android/gradle.properties文件中添加以下配置:

android.useAndroidX=true
android.enableJetifier=true

完整示例代码

import 'package:flutter/material.dart';
import 'package:appboxo_sdk/appboxo_sdk.dart';
import 'package:fluttertoast/fluttertoast.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Future<void> Function()? subscription;

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

  [@override](/user/override)
  void initState() {
    super.initState();
    Appboxo.setConfig("602248",
        userId: "24", multitaskMode: true, theme: 'light');
    // 'multitaskMode'仅适用于Android,默认为true,每个小程序都会出现在最近的任务列表中。
    Appboxo.customEvents().listen((CustomEvent event) {
      print(event.toJson().toString());
      Fluttertoast.showToast(
        msg: event.payload["message"] ?? event.type,
        toastLength: Toast.LENGTH_SHORT,
        timeInSecForIosWeb: 1,
        backgroundColor: Colors.black,
        textColor: Colors.white,
        fontSize: 16.0,
      );
      Appboxo.sendEvent(event);
    });
    Appboxo.paymentEvents().listen((event) {
      event.status = "success";
      Appboxo.sendPaymentEvent(event);
    });

    Appboxo.miniapps().listen((result) {
      print('miniapps - ${result.miniapps.toString()}');
      result.miniapps?.forEach((data) => print(data.name));
      print('error - ${result.error}');
    });
    Appboxo.getMiniapps();

    subscription = Appboxo.lifecycleHooksListener(
      onAuth: (appId) {
        print(appId);
        print('onAuth');
      },
      onLaunch: (appId) {
        print(appId);
        print('onLaunch');
      },
      onResume: (appId) {
        print(appId);
        print('onResume');
      },
      onPause: (appId) {
        print(appId);
        print('onPause');
      },
      onClose: (appId) {
        print(appId);
        print('onClose');
      },
      onError: (appId, error) {
        print(appId);
        print(error);
        print('onError');
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Appboxo SDK 测试'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              Appboxo.openMiniapp("app16973",
                  data: {'title': '标题'},
                  extraUrlParams: {'key': 'value'},
                  colors: {
                    'primary_color': '#000000',
                    'secondary_color': '#0000FF',
                    'tertiary_color': '#00FF00'
                  },
                  enableSplash: false);
            },
            child: const Text(
              '运行小程序',
              style: TextStyle(
                color: Colors.white,
                fontSize: 16,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成并使用appboxo_sdk插件的示例代码。这个示例假设你已经有一个Flutter项目,并且已经配置好了基本的开发环境。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  appboxo_sdk: ^最新版本号  # 请替换为实际的最新版本号

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

2. 初始化AppBoxo SDK

在你的Flutter项目的入口文件(通常是main.dart)中,你需要初始化AppBoxo SDK。你需要提供你的AppBoxo应用的API密钥。

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

void main() {
  // 初始化AppBoxo SDK
  AppBoxo.initialize(apiKey: '你的AppBoxo API密钥');

  runApp(MyApp());
}

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter AppBoxo Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showAppBoxo,
          child: Text('Show AppBoxo'),
        ),
      ),
    );
  }

  void _showAppBoxo() {
    // 显示AppBoxo界面
    AppBoxo.show(
      context: context,
      userId: '用户ID', // 可选,用于标识当前用户
      customData: {
        'key1': 'value1',
        'key2': 'value2',
      }, // 可选,用于传递自定义数据给AppBoxo
    );
  }
}

3. 处理回调(可选)

你可以处理AppBoxo事件回调,比如用户完成某个动作后。这通常用于更新UI或执行其他逻辑。

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

void main() {
  // 初始化AppBoxo SDK并设置回调
  AppBoxo.initialize(
    apiKey: '你的AppBoxo API密钥',
    onEvent: (event) {
      // 处理AppBoxo事件回调
      print('Received event from AppBoxo: $event');
    },
  );

  runApp(MyApp());
}

// ... (MyApp, MyHomePage, 和 _MyHomePageState 的代码保持不变)

4. 处理生命周期事件(可选)

如果你需要在应用的生命周期事件中执行特定的逻辑,比如当用户离开应用时暂停AppBoxo SDK,你可以在AppLifecycleState监听器中实现。

class _MyHomePageState extends State<MyHomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance!.addObserver(this);
  }

  @override
  void dispose() {
    WidgetsBinding.instance!.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    if (state == AppLifecycleState.paused) {
      // 应用进入后台时暂停AppBoxo SDK(如果需要)
      AppBoxo.pause();
    } else if (state == AppLifecycleState.resumed) {
      // 应用回到前台时恢复AppBoxo SDK(如果需要)
      AppBoxo.resume();
    }
  }

  // ... (其他代码保持不变)
}

总结

以上代码展示了如何在Flutter项目中集成并使用appboxo_sdk插件。请确保替换示例代码中的你的AppBoxo API密钥为实际的API密钥,并根据你的需求调整代码。

回到顶部