Flutter集成SDK插件se_flutter_sdk的使用

Flutter集成SDK插件se_flutter_sdk的使用

se_flutter_sdk 是一款为 solar-engine 提供支持的 Flutter 插件。它可以帮助开发者快速集成并使用 solar-engine 的功能。

使用步骤

1. 初始化SDK

在使用 se_flutter_sdk 之前,需要先初始化 SDK。以下是初始化的示例代码:

SETextButtonItem("Init SDK", "key", (key) {
  String appkey = "898b33180e819174"; // 替换为您的 AppKey
  String userId = "5c5a2f0fd35d9296"; // 替换为您的用户 ID
  SolarEngineConfig config = SolarEngineConfig();
  
  config.logEnabled = true; // 开启日志
  config.disableRecordLog = true; // 禁止记录日志

  SERemoteConfigData rcConfig = SERemoteConfigData();
  rcConfig.enable = true;
  rcConfig.logEnabled = true;

  // 设置自定义 ID 属性
  rcConfig.customIDProperties = {
    "key": "customID",
    "value": "androidID"
  };
  rcConfig.customIDEventProperties = {
    "key": "customEventID",
    "value": "_appStart"
  };
  rcConfig.customIDUserProperties = {
    "key": "customUserID",
    "value": "Topic"
  };

  config.remoteConfigData = rcConfig;

  // 设置回调函数
  config.onAttributionSuccess = (data) {
    print("onAttributionSuccess----");
    print(data);
    toast(data!);
  };
  config.onAttributionFail = (code) {
    print("onAttributionFail----");
    print(code);
    toast("onAttributionFail" + code.toString());
  };

  SolarEngine.initialize(appkey, userId, config);
});

2. 异步获取远程配置

通过以下代码可以异步获取远程配置:

SETextButtonItem("asyncFetchRemoteConfig", "key", (key) {
  SERemoteConfig().asyncFetchRemoteConfig(key, (result) {
    print("在线参数回调-----");
    print(result);
    toast("result=" + result!);
  });
});

3. 设置默认远程配置

可以通过以下代码设置默认远程配置:

SETextButtonItem("setRemoteDefaultConfig", "properties", (properties) async {
  List<dynamic> data = [
    {"name": "key1", "type": 2, "value": 1},
    {"name": "key2", "type": 2, "value": 0}
  ];
  SERemoteConfig().setRemoteDefaultConfig(data);
});

4. 设置用户属性

可以设置用户的属性,例如姓名、年龄等:

SETextButtonItem("setRemoteConfigUserProperties", "properties", (properties) {
  if (properties.isNotEmpty) {
    Map<String, dynamic> userProperties = json.decode(properties);
    SERemoteConfig().setRemoteConfigUserProperties(userProperties);
    return;
  }
  Map<String, dynamic> userProperties = {};
  userProperties['name'] = 'liming';
  userProperties['age'] = "20";
  SERemoteConfig().setRemoteConfigUserProperties(userProperties);
});

5. 快速获取远程配置

可以通过以下代码快速获取远程配置:

SETextButtonItem("fastFetchRemoteConfig", "key", (key) async {
  String? result = await SERemoteConfig().fastFetchRemoteConfig(key);
  toast("result=${result!}");
});

6. 跟踪自定义事件

可以通过以下代码跟踪自定义事件:

SEText2ButtonItem(
  "trackCustomEvent",
  "eventName",
  "properties",
  (eventName, propertiesString) {
    if (propertiesString.isNotEmpty && eventName.isNotEmpty) {
      SECustomEventData event = SECustomEventData();
      event.customEventName = eventName;
      Map<String, dynamic> properties = json.decode(propertiesString);
      event.customProperties = properties;
      SolarEngine.trackCustomEvent(event);
      return;
    }
    SECustomEventData customEventData = SECustomEventData();
    customEventData.customEventName = "OpenAPP";
    Map<String, dynamic> customProperties = {};
    customProperties['time'] = '2020-10-10';
    customProperties['data'] = "hello word!";
    customEventData.customProperties = customProperties;
    SolarEngine.trackCustomEvent(customEventData);
  }
);

7. 跟踪应用内购买事件

可以通过以下代码跟踪应用内购买事件:

