# 开发人员手册

说明

建议所有自定义应用事件,全部走S2S方式进行上报。

# 选择接入方案

请根据最佳实践选择最匹配的接入方案。

支持接入方式:

  1. 纯客户端接入
  2. 客户端 + 服务群(s2s)接入 - 建议该方案
  3. Adjust / AF 平替接入

# 客户端接入

# 接入前必读

  1. 要求android最低版本minSdk: 21, 需要使用APK Signature Scheme v2进行签名
  2. 依赖 以 jar 包形式提供,在<app-dir>/libs>中加入该SDK,修改build.gradle加入如下依赖
    implementation fileTree(dir: 'libs', include: ['...', '*.jar'])
    
  3. 增加权限,AndroidManifest.xml文件中如已经包含则忽略。
    <manifest>
     ...
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="com.google.android.gms.permission.AD_ID" />
     ...
    </manifest>
    
  4. 配置允许连接HTTP URL, 需要在application标签加入 android:usesCleartextTraffic="true"
    <application android:usesCleartextTraffic="true">
    ...
    </application>
    
  5. 注意混淆规则
    • 请确保ing.bepower类不被混淆
    • 确保获取GAID的类不被混淆
      • com.google.android.gms.ads.identifier.AdvertisingIdClient
    • 确保第三方归因类不被混淆(如有用到)
      • com.adjust.sdk.Adjust (如Adjust)

# SDK初始化

在启动的Activity中添加: BePower.init(this);

public class DemoActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ‼️ 如有Adjust或AppsflyerSDK接入,请把下面代码放在三方SDK初始化之后,并且延迟300ms后调用
        // 便于获取到三方的设备ID,进行归因校准。
        BePower.init(this, new InitedCallback<String>() {
            @Override
            public void callback(String bdid) {
                // 此处初始化成功的回调,可获取bdid
            }
        });
    }
}
历史版本初始化 onCreate 方法(不建议使用)
public class DemoActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ‼️ 如有Adjust或AppsflyerSDK接入,请把下面代码放在三方SDK初始化之后,并且延迟300ms后调用
        // 便于获取到三方的设备ID,进行归因校准。
        BePower.onCreate(this);
    }
}

# SDK公共接口

# 接口:获取BDID(BePower设备ID)

提示

  • 需要将该值传给游戏服,并与用户数据关联,S2S上报的事件需要携带此参数进行数据关联;
  • ⚠️异步延迟:BePower SDK初始化后且在BePower服务器接收到信息后才能获取BDID;
  • 测试完整流程:
    1. 平台应用面板创建应用并上传APK包
    2. 安装通过跟踪链接下载的APK,才能获取到BDID(安全逻辑设定);
// isDebug: 可不传(默认false),为true时会默认BDID:bdid-T000000000001
BePower.getBdid(boolean isDebug)

// 首次打开APP获取bdid时,可能会因为延迟导致获取到空值
// 如果需在首次打开时获取BDID,请在sdk初始化中使用回调方法获取。
@Override
BePower.init(this, new Callback<String>() {
    @Override
    public void callback(String bdid) {
        // 此处初始化成功的回调,可获取bdid
    }
});

# 接口:事件上报

方法BePower.report(context, eventToken, eventData, isDebug)

eventToken:平台->所有应用->应用详情->事件界面进行创建。

isDebug: Boolean类型,可不传(默认为false),是否为调试模式。请确保正式环境,此值为false.

eventData: 参考下面示例代码。

查看示例代码
// 如果事件参数为空,eventData须是空的HashMap,不能为null.

