跳到主要内容
当前模块客户端 SDK 集成
AI-ready documentation

快速集成

介绍 Gravity Engine Flutter SDK 的安装、初始化、用户注册与事件上报流程,并提供参数说明和调用示例。

查看 Markdown

本文档为Flutter接入 引力引擎的技术接入方案,具体 Demo 请参考GitHub开源项目,Demo 工程中可以参考 main.dart 脚本中对每一个方法的调用示例。

在开始接入前,建议您先阅读 接入前准备以了解接入必备的基础概念。

1. SDK 基础配置

如果要在您的 Flutter 应用中使用GrivityEngine Flutter SDK,请先将 SDK 加入项目。

请把以下内容添加到你Flutter工程的 pubspec.yaml 文件中:

Flutter最新version请参考gravity-flutter库

dependencies:
  gravity_engine_flutter_sdk: ^version

1.1 Android配置

Project 级别的 build.gradle 文件中添加如下配置依赖:

maven("https://nexus.gravity-engine.com/repository/maven-releases/")
maven("https://nexus.gravity-engine.com/repository/maven-snapshots/")
maven("https://developer.huawei.com/repo")
maven("https://developer.hihonor.com/repo")

1.2 Harmony配置

在App模块启动的Ability里,onCreate方法里添加sdk生命周期

import GravityEngineFlutterSdkPlugin from 'gravity_engine_flutter_sdk';

export default class EntryAbility extends FlutterAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
      super.onCreate(want,launchParam);
      GravityEngineFlutterSdkPlugin.onFlutterAppStart(this.context,want.parameters);
    }
}

2. 配置并启动 SDK

请参考以下代码来进行 SDK 的初始化,建议在能够获取到用户唯一 ID,如Android 设备的oaid、iOS 设备的IDFV时,尽早的进行初始化。

import 'package:gravity_engine_flutter_sdk/GravityEngineSDK.dart';
GravityEngineSDK.startGravityEngine(
     accessToken:xxxxxxx // 项目通行证,在:网站后台-->设置-->应用列表中找到Access Token列 复制(首次使用可能需要先新增应用)
     //预设公共属性
     presetSuperProperties:{"testSuperKey":"testSuperValue"}
    //鸿蒙应用的clientid在此传入,不传或传空会由引力SDK自动生成
    //clientId:xxxxxxx
    );
//开启自动采集
GravityEngineSDK.enableAutoTrack([AUTO_TRACK_EVENTS.APP_ALL])

3. 初始化

3.1 添加 att 弹窗描述(iOS配置)

需要先在 info.plist 文件中添加跟踪权限请求描述文字,如果不添加会导致 idfa 获取失败!描述文字内容仅作示例,具体请联系您的产品同学确认!

<key>NSUserTrackingUsageDescription</key>
<string>此标识符将用于向您推荐个性化广告。</string>

3.2 调用引力初始化

在可以获取到用户唯一性信息时调用本方法,推荐首次安装启动时调用,后续其他方法均需在本方法回调成功之后才可正常使用。

Harmony 建议在startGravityEngine之后延迟500ms在调用Harmony 的initialize

GravityEngineSDK.initialize(clientId,nickname,enableSyncAttribution,channel,MyCallBack(),adData: {"testAdKey":"testAdValue"});
class MyCallBack extends InitializeCallback {
  @override
  void onSuccess(Map<Object?, Object?>? responseJson) {
    // 成功回调的处理
    print("Initialization succeeded with response: $responseJson");
  }

  @override
  void onFailed(String? errorMsg) {
    // 失败回调的处理
    print("Initialization failed with error: $errorMsg");
  }
}

参数说明:

参数名称参数含义参数类型是否必传
clientId用户唯一 ID(例如 UID 或者设备 ID)。如果传空,则引力 sdk 内部会自动采集设备 id 填入,采集优先级顺序为:oaid > android_id > imei,如果所有id 都采集不到时,会生成随机的 16 位 id 保存到本地缓存中以保持相对稳定 鸿蒙应用无需传入此参数string
nickname用户昵称,如果传空,则引力 sdk 内部会自动根据 client_id 计算 md5 生成string
channel用户初始化渠道(例如 xiaomi、huawei 等)string
enableSyncAttribution是否开启同步获取归因信息,具体请参考同步归因boolean
adData预设归因信息object

4. 事件上报

4.1 业务注册事件上报

如果您的应用不需要追踪用户注册行为,可以跳过此事件接入。此功能仅适用于需要统计业务注册转化数据的场景。

该方法可多次调用,每次调用都会上报一个用户注册事件(计算指标时会去重)

当用户完成应用内业务注册后,您可以调用 trackRegisterEvent 方法来上报用户注册事件($AppRegister)给引力,引力会使用该事件统计指标:标准_注册数

方法示例

static Future<void> trackRegisterEvent();

调用示例

GravityEngineSDK.trackRegisterEvent();

4.2 付费事件上报

付费事件上报用于收入统计和分析,如您的应用不涉及内购或付费服务,则无需接入此事件。

