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
更多关于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 或者通过其他方式提供,你可以使用 path
或 git
来指定依赖:
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');
}