# Flutter SDK接入文档说明

# 1.集成SDK

在 Flutter 项目的 pubspec.yaml 文件中 dependencies 里面添加 sr_tracksdk_flutter_plugin 依赖

dependencies:  
  # 添加有数 flutter plugin 
  sr_tracksdk_flutter_plugin: ^0.0.2

执行 flutter packages get 命令安装插件

flutter packages get

# IOS

1.IOS需要在 ios/Podfile 中以下添加代码

ENV['SWIFT_VERSION'] = '4'
use_frameworks!

IOS 添加完上述代码后,需要到ios目录下执行pod install完成依赖下载

2.SDK初始化 通过有数开放平台申请appId、appSecret

2.1 Objective-C 初始化方式

如果您创建flutter项目时ios端选择的语言是Objective-C,则在 ios/Runner/AppDelegate.m 中进行如下初始化

#import "AppDelegate.h"
#import "GeneratedPluginRegistrant.h"
#import "TrackSDK-Swift.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    TrackConfig *trackConfig = [[TrackConfig alloc] initWithSecretId:@"xxx" secretKey:@"xxx" launchOptions:launchOptions];
        trackConfig.debug = true;
        [SR initSDKWithConfig:trackConfig];

  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end

2.2 Swift 初始化方式

如果您创建flutter项目时ios端选择的语言是Swift,则在 ios/Runner/AppDelegate.m 中进行如下初始化

import UIKit
import TrackSDK

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        
        let trackConfig = TrackConfig(appId: "xxx", appSecret: "xxx", launchOptions: launchOptions)
        // 开启 debug
        trackConfig.debug = true;
        SR.initSDK(config: trackConfig);
        return true
    }
}

# 安卓

如果为安卓端只需完成第一步“集成SDK”即可,无需初始化

# 上报 main.dart


import 'package:sr_tracksdk_flutter_plugin/sr_tracksdk_flutter_plugin.dart';
    ...

SrTracksdkFlutterPlugin.init("x","xxx","xxx"); // 安卓端使用
SrTracksdkFlutterPlugin.trackNull("AddToFav"); // 安卓端使用
SrTracksdkFlutterPlugin.track("AddToFav", {"ProductID": "123456", "UserLevel":"VIP"}); // 通用
SrTracksdkFlutterPlugin.setUser("1"); // 通用