跳到主要内容
版本:v7

开发指南

初始化

  • XDSDK 的初始化流程中会自动处理第三方 SDK 的初始化工作,包括 TapSDK。
  • 请不要在初始化完成前调用其他接口。
// MainActivity.java

import com.xd.sdk.common.XDGCommon;
import com.xd.sdk.common.base.Lang;
import com.xd.sdk.common.callback.XDGInitCallback;
import com.xd.sdk.common.data.model.InitParams;
import com.xd.sdk.common.data.model.PackageType;

import org.json.JSONObject;

// ...

private void init() {
InitParams initParams = InitParams.newBuilder()
.setPackageType(PackageType.GooglePlay) // 默认: PackageType.Normal
.setLanguage(Lang.EN) // 初始化语言
.setChannelName("GooglePlay") // 初始化渠道,默认为空,SDK 内部会按照读取顺序获取渠道顺序,这里是保留字段,在非广告渠道的自定义。读取广告包配置(仅国内) -> this -> XDConfig.json 配置
.setDBProperties(new JSONObject().put("custom_key", "custom_value")) // db 参数可透传给 TapDB 的 device_login/user_login 事件
.build();

XDGCommon.initSDK(MainActivity.this, initParams, new XDGInitCallback() {
@Override
public void initCallback(boolean success, String message) {
if (success) {
// Success
} else {
// Failure
Log.e("MainActivity", "XDSDK Init failed: " + message);
}
}
});
}

多语言

可以在初始化时直接设置语言,或者在初始化后调用该接口更改当前语言。如果未设置或者设置自动,则 SDK 会自动尝试匹配系统语言。目前支持如下语言类型。

类型简体中文繁体中文英文泰文印尼文韩语日语德语法语葡萄牙语西班牙语土耳其语俄罗斯语越南语
枚举ZH_CNZH_TWENTHIDKRJPDEFRPTESTRRUVI
// MainActivity.java

import com.xd.sdk.common.XDGCommon;
import com.xd.sdk.common.base.Lang;

// ...

private void setLanguage() {
XDGCommon.setLanguage(Lang.ZH_CN);
}

埋点

目前已集成 TapDB、Appsflyer、Firebase、Facebook 几个第三方数据统计 SDK,游戏可通过统一的埋点接口上报自定义事件和角色信息,SDK 会自动将数据传递给各个第三方 SDK 进行处理。

提示
  • SDK 内部针对 「支付成功」 事件有做统一的事件埋点处理,一般无需接入方自行上报。
  • v7 版本中,将默认不再自带 AdjustSDK,如有需要请联系平台获取接入方式。
// MainActivity.java

import com.xd.sdk.common.XDGCommon;

import java.util.HashMap;
import java.util.Map;

// ...

private void trackEvent() {
XDGCommon.trackEvent("自定义事件名称");

Map<String, Object> params = new HashMap<>();
params.put("key", "value");
XDGCommon.trackEvent("自定义带参数的事件名称", params);
}

商店评分

// MainActivity.java

import com.xd.sdk.common.XDGCommon;

// ...

private void storeReview() {
XDGCommon.storeReview(MainActivity.this);
}

Web 活动页面

提前静默预载资源

想加快玩家打开网页的加载速度且网页制作方提供了匹配的页面预载地址时,游戏可以在适当的时机提前调用该接口进行页面预载。预载过程不可见,只在后台静默完成。

预载会加载各平台的 webview 内核,会提高内存占用,预载结束后 SDK 会进行相关资源回收,但系统不一定会及时回收内存,请游戏按需使用该接口。

// MainActivity.java

import com.xd.sdk.common.XDGCommon;

// ...

private void preloadWebPage() {
String preloadUrl = "https://www.xindong.com";
XDGCommon.preloadWebPage(MainActivity.this, preloadUrl);
}

打开活动页面

该接口能打开一个活动网页,并支持一些类型的回调,比如网页想要传递数据给游戏或者网页已经被关闭了,方便游戏处理相关事项。

和预载一样,网页关闭后 SDK 会进行相关资源回收,但系统不一定会及时回收内存。

// PaymentActivity.java

import com.xd.sdk.common.XDGCommon;
import com.xd.sdk.common.callback.WebActionCallback;
import com.xd.sdk.common.entities.WebActionType;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Map;

// ...

private void openWebPage() {
String activityUrl = "https://www.xindong.com";
XDGCommon.openWebPage(PaymentActivity.this, activityUrl, new WebActionCallback() {
@Override
public void onAction(int type, @Nullable Map<@NotNull String, ?> data) {
if (type == WebActionType.CLOSE) {
// 网页关闭
} else if (type == WebActionType.MESSAGE) {
// 网页透传信息
if (data != null) {
Object value = data.get("key");
}
}
}
});
}

启用 Apple Game Center

  1. 开启 entitlements 配置

    • iOS 原生接入请在 XCode 工程中 App Targets 的 Signing & Capabilities 下添加 Game Center 权限。
    • Unity SDK 请参考接入配置 添加 Game Center 权限。
  2. 确认接入情况

    更新并配置完成后运行时 SDK 完成初始化后会自动弹出 Game Center 登录页面或者顶部提示 “欢迎回来 xxx” 的冒泡提示即表示接入成功。如果没有提示请在系统设置的 Game Center 页面确认是否启用并已登录有效账户。如若开启后仍然无法使用,请联系平台同事确认日志。

SDK 错误码定义

通用错误码

错误码说明
60000成功
60001失败
60002SDK 未初始化
60003用户未登录
60010用户取消操作
60020参数无效
60030服务不可用
60040网络错误

账号相关错误码

错误码说明
62001该登录方式不可用
62002授权令牌已过期

支付相关错误码

错误码说明
63001商品信息无效
63002支付待处理(等待用户确认)
63003支付金额超限