SETextButtonItem("trackIAP", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAppPurchaseData purchase = SEAppPurchaseData();
    purchase.orderId = properties["orderId"];
    purchase.payAmount = properties["payAmount"];
    purchase.currencyType = properties["currencyType"];
    purchase.payType = properties["payType"];
    purchase.productId = properties["productId"];
    purchase.productName = properties["productName"];
    purchase.productNum = properties["productNum"];
    purchase.payStatus = properties["payStatus"];
    purchase.failReason = properties["failReason"];
    purchase.customProperties = properties["customProperties"];
    SolarEngine.trackAppPurchase(purchase);
    return;
  }
  SEAppPurchaseData appPurchaseData = SEAppPurchaseData();
  appPurchaseData.currencyType = "CN";
  appPurchaseData.failReason = "支付失败";
  appPurchaseData.orderId = "1123";
  appPurchaseData.payAmount = 90.99;
  appPurchaseData.payStatus = 1;
  appPurchaseData.payType = "weixin";
  appPurchaseData.productId = "232dddd";
  appPurchaseData.productName = "皮肤";
  appPurchaseData.productNum = 1;
  Map<String, dynamic> customProperties = {};
  customProperties['name'] = 'wyq';
  customProperties['age'] = 10;
  customProperties['like'] = "啤酒";
  appPurchaseData.customProperties = customProperties;
  SolarEngine.trackAppPurchase(appPurchaseData);
});

8. 跟踪广告展示事件

可以通过以下代码跟踪广告展示事件:

SETextButtonItem("trackAdImp", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);

    SEAppImpressionData appImpressionData = SEAppImpressionData();
    appImpressionData.adNetworkADID = properties["adNetworkADID"];
    appImpressionData.adNetworkAppID = properties["adNetworkAppID"];
    appImpressionData.adNetworkPlatform = properties["adNetworkPlatform"];
    appImpressionData.mediationPlatform = properties["mediationPlatform"];
    appImpressionData.adType = properties["adType"];
    appImpressionData.currencyType = properties["currencyType"];
    appImpressionData.ecpm = properties["ecpm"];
    appImpressionData.isRenderSuccess = properties["isRenderSuccess"];
    appImpressionData.customProperties = properties["customProperties"];
    SolarEngine.trackAppImpress(appImpressionData);
    return;
  }

  SEAppImpressionData appImpressionData = SEAppImpressionData();
  appImpressionData.mediationPlatform = "toutiao";
  appImpressionData.adNetworkADID = "22323";
  appImpressionData.adNetworkAppID = "3SDFED";
  appImpressionData.adNetworkPlatform = "4";
  appImpressionData.mediationPlatform = "custom";
  appImpressionData.adType = 2;
  appImpressionData.currencyType = "USD";
  appImpressionData.ecpm = 22.9;
  appImpressionData.isRenderSuccess = true;
  Map<String, dynamic> customProperties = {};
  customProperties['goods'] = 'shoes';
  customProperties['goodsprice'] = 20;
  customProperties['goodsaddress'] = "北京";
  appImpressionData.customProperties = customProperties;
  SolarEngine.trackAppImpress(appImpressionData);
});

9. 跟踪广告点击事件

可以通过以下代码跟踪广告点击事件:

SETextButtonItem("trackAdClick", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAdClickData adClickData = SEAdClickData();
    adClickData.adPlatform = properties["adPlatform"];
    adClickData.mediationPlatform = properties["mediationPlatform"];
    adClickData.adType = properties["adType"];
    adClickData.adNetworkADID = properties["adNetworkADID"];
    adClickData.customProperties = properties["customProperties"];
    SolarEngine.trackAdClick(adClickData);
    return;
  }
  SEAdClickData adClickData = SEAdClickData();
  adClickData.adPlatform = "mtg";
  adClickData.mediationPlatform = "solar-engine";
  adClickData.adType = 1;
  adClickData.adNetworkADID = "11222ffff";
  Map<String, dynamic> customProperties = {};
  if (pString.isNotEmpty) {
    customProperties = json.decode(pString);
  } else {
    customProperties['app'] = 'taobao';
    customProperties['sex'] = "man";
  }
  adClickData.customProperties = customProperties;
  SolarEngine.trackAdClick(adClickData);
});

10. 跟踪应用属性事件

可以通过以下代码跟踪应用属性事件:

