Flutter集成Synerise平台插件synerise_flutter_sdk的使用

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

Flutter集成Synerise平台插件 synerise_flutter_sdk 的使用

关于 Synerise SDK 插件

Synerise 是一个用于移动应用的营销和分析平台。synerise_flutter_sdk 是其为 Flutter 应用提供的插件,允许开发者在 Flutter 项目中集成 Synerise 的功能。

文档

最新的文档可以在 Developer Guide - Mobile SDK 找到。

要求

  • 访问工作区
  • 一个 Profile API Key
  • 配置好的开发环境 - 参考 Flutter 文档

Android 要求

  • 最低 Android SDK 版本:21
  • 支持的目标 SDK 版本:33

iOS 要求

  • Xcode 15 和 iOS SDK 17
  • iOS 9.0+ 最低部署目标
  • 支持的架构:arm64 设备和 arm64, x86_64 模拟器

安装

使用 Flutter 安装

$ flutter pub add synerise_flutter_sdk

这会在你的项目的 pubspec.yaml 文件中添加如下依赖(并运行隐式的 flutter pub get):

dependencies:
  synerise_flutter_sdk: ^1.4.3

或者通过 SSH 或 HTTPS 方式安装:

SSH 方式

synerise_flutter_sdk: 
    git:
      url: git@github.com:Synerise/synerise-flutter-sdk.git

HTTPS 方式

synerise_flutter_sdk: 
    git:
      url: https://github.com/Synerise/synerise-flutter-sdk.git

导入 Synerise SDK

import 'package:synerise_flutter_sdk/synerise.dart';

Android Gradle & 配置

android/build.gradle 中添加以下内容:

repositories {
    google()
    mavenCentral()
    maven { url 'https://pkgs.dev.azure.com/Synerise/AndroidSDK/_packaging/prod/maven/v1' }
}

MainActivity 中添加:

public class MainActivity extends FlutterActivity {
    @Override    
    public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);        
        SyneriseMethodChannel.configureChannel(flutterEngine);    
    }
}

iOS 配置

在 iOS 部分的应用目录下执行:

pod update

初始化

首先需要初始化 Synerise Flutter SDK 并提供 Profile API Key

获取 Profile API Key 的步骤:

  1. 登录到你的 Synerise 账户。
  2. 访问 API Keys 页面
  3. 生成一个新的 API Key,选择 Profile 观众。

初始化代码示例:

Synerise.initializer()
  .withClientApiKey("YOUR_PROFILE_API_KEY")
  .init(); 

示例应用

运行示例应用

  1. 在 IDE 中打开项目文件夹。
  2. 在终端中执行 flutter pub get (拉取依赖)。
  3. 在 IDE 中选择设备或模拟器(对于 iOS 部分,需要在 example/ios 目录下执行 pod update)。
  4. 填写 example/lib/api_key.txt 文件中的 Profile API Key。
  5. 确保 example/ios/Runner/GoogleService-Info.plistexample/android/app/google-services.json 文件已填充你的 Firebase 项目配置数据。
  6. 通过 IDE 运行示例应用,或者执行以下命令:
cd example
flutter run

完整示例 Demo

以下是基于官方示例的完整示例代码:

import 'package:flutter/material.dart';
import 'package:synerise_flutter_sdk/synerise.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Synerise.initializer()
      .withClientApiKey("YOUR_PROFILE_API_KEY")
      .withBaseUrl("https://api.snrapi.com")
      .withDebugModeEnabled(true)
      .init();

  runApp(MyApp());
}

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

class InitialView extends StatefulWidget {
  @override
  _InitialViewState createState() => _InitialViewState();
}

class _InitialViewState extends State<InitialView> {
  @override
  void initState() {
    super.initState();
    initializeSynerise();
  }