// 注册事件示例:
Map<String,Object> eventData = new HashMap<>();
eventData.put("uid",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
BePower.report(context, 'adfasdfas', eventData);

// 登录事件示例:
Map<String,Object> eventData = new HashMap<>();
eventData.put("uid",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
eventData.put("email",'username@gmail.com');
eventData.put("phone",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
eventData.put("fb_login_id",'1231adsdfa23');
eventData.put("user_birthday",'1995-03-21');
eventData.put("user_first_name",'mark');
eventData.put("user_last_name",'jo');
BePower.report(context, 'adfasdfas', eventData);

// 充值事件示例:
Map<String,Object> eventData = new HashMap<>();
eventData.put("uid",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
eventData.put("phone",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
eventData.put("email",'e323ec626319ca94ee8bff2e4c87cf613be6ea19919ed1364124e16807ab3176');
eventData.put("order_id",'1-xxxx-xxxx');
eventData.put("product_id",'product-1');
eventData.put("currency",'inr');
eventData.put("value",10000); // 单位:分
BePower.report(context, 'adfasdfas', eventData);

Debug模式响应数据:

{
  "status": 200,
  "message": "",
  "mode": "debug", // 仅在debug测试时返回
  "eventToken": "reg", // 仅在debug测试时返回
  "event": " 用户传递内容", // 仅在debug测试时返回
}

# SDK下载

请联系对接人,SDK文件类型:.jar文件。

# 服务器接入

说明

事件上报(S2S),建议自定义应用内事件优先使用S2S方式进行上报,确保上报数据的准确性和实时性。

# 服务器地址

主域名:https://just.bepower.ing

# 上报方式

HTTP POST: ${domain}/api/v1/devices/{bdid}/reports/{event-token}?app_token={app-token}

# URL参数说明

  • bdid: 支持gaid / bdid,bdid可在BePower SDK初始化成功后获取;

    注意⚠️:如bdid为空时,请用gaid(Google Advertising ID)替代。

  • event-token: 应用事件Token,在平台创建;

  • app-token: 应用识别码,在平台创建应用后可获取。

# Body参数

格式 Content-Type: application/json,详见下面事件参数列表。

{
    "uid": "", // 用户ID
    "phone": "", // 手机号
    "email": "", // 邮箱
    .... ... 
    "event_at": "" // 事件发生时的UNIX 时间戳(秒),必须以格林威治标准时间 (GMT) 时区格式发送该日期,不要使用包含本地时区的时间戳。
}

# Response

HTTP状态码2xx 表示请求成功, 4xx, 5xx 表示失败,一些httpclient可能会抛出异常,需要进行捕获。

响应数据:

{
  "status": 200,
  "message": ""
}

# 事件参数

说明

为了便于媒体学习更精准,请确保参数尽量准确并且丰富。

属性 类型 必须 备注 说明
event_token string Y 事件token 由平台创建,必传
event_at Number Y 事件发生事件 必传。Unix时间戳(以秒为单位),表示该时间的实际发生事件,您必须以格林威治标准时间 (GMT) 时区格式发送该日期。如果该参数如果“为空”,则以服务器接收事件的时间作为事件的发生时间。
third_id string N 第三方设备ID 事件发生时,如有此值必传 ,如Adjust ADID ,AFID
uid string Y 用户唯一ID(SHA256) 事件发生时,如有此值必传
email string Y 邮箱(SHA256) 事件发生时,如有此值必传
fb_login_id string N FB登录编号 事件发生时,如有此值必传
user_birthday string N 出生日期 YYYY-MM-DD格式
user_first_name string N 用户名 事件发生时,如有此值必传 , 推荐使用罗马字母字符 a 至 z。仅限小写字母,且不可包含标点符号。若使用特殊字符,则须按 UTF-8 格式对文本进行编码。
user_last_name string N 用户姓 事件发生时,如有此值必传 , 推荐使用罗马字母字符 a 至 z。仅限小写字母,且不可包含标点符号。若使用特殊字符,则须按 UTF-8 格式对文本进行编码。
phone string Y 手机号(SHA256) 事件发生时,如有此值必传 ,"移除符号、字母及任何前导零。手机号必须包含用于匹配的国家/地区代码(例如,印度手机号前面必须带有数字 91) 示例: 输入:手机号+91 1234-5678-90 ,标准化格式:911234567890
currency string Y 币种 事件发生时,充值相关事件必传 ,3位币种代码
value string Y 价值(金额) 单位:分,充值相关事件必传
order_id string Y 订单ID 事件发生时,如有此值必传
product_id string Y 商品ID 事件发生时,如有此值必传
product_name string N 商品名称 事件发生时,如有此值必传
上次更新: 7 days ago