SETextButtonItem("trackAppAttr", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAppAttrData appAttrData = SEAppAttrData();
    appAttrData.adAccountId = properties["adAccountId"];
    appAttrData.adAccountName = properties["adAccountName"];
    appAttrData.adCampaignId = properties["adCampaignId"];
    appAttrData.adCampaignName = properties["adCampaignName"];
    appAttrData.adCreativeId = properties["adCreativeId"];
    appAttrData.adCreativeName = properties["adCreativeName"];
    appAttrData.adNetwork = properties["adNetwork"];
    appAttrData.adOfferId = properties["adOfferId"];
    appAttrData.adOfferName = properties["adOfferName"];
    appAttrData.attributionPlatform = properties["attributionPlatform"];
    appAttrData.subChannel = properties["subChannel"];
    appAttrData.customProperties = properties["customProperties"];
    SolarEngine.trackAppAttr(appAttrData);
    return;
  }
  SEAppAttrData appAttrData = SEAppAttrData();
  appAttrData.adAccountId = "2222ddd";
  appAttrData.adAccountName = "mtg";
  appAttrData.adCampaignId = "12323";
  appAttrData.adCampaignName = "animal";
  appAttrData.adCreativeId = "dkdkd11";
  appAttrData.adCreativeName = "dog";
  appAttrData.adNetwork = "ks";
  appAttrData.adOfferId = "100oo";
  appAttrData.adOfferName = "wanmeishijie";
  appAttrData.attributionPlatform = "tencent";
  appAttrData.subChannel = "bytedance";
  Map<String, dynamic> customProperties = {};
  if (pString.isNotEmpty) {
    customProperties = json.decode(pString);
  } else {
    customProperties['channel'] = 'xiaomi';
    customProperties['date'] = "10.20";
  }
  appAttrData.customProperties = customProperties;
  SolarEngine.trackAppAttr(appAttrData);
});

11. 跟踪注册事件

可以通过以下代码跟踪注册事件:

SETextButtonItem("trackRegister", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAppRegisterData appRegisterData = SEAppRegisterData();
    appRegisterData.regType = properties["regType"];
    appRegisterData.status = properties["status"];
    appRegisterData.customProperties = properties["customProperties"];
    SolarEngine.trackAppRegister(appRegisterData);
    return;
  }
  SEAppRegisterData appRegisterData = SEAppRegisterData();
  appRegisterData.regType = "QQ";
  appRegisterData.status = "success";
  Map<String, dynamic> customProperties = {};
  if (pString.isNotEmpty) {
    customProperties = json.decode(pString);
  } else {
    customProperties['type'] = 'wifi';
    customProperties['like'] = "foods";
    customProperties['re'] = "QQ";
  }
  appRegisterData.customProperties = customProperties;
  SolarEngine.trackAppRegister(appRegisterData);
});

12. 跟踪登录事件

可以通过以下代码跟踪登录事件:

SETextButtonItem("trackLogin", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAppLoginData appLoginData = SEAppLoginData();
    appLoginData.loginType = properties["loginType"];
    appLoginData.status = properties["status"];
    appLoginData.customProperties = properties["customProperties"];
    SolarEngine.trackAppLogin(appLoginData);
    return;
  }
  SEAppLoginData appLoginData = SEAppLoginData();
  appLoginData.loginType = "weixin";
  appLoginData.status = "failed";
  Map<String, dynamic> customProperties = {};
  if (pString.isNotEmpty) {
    customProperties = json.decode(pString);
  } else {
    customProperties['type'] = 'wifi';
    customProperties['like'] = "foods";
    customProperties['re'] = "QQ";
  }
  appLoginData.customProperties = customProperties;
  SolarEngine.trackAppLogin(appLoginData);
});

13. 跟踪订单事件

可以通过以下代码跟踪订单事件:

SETextButtonItem("trackOrder", "properties", (pString) {
  if (pString.isNotEmpty) {
    Map<String, dynamic> properties = json.decode(pString);
    SEAppOrderData appOrderData = SEAppOrderData();
    appOrderData.status = properties["status"];
    appOrderData.payType = properties["payType"];
    appOrderData.payAmount = properties["payAmount"];
    appOrderData.orderId = properties["orderId"];
    appOrderData.currencyType = properties["currencyType"];
    appOrderData.customProperties = properties["customProperties"];
    SolarEngine.trackAppOrder(appOrderData);
    return;
  }
  SEAppOrderData appOrderData = SEAppOrderData();
  appOrderData.status = "failed";
  appOrderData.payType = "weixin";
  appOrderData.payAmount = 20.33;
  appOrderData.orderId = "111222333";
  appOrderData.currencyType = "USD";
  Map<String, dynamic> customProperties = {};
  if (pString.isNotEmpty) {
    customProperties = json.decode(pString);
  } else {
    customProperties['app'] = 'taobao';
    customProperties['sex'] = "man";
  }
  appOrderData.customProperties = customProperties;
  SolarEngine.trackAppOrder(appOrderData);
});

14. 创建计时器事件

可以通过以下代码创建计时器事件:

SETextButtonItem("eventStart", "eventName", (eventName) async {
  SETimerEventData event = SETimerEventData();
  event.customEventName = "timer_event_my";
  Map<String, dynamic> customProperties = {};
  customProperties['kind'] = 'timer';
  customProperties['send'] = "true";
  event.customProperties = customProperties;
  event.ts = DateTime.now().millisecondsSinceEpoch;
  timerEventStr = await SolarEngine.createTimerEvent(event);
});