  Future<void> initializeSynerise() async {
    Synerise.settings.sdk.localizable = {
      LocalizableKey.localizableStringKeyOk: "OK!",
      LocalizableKey.localizableStringKeyCancel: "CANCEL!"
    };

    Synerise.settings.sdk.appGroupIdentifier =
        "group.com.synerise.sdk.sample-flutter";
    Synerise.settings.sdk.keychainGroupIdentifier =
        "34N2Z22TKH.FlutterKeychainGroup";
    Synerise.settings.tracker.minBatchSize = 30;
    Synerise.settings.tracker.autoFlushTimeout = 20.0;
    Synerise.settings.tracker.eventsTriggeringFlush = ["flutter.test"];

    Synerise.initializer()
        .withClientApiKey("YOUR_PROFILE_API_KEY")
        .withBaseUrl("https://api.snrapi.com")
        .withDebugModeEnabled(true)
        .init();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Synerise Flutter SDK Test'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                final paramMap = <String, Object>{
                  "firstKeyCustomParam": "TEST",
                  "arraytest": [
                    {"test1": "test2"}
                  ]
                };

                CustomEvent event = CustomEvent("label", "flutter.test", paramMap);
                Synerise.tracker.send(event);
              },
              child: Text('Send Custom Event'),
            ),
          ],
        ),
      ),
    );
  }
}

以上示例展示了如何初始化 Synerise SDK 并发送自定义事件。你可以根据需要扩展此示例,以包含更多模块的功能测试。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用Synerise平台插件synerise_flutter_sdk的代码示例。这个示例将展示如何安装插件、初始化SDK以及调用一些基本功能。

1. 添加插件依赖

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

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

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

2. 初始化SDK

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

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 初始化SDK,通常在这里设置你的API Key或其他配置
    SyneriseFlutterSdk.instance.init(
      apiKey: '你的API_KEY',  // 替换为你的实际API Key
      baseUrl: 'https://你的API_BASE_URL',  // 替换为你的实际API基础URL
      // 其他初始化参数(如果有)
    );

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Synerise Flutter SDK Example'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text('SDK 已初始化'),
        // 其他UI组件
      ],
    );
  }
}

3. 调用SDK功能

假设synerise_flutter_sdk提供了一个获取用户信息的方法,你可以如下调用它:

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

class UserInfoScreen extends StatefulWidget {
  @override
  _UserInfoScreenState createState() => _UserInfoScreenState();
}

class _UserInfoScreenState extends State<UserInfoScreen> {
  String userInfo;

  @override
  void initState() {
    super.initState();
    _getUserInfo();
  }

  Future<void> _getUserInfo() async {
    try {
      // 假设SDK提供了一个名为getUserInfo的方法
      var result = await SyneriseFlutterSdk.instance.getUserInfo();
      setState(() {
        userInfo = result.toString();  // 根据实际情况处理返回结果
      });
    } catch (error) {
      print('获取用户信息失败: $error');
      setState(() {
        userInfo = '获取用户信息失败';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('用户信息'),
      ),
      body: Center(
        child: Text(userInfo ?? '加载中...'),
      ),
    );
  }
}

4. 在应用中导航到用户信息屏幕

你可以在MyAppMaterialApp中添加一个路由到UserInfoScreen,以便在应用内导航到它:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    SyneriseFlutterSdk.instance.init(
      apiKey: '你的API_KEY',
      baseUrl: 'https://你的API_BASE_URL',
    );

    return MaterialApp(
      routes: {
        '/': (context) => MyHomePage(),
        '/user-info': (context) => UserInfoScreen(),
      },
      home: Scaffold(
        appBar: AppBar(
          title: Text('Synerise Flutter SDK Example'),
        ),
        body: Center(
          child: MyHomePage(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () => Navigator.pushNamed(context, '/user-info'),
          tooltip: '查看用户信息',
          child: Icon(Icons.person),
        ),
      ),
    );
  }
}

总结

以上代码示例展示了如何在Flutter项目中集成synerise_flutter_sdk,初始化SDK,并调用其提供的方法。请注意,具体的SDK方法和参数可能会根据实际插件的文档有所不同,因此请参考synerise_flutter_sdk的官方文档以获取最新和最准确的信息。

回到顶部