# Flutter SDK

Flutter SDK 主要用于Flutter语言开发的应用.

{% hint style="info" %}
SDK Releases包下载：\
Github地址(推荐)：<https://github.com/analysys/ans-flutter-sdk/releases>\
Gitee地址：<https://gitee.com/Analysys/ans-flutter-sdk/releases>\
Releases中含有更新说明请您阅读，接口使用请参考本文档。
{% endhint %}

## 移动端iOS & Android Flutter插件使用说明

[flutter SDK](https://pub.dev/packages/argo_flutter_plugin)主要对移动端iOS和Android两个平台常用接口的封装，支持常用埋点事件的统计上报。

## 插件安装

在 Flutter 项目下 `pubspec.yaml` 文件添加 `argo_flutter_plugin` 依赖，配置如下：

```
dependencies:
  ## 易观方舟flutter插件
  argo_flutter_plugin: ^1.0.0
```

安装插件：

```dart
flutter packages get
```

代码引用

```dart
import 'package:argo_flutter_plugin/argo_flutter_plugin.dart';
```

## SDK初始化

### Android 端

建议在应用 Application 中调用 SDK 初始化接口 init()， 配置 AppKey、Channel

```
import com.analysys.AnalysysAgent;
import com.analysys.AnalysysConfig;
import com.analysys.EncryptEnum;

import io.flutter.app.FlutterApplication;

public class AnalysysApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        
        // 初始化SDK
        AnalysysConfig config = new AnalysysConfig();
        config.setAppKey("77a52s552c892bn442v721");
        config.setChannel("豌豆荚");
        AnalysysAgent.init(this, config);
        
        // 设置 打开 debug 模式 0：关闭 Debug 1：打开 Debug数据仅调试 2：打开Debug数据计入平台统计
 注意：若设置其他值则不生效,使用默认值
        AnalysysAgent.setDebugMode(this, 2);
        // 设置自定义上传地址为 scheme://host + :port
        AnalysysAgent.setUploadURL(mContext,"/*设置为实际地址*/");
    }
}
```

### iOS 端

在Xcode工程文件`~AppDelegate.m` 中导入头文件`#import <AnalysysAgent/AnalysysAgent.h>`，并在入口函数`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions`中进行SDK初始化：

```
//  导入SDK
#import <AnalysysAgent/AnalysysAgent.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     //  初始化SDK
    AnalysysConfig.appKey = <#appkey#>;
    AnalysysConfig.channel = @"App Store";
    [AnalysysAgent startWithConfig:AnalysysConfig];
    
    #ifdef DEBUG
        [AnalysysAgent setDebugMode:AnalysysDebugButTrack];
    #endif
    //  设置上传地址
    [AnalysysAgent setUploadURL:@"https://url:port"];

    return YES;
}
```

## 插件使用

在所需代码dart文件中引入插件：

`import 'package:argo_flutter_plugin/argo_flutter_plugin.dart';`

## API接口

### 统计事件

事件跟踪，设置事件名称和事件详细信息。接口如下：

```dart
Map<String, Object> properties = {"productCategory": "iPhone X", "price": 6000};
AnalysysAgent.track("purchase", properties);
```

### 用户属性设置

SDK提供以下接口供用户设置用户的属性，比如用户的年龄/性别等信息。

```dart
Map<String, Object> properties = {"nickName":"小叮当", "hobby": ["Singing", "Dancing"]};
AnalysysAgent.profileSet(properties);
```

### 通用属性设置

如果某个事件的属性，在所有事件中都会出现，则这个属性可以做为通用属性，通过 registerSuperProperties() 将该属性设置为事件通用属性，则设置后每次发送事件的时候都会带有该属性。比如用户浏览/购买商品过程中的用户等级就可以作为通用属性。

```dart
Map<String, Object> properties = {"birthday": "2010-01-01"};
AnalysysAgent.registerSuperProperties(properties);
```

### 用户关联

用户 ID 关联接口。将 用户ID和匿名ID关联，计算时会认为是一个用户的行为。该接口是在匿名ID发生变化的时候调用，来告诉 SDK 匿名ID变化前后的 ID 对应关系。该场景一般应用在用户注册/登录的过程中。比如：一个匿名用户浏览商品，系统为其分配的distinctId = "1234567890987654321"，随后该匿名用户进行注册，系统为其分配了新的注册 ID，aliasId = "ABCDEF123456789"，此时就需要调用 alias 接口对两个 ID 进行关联。接口如下：

```dart
AnalysysAgent.alias('A');
```

其他接口请参iOS& Android 接口


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://arkdocs.analysys.cn/integration/sdk/flutter-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