15. 结束计时器事件

可以通过以下代码结束计时器事件:

SEText2ButtonItem(
  "eventFinish",
  "eventName",
  "properties",
  (eventName, propertiesString) {
    SolarEngine.trackTimerEvent(timerEventStr);
  }
);

16. 用户初始化

可以通过以下代码进行用户初始化:

SETextButtonItem("userInit", "properties", (pString) {
  Map<String, dynamic> properties = {};
  if (pString.isNotEmpty) {
    properties = json.decode(pString);
  } else {
    properties['kind'] = "userInit";
  }
  SolarEngine.userInit(properties);
});

17. 用户更新

可以通过以下代码进行用户更新:

SETextButtonItem("userUpdate", "properties", (pString) {
  Map<String, dynamic> properties = {};
  if (pString.isNotEmpty) {
    properties = json.decode(pString);
  } else {
    properties['kind'] = "userUpdate";
  }
  SolarEngine.userUpdate(properties);
});

18. 用户新增

可以通过以下代码进行用户新增:

SETextButtonItem("userAdd", "properties", (pString) {
  Map<String, dynamic> properties = {};
  if (pString.isNotEmpty) {
    properties = json.decode(pString);
  } else {
    properties['kind'] = "userAdd";
  }
  SolarEngine.userAdd(properties);
});

19. 用户删除(按账户 ID)

可以通过以下代码删除用户(按账户 ID):

SEButtonItem("userDeleteByAccountId", () {
  SolarEngine.userDelete(SEUserDeleteType.DELETE_BY_ACCOUNTID);
});

20. 用户删除(按访客 ID)

可以通过以下代码删除用户(按访客 ID):

SEButtonItem("userDeleteByVisitorId", () {
  SolarEngine.userDelete(SEUserDeleteType.DELETE_BY_VISITORID);
});

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

1 回复

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


se_flutter_sdk 是一个用于 Flutter 的 SDK 插件,通常用于集成特定的功能或服务。由于你提到的 se_flutter_sdk 并不是一个广泛使用的公共 SDK,我假设它是一个自定义或专有的 SDK。因此,我将提供一个通用的指南,帮助你如何在 Flutter 项目中集成和使用 SDK 插件。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 se_flutter_sdk 的依赖。假设 se_flutter_sdk 已经发布到 pub.dev,你可以像这样添加依赖:

dependencies:
  flutter:
    sdk: flutter
  se_flutter_sdk: ^1.0.0  # 请根据实际情况替换版本号

如果 se_flutter_sdk 是一个本地 SDK 或者通过其他方式提供,你可以使用 pathgit 来指定依赖:

dependencies:
  flutter:
    sdk: flutter
  se_flutter_sdk:
    path: ../path/to/se_flutter_sdk  # 本地路径

或者:

dependencies:
  flutter:
    sdk: flutter
  se_flutter_sdk:
    git:
      url: https://github.com/yourusername/se_flutter_sdk.git  # Git 仓库地址
      ref: main  # 分支或标签

2. 安装依赖

pubspec.yaml 文件中添加依赖后,运行以下命令来安装依赖:

flutter pub get

3. 导入 SDK

在你的 Dart 文件中导入 se_flutter_sdk

import 'package:se_flutter_sdk/se_flutter_sdk.dart';

4. 初始化 SDK

大多数 SDK 都需要在使用之前进行初始化。你可以在 main.dart 或应用程序的入口点进行初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 SDK
  await SeFlutterSdk.initialize(
    apiKey: 'your_api_key',
    // 其他配置参数
  );
  
  runApp(MyApp());
}

5. 使用 SDK 功能

根据 se_flutter_sdk 提供的功能,你可以在应用程序中使用它。例如,如果 SDK 提供了用户认证功能,你可以这样使用:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SE Flutter SDK Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 调用 SDK 功能
              var result = await SeFlutterSdk.authenticateUser(
                username: 'user@example.com',
                password: 'password',
              );
              print('Authentication Result: $result');
            },
            child: Text('Authenticate'),
          ),
        ),
      ),
    );
  }
}

6. 处理 SDK 事件

如果 SDK 提供了事件监听或回调机制,你可以注册监听器来处理这些事件:

SeFlutterSdk.onEvent.listen((event) {
  print('SDK Event: $event');
});

7. 调试和测试

在开发过程中,确保你能够捕获和处理 SDK 可能抛出的异常或错误。你可以使用 try-catch 块来捕获异常:

try {
  var result = await SeFlutterSdk.someFunction();
  print('Result: $result');
} catch (e) {
  print('Error: $e');
}
回到顶部