如果您需要通过后端 API 方式上报付费事件,请参考 混合上报模式 来接入事件上报接口报送付费事件。

当用户发生付费行为时,需要调用 trackPayEvent 方法记录用户付费事件,此事件非常重要,会影响买量和 ROI 统计,请务必重点测试!

方法示例

static Future<String?> trackPayEvent(int payAmount, String payType, String orderId, String payReason, String payMethod);

参数说明

参数名称参数含义参数类型是否必传
payAmount付费金额 单位为分。请务必注意,传错单位可能会导致买量受到影响!int
payType货币类型 按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等,具体请参考:国际标准组织 ISO 4217 代码表String
orderId订单号。引力引擎会通过订单号去重,避免重复上报,请务必准确传入!String
payReason付费原因 例如:购买钻石、办理月卡String
payMethod付费方式 例如:支付宝、微信、银联等String

调用示例

GravityEngineSDK.trackPayEvent(300, "CNY","order_id","月卡", "支付宝");

4.3 广告观看事件上报

广告观看上报适用于广告变现类应用,若您的应用未集成广告模块,则无需接入此事件。

若您的产品内有广告变现,则需要在用户点击广告观看的同时上报用户广告观看事件给引力,具体参考如下:

方法示例

static Future<void> trackAdShowEvent(String adUnionType,String adPlacementId,String adSourceId,String adType,String adnType,double ecpm);

参数说明

为生成准确的广告收益分析报表,请尽量遵循规范填写下方的广告平台参数。正确的字段是生成有价值报表的基础。

我们为您准备了详细的指引: 👉 广告聚合平台字段配置说明

参数名称参数含义参数类型是否必传
adUnionType广告聚合平台类型 (取值为:topon、gromore、admore、self,分别对应Topon、Gromore、Admore、自建聚合)String
adPlacementId广告瀑布流ID(广告位ID)String
adSourceId广告源ID(代码位ID)String
adType广告类型 (取值为:reward(激励视频广告)、banner(横幅广告)、 native(信息流广告)、interstitial(插屏广告)、 splash(开屏广告) 、video_feed(视频信息流)、video_begin(贴片广告))String
adnType广告平台类型(取值为:csj、gdt、ks、 mint 、baidu、other,分别对应为穿山甲、优量汇、快手联盟、Mintegral、百度联盟、其他平台)String
ecpm预估ECPM价格(千次展示收入(单位元)) 请务必注意,做好单位转换,传错单位可能会导致买量受到影响!Number建议填写

调用示例

GravityEngineSDK.trackAdShowEvent("topon","placement_id","ad_source_id","reward","csj",1.0,);

4.4 提现事件上报

提现事件仅与涉及用户提现功能的平台相关,如无此类业务需求,则无需接入此事件。

当用户发生应用内提现行为时,需要调用 trackWithdrawEvent 方法记录用户提现事件!

方法示例

static Future<void> trackWithdrawEvent(int payAmount,String withPayType,String withOrderId,String payReason,String payMethod);

参数说明

参数名称参数含义参数类型是否必传
payAmount提现金额 单位为分int
payType货币类型 按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等 国际标准组织 ISO 4217 代码表String
orderId订单号。引力引擎会通过订单号去重,避免重复上报,请务必传入!String
payReason提现原因 例如:用户首次提现、用户抽奖提现String
payMethod提现支付方式 例如:支付宝、微信、银联等String

调用示例

GravityEngineSDK.trackWithdrawEvent(300, "CNY", "order_id_xxxx1", "用户首次提现","支付宝");

5. 接入验证

正式上线之前,请完成本节的校验,否则可能会导致买量上报异常!

5.1 关键事件验证

在引力后台事件流 界面开启加载实时数据,并在产品中触发以下几个事件。事件流使用说明:事件流 - 飞书云文档

事件名事件英文名触发时机采集方式默认映射到媒体事件备注
用户注册$AppRegister用户完成业务注册之后调用SDK的上报业务注册事件方法采集暂无接入了业务注册上报事件的产品均需要校验
付费$PayEvent用户付费之后调用SDK的上报用户付费事件方法采集付费接入了付费事件上报事件的产品均需要校验
广告展示$AdShow用户观看广告之后调用SDK的上报广告展示事件方法采集暂无接入了广告事件上报事件的产品均需要校验
用户提现$UserWithdraw用户提现之后调用SDK的上报用户提现事件方法采集暂无接入了用户提现上报事件的产品均需要校验

触发操作后,请在事件流 界面中筛选测试用户的 Client ID,观察对应事件是否出现在实时入库页面。若事件数据正常显示,则说明接入成功;如出现于错误数据页面请根据页面错误提示进行排查;如未显示对应数据,请及时联系引力运营支持团队获取协助。

5.2 避免重复上报

如果您之前单独接了媒体的回传(SDK 或者 API),则上线之前需要去掉,否则可能会导致重复上报数据!

至此验证无误之后,您可以正常上线了。

本页内容