Flutter集成Swaarm平台功能插件swaarm_sdk的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter集成Swaarm平台功能插件swaarm_sdk的使用

安装

要安装Swaarm SDK,通过运行以下命令将其添加到您的Flutter项目中:

flutter pub add swaarm_sdk

配置

为了配置Swaarm SDK,在您的main.dart文件中使用SwaarmClient.init(<domain>, <token>)方法初始化客户端。这应在应用程序启动后进行:

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

void main() {
  runApp(const MyApp());
  // 初始化SDK,替换"example.swaarm.com"为您的跟踪域名,并替换"<token>"为您的访问令牌
  SwaarmClient.init("example.swaarm.com", "<token>");
}

在开发过程中,可以通过以下方式启用调试:

void main() {
  runApp(const MyApp());
  // 启用调试模式
  SwaarmClient.init("example.swaarm.com", "<token>", debug: true);
}

使用

自动事件跟踪

Swaarm SDK自动跟踪某些事件:

  • 应用打开事件:每次应用被打开时触发。
  • 安装事件:第一次打开应用时触发。

这些事件包括丰富的用户数据,如操作系统版本、vendorId以及如果可用的IDFA(广告商标识符)。

注意:在iOS 14及更高版本上,访问IDFA需要用户同意。此同意必须从可见的应用界面请求。

自定义事件

您可以使用eventpurchase方法手动触发自定义事件。

发送自定义事件

event方法允许您跟踪特定用户操作。它支持以下参数:

  • typeId: 要跟踪的事件类型(例如:“registration”)。
  • aggregatedValue: 数值,Swaarm会在报告中聚合(例如:购买的物品数量)。
  • customValue: 自由格式字符串值,在报告中按原样显示(例如:事件的具体细节)。
// 跟踪注册事件
SwaarmClient.event(
  typeId: "registration",
  aggregatedValue: 25.0,
  customValue: "{\"email\": \"example@example.org\"}"
);
追踪购买

purchase方法用于追踪与购买相关的事件。它支持以下参数:

  • typeId: 购买事件类型(例如:“subscription”)。
  • revenue: 购买产生的收入金额。
  • currency: 收入报告所用的货币(例如:“USD”)。
  • receiptOrToken: 用于验证购买的收据数据、交易ID或令牌。
  • androidPurchaseId: Android交易的购买或订阅ID。
// 跟踪订阅购买
SwaarmClient.purchase(
  typeId: "subscription",
  revenue: 11.0,
  currency: "USD",
  receiptOrToken: "base64ReceiptDataOrTransactionIdOrToken",
  androidPurchaseId: "purchaseOrSubscriptionID",
);

延迟深度链接

Swaarm SDK支持延迟深度链接,允许您的应用响应在应用安装前点击的深度链接。当应用首次打开时,如果有延迟深度链接被点击并且您已注册了深度链接回调,SDK将调用此回调。可以使用此回调直接导航到特定页面或执行应用内的操作。

在SDK初始化期间注册DeferredDeepLinkCallback以利用此功能。以下是实现示例:

void main() {
  runApp(MyApp());
  SwaarmClient.init(
    "example.swaarm.com",
    "<token>",
    deferredDeepLinkCallback: (String route) {
      // 处理路由,例如导航到该路由
      Navigator.pushNamed(context, route);
    }
  );
}

归因数据

Swaarm SDK会定期联系服务器以检索归因数据,直到收到有效的数据为止。您可以通过以下属性访问当前可用的归因数据:

SwaarmClient.attributionData

您还可以注册一个回调函数,当成功归因发生时会被调用,如下例所示:

void main() {
  runApp(const MyApp());
  SwaarmClient.init(
      "example.swaarm.com",
      "<token>",
      attributionCallback: (AttributionData attributionData) {
        print("Received valid attribution data: $attributionData");
      });
}

示例代码

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

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

void main() {
  runApp(const MyApp());
  // 初始化SDK并启用调试
  SwaarmClient.init("my-domain.example.swaarm-app.com", "my-app-token", debug: true);
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
      // 每次计数器增加时发送自定义事件
      SwaarmClient.event(typeId: 'counterIncreased', aggregatedValue: _counter);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), 
    );
  }
}

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

1 回复

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


在Flutter项目中集成并使用Swaarm平台的swaarm_sdk插件,可以通过以下步骤实现。以下是一个基本的代码案例,展示了如何在Flutter应用中集成和使用swaarm_sdk

1. 添加依赖

首先,在你的pubspec.yaml文件中添加swaarm_sdk依赖:

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

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

2. 配置Android和iOS平台

根据Swaarm SDK的文档,你可能需要在AndroidManifest.xmlInfo.plist中添加一些配置。具体配置请参考Swaarm SDK的官方文档。

3. 初始化Swaarm SDK

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

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Swaarm SDK Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Swaarm SDK Demo'),
        ),
        body: SwaarmSDKInitializer(),
      ),
    );
  }
}

class SwaarmSDKInitializer extends StatefulWidget {
  @override
  _SwaarmSDKInitializerState createState() => _SwaarmSDKInitializerState();
}

class _SwaarmSDKInitializerState extends State<SwaarmSDKInitializer> {
  @override
  void initState() {
    super.initState();
    _initializeSwaarmSDK();
  }

  Future<void> _initializeSwaarmSDK() async {
    try {
      // 替换为你的API Key和SecretKey
      String apiKey = 'YOUR_API_KEY';
      String secretKey = 'YOUR_SECRET_KEY';
      
      // 初始化Swaarm SDK
      await Swaarm.init(apiKey: apiKey, secretKey: secretKey);
      
      // 可以在这里添加成功初始化的逻辑
      print('Swaarm SDK initialized successfully');
    } catch (e) {
      // 处理初始化失败的情况
      print('Failed to initialize Swaarm SDK: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Initializing Swaarm SDK...'),
    );
  }
}

4. 使用Swaarm SDK功能

一旦Swaarm SDK初始化成功,你就可以使用它的各种功能了。例如,进行用户登录、获取用户信息等。以下是一个简单的用户登录示例:

class UserLoginScreen extends StatefulWidget {
  @override
  _UserLoginScreenState createState() => _UserLoginScreenState();
}

class _UserLoginScreenState extends State<UserLoginScreen> {
  final _formKey = GlobalKey<FormState>();
  String _email = '';
  String _password = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('User Login'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: <Widget>[
              TextFormField(
                decoration: InputDecoration(labelText: 'Email'),
                validator: (value) {
                  if (value.isEmpty || !value.contains('@')) {
                    return 'Please enter a valid email address.';
                  }
                  return null;
                },
                onChanged: (value) {
                  setState(() {
                    _email = value;
                  });
                },
              ),
              TextFormField(
                decoration: InputDecoration(labelText: 'Password'),
                obscureText: true,
                validator: (value) {
                  if (value.isEmpty || value.length < 6) {
                    return 'Password must be at least 6 characters long.';
                  }
                  return null;
                },
                onChanged: (value) {
                  setState(() {
                    _password = value;
                  });
                },
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  if (_formKey.currentState.validate()) {
                    try {
                      // 用户登录
                      User user = await Swaarm.auth.signInWithEmailAndPassword(
                        email: _email,
                        password: _password,
                      );
                      print('User logged in: ${user.toJson()}');
                      // 可以在这里添加登录成功后的逻辑
                    } catch (e) {
                      // 处理登录失败的情况
                      print('Failed to log in: $e');
                    }
                  }
                },
                child: Text('Login'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

5. 将登录屏幕添加到应用中

最后,将登录屏幕添加到你的应用导航中。例如,在MyApp类中:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Swaarm SDK Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: '/',
      routes: {
        '/': (context) => SwaarmSDKInitializer(),
        '/login': (context) => UserLoginScreen(),
      },
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Swaarm SDK Demo'),
        ),
        body: Builder(
          builder: (context) {
            // 可以在这里添加导航逻辑,例如按钮跳转到登录屏幕
            return Center(
              child: ElevatedButton(
                onPressed: () {
                  Navigator.pushNamed(context, '/login');
                },
                child: Text('Go to Login'),
              ),
            );
          },
        ),
      ),
    );
  }
}

以上代码提供了一个基本的框架,展示了如何在Flutter应用中集成和使用Swaarm SDK。请根据你的具体需求调整代码,并参考Swaarm SDK的官方文档获取更多功能和细节。

回到顶部