Flutter集成服务插件bytebrew_sdk的使用

Flutter集成服务插件bytebrew_sdk的使用

ByteBrew SDK

ByteBrew是一款易于集成的Flutter SDK,它为您的游戏提供了实时分析跟踪、收益跟踪、归因、远程配置和A/B测试等功能。

概述

ByteBrew SDK是ByteBrew一站式平台的产品,通过该SDK您可以立即集成以下关键功能和工具到ByteBrew控制台:

  • 实时分析

    • 参与度分析:自动开始跟踪您的游戏的关键性能指标,如新用户事件、DAU(日活跃用户)、会话长度、游戏时间以及留存报告。
    • 自定义过滤:通过设备类型、地理位置、构建版本和日期范围等自定义过滤器对玩家进行分组和细分。
  • 推送通知

    • 使用ByteBrew的推送通知功能向全球玩家发送跨平台云通知。
  • 玩家进度

    • 跟踪游戏等级统计数据以分解等级胜利、失败、得分等。
    • 进度漏斗系统:监控用户的进度并设置自定义事件漏斗,以便直观地跟踪玩家在游戏中的进度。通过跟踪玩家完成事件所需的时间来定位游戏中的关键流失点。
  • 收益

    • 使用我们的收据验证工具开始跟踪游戏内的购买行为,并将其转化为业务。
    • 跟踪并可视化从任何广告网络获得的游戏内广告收入。
  • 服务器端购买验证

    • 使用ByteBrew SDK验证应用中的购买行为,以接收用户在应用中的购买扫描结果。
  • 归因

    • ByteBrew归因与顶级移动广告网络集成,支持基本归因和SKAdnetwork。跟踪所有运行中的广告活动中的每个印象、点击和安装,直至创意级别的详细信息。
  • 远程配置

    • 无需上传新的应用程序包到应用商店即可远程编辑游戏内的设置。
    • 单个远程配置:允许您更改游戏中的个别自定义值,例如:Boss敌人生命值、玩家统计数据或关卡难度。
    • 组合配置:此高级功能允许您在一段时间内更改多个游戏内的值。可用于创建轮转的商品或游戏的每日奖励。
  • A/B测试

    • 此功能允许您通过分配给用户的测试组来更改游戏中的多个值。这可以用于跟踪基于为每个用户设置的配置影响其表现的多个KPI。

开始使用

安装

您可以从GitHub下载Flutter包直接安装到项目中,或者使用Flutter的pub dev安装器将其添加到pubspec.yaml文件中。

社区

加入ByteBrew开发者社区,在Discord上与其他开发者交流。

Flutter帮助

如果您需要开始Flutter开发的帮助,请访问Flutter官方文档,其中包含教程、示例、移动开发指南和完整的API参考。

示例代码

import 'dart:io';

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:log';
import 'package:flutter/services.dart';
import 'package:bytebrew_sdk/bytebrew_sdk.dart';

void main() {
  runApp(const MyApp());
}

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

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

class _MyAppState extends State<MyApp> {
  String _user = 'Unknown';
  String _remoteConfigsStuff = "N/A";
  String _abConfigsStuff = "N/A";

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
    if (Platform.isAndroid) {
      ByteBrewSdk.initialize("ANDROID_APP_ID", "ANDROID_SDK_KEY");
    } else if (Platform.isIOS) {
      ByteBrewSdk.initialize("IOS_APP_ID", "IOS_SDK_KEY");
    }
  }

  // 异步初始化平台状态
  Future<void> initPlatformState() async {
    String user;
    // 处理可能发生的平台异常
    try {
      user = await ByteBrewSdk.getUserID() ?? 'Unknown User';
    } on PlatformException {
      user = 'Failed to get user';
    }

    // 如果组件已被移除,则丢弃回复
    if (!mounted) return;

    setState(() {
      _user = user;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Container(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text('运行于: $_user\n'),
                Text('远程配置: $_remoteConfigsStuff\n'),
                Text('A/B 测试配置: $_abConfigsStuff\n'),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.isByteBrewInitialized().then((value) => {
                      log("已初始化: $value")
                    });
                    ByteBrewSdk.getUserID().then((value) => {
                      setState(() {
                        _user = value ?? "无用户";
                      })
                    });
                  },
                  child: Text("获取用户"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.newCustomEvent("test_some");
                  },
                  child: Text("新事件"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.newCustomEventStringValue("test_complex", "glad=yes;happy=1;");
                  },
                  child: Text("新复杂事件"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.setCustomDataTagString("clicked", "yep");
                  },
                  child: Text("设置数据标签 1"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.setCustomDataTagInt("set-ATT", 1);
                  },
                  child: Text("设置数据标签 2"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.setCustomDataTagBool("boolCheck", true);
                  },
                  child: Text("设置数据标签 3"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.setCustomDataTagDouble("amount_earned", 13.5);
                  },
                  child: Text("设置数据标签 4"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.newProgressionEvent(ByteBrewProgressionType.Started, "levels", "1");
                  },
                  child: Text("进度 1 开始"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.newProgressionEvent(ByteBrewProgressionType.Completed, "levels", "1");
                  },
                  child: Text("进度 1 完成"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.newProgressionEvent(ByteBrewProgressionType.Failed, "levels", "1");
                  },
                  child: Text("进度 1 失败"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.trackAdEvent(ByteBrewAdType.Interstitial, "end_level");
                  },
                  child: Text("广告事件"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.trackAdEvent(ByteBrewAdType.Reward, "double_points");
                  },
                  child: Text("广告事件奖励"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.hasRemoteConfigs().then((value) => {
                      log("有配置: $value")
                    });
                    ByteBrewSdk.loadRemoteConfigs().then((value) => {
                      ByteBrewSdk.retrieveRemoteConfigValue("test_key", "value_1").then((value) => {
                        setState(() {
                          _remoteConfigsStuff = value ?? "某些东西";
                        })
                      })
                    });
                  },
                  child: Text("获取远程配置"),
                ),
                TextButton(
                  onPressed: () {
                    ByteBrewSdk.hasRemoteConfigs().then((value) => {
                      log("有配置: $value")
                    });
                    ByteBrewSdk.loadRemoteConfigs().then((value) => {
                      ByteBrewSdk.retrieveRemoteConfigValue("colors_key", "test_Color").then((value) => {
                        setState(() {
                          _abConfigsStuff = value ?? "无内容";
                        })
                      })
                    });
                  },
                  child: Text("获取A/B配置"),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter中集成并使用bytebrew_sdk服务插件,可以通过以下步骤来实现。这里假设你已经有一个Flutter项目,并且熟悉基本的Flutter开发流程。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加bytebrew_sdk的依赖。确保你的Flutter环境已经配置好,并且可以访问pub.dev。

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

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

2. 配置Android和iOS

根据bytebrew_sdk的文档,你可能需要在AndroidManifest.xmlInfo.plist中添加一些配置。这里假设文档已经提供了相关的配置信息,你需要按照文档进行配置。

Android (AndroidManifest.xml)

<manifest ...>
    ...
    <application
        ...>
        <!-- 根据bytebrew_sdk文档添加的配置 -->
        <meta-data
            android:name="com.bytebrew.sdk.API_KEY"
            android:value="你的API_KEY" />
        ...
    </application>
</manifest>

iOS (Info.plist)

<dict>
    ...
    <!-- 根据bytebrew_sdk文档添加的配置 -->
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    <key>com.bytebrew.sdk.API_KEY</key>
    <string>你的API_KEY</string>
    ...
</dict>

3. 初始化SDK

在你的Flutter应用的入口文件(通常是main.dart)中初始化bytebrew_sdk

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

void main() {
  runApp(MyApp());
  // 初始化SDK(假设初始化函数为initByteBrew,具体根据SDK文档)
  ByteBrewSdk.instance.init(apiKey: '你的API_KEY');
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter 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 Demo Home Page'),
      ),
      body: Center(
        child: Text('Hello, ByteBrew SDK!'),
      ),
    );
  }
}

注意:实际的初始化函数和参数可能有所不同,请参考bytebrew_sdk的官方文档进行初始化。

4. 使用SDK功能

一旦SDK初始化完成,你就可以在应用的其他部分调用bytebrew_sdk提供的功能。例如,假设有一个函数用于获取用户信息:

Future<void> fetchUserInfo() async {
  try {
    // 假设有一个函数getUserInfo来获取用户信息
    var userInfo = await ByteBrewSdk.instance.getUserInfo();
    print('User Info: $userInfo');
  } catch (e) {
    print('Error fetching user info: $e');
  }
}

你可以将这个函数绑定到一个按钮的点击事件上,以便在UI中触发。

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello, ByteBrew SDK!'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: fetchUserInfo,
              child: Text('Fetch User Info'),
            ),
          ],
        ),
      ),
    );
  }
}

总结

以上代码展示了如何在Flutter项目中集成并使用bytebrew_sdk服务插件。具体的初始化方法和函数调用可能有所不同,请参考bytebrew_sdk的官方文档进行调整。如果SDK提供了更多的功能,你可以按照类似的方式在Flutter应用中调用这些功能。

回到顶部