SDK接口说明
2.1 获取Sdk实例方法
ULUManager.getInstance().XXXX();
2.2 Sdk初始化接口(必接)
首先,您需要在程序开始的地方通过调用init方法初始化ULU_SDK。 在初始化失败的状态下,游戏 不应 继续调用SDK的其余API,此方法必须在UI线程中调用。 游戏启动后,在初始化失败或异常情况下, 不允许多次调用初始化接口 。
2.2.1 方法定义
void init(Activity activity, String clentId, ULUListener uluListener )
参数 | 说明 |
---|---|
activity | 游戏的Activity对象,不可为null。 |
clentId | 游戏gameId,请参考参数表 |
uluListener | 游戏初始化,登录以及退出的成功和失败回调 |
2.3 添加生命周期接口(必接)
请在游戏Activity生命周期接口中调用ULU_SDK所需生命周期接口,所有接口请务必都有调用。
- 代码示例:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ULUManager.getInstance().activityOnCreate(this);
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
//ULUAttachBaseContext()
ULUManager.getInstance().ULUAttachBaseContext(newBase);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//ULUOnActivityResult()
ULUManager.getInstance().ULUOnActivityResult(requestCode, resultCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//ULUOnRequestPermissionsResult()
ULUManager.getInstance().ULUOnRequestPermissionsResult(requestCode,permissions,grantResults);
}
@Override
protected void onStart() {
super.onStart();
//ULUOnStart()
ULUManager.getInstance().ULUOnStart(this);
}
@Override
protected void onStop() {
super.onStop();
//ULUOnStop()
ULUManager.getInstance().ULUOnStop(this);
}
@Override
protected void onPause() {
super.onPause();
//ULUOnPause()
ULUManager.getInstance().ULUOnPause(this);
}
@Override
protected void onResume() {
super.onResume();
//ULUOnResume()
ULUManager.getInstance().ULUOnResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ULUManager.getInstance().activityOnDestroy(this);
}
2.4 登录接口(必接)
游戏接入时可选游客登录进行测试,
2.4.1 方法定义
void login()
2.4.2 代码示例
//请在UI线程调用登录接口
ULUManager.getInstance().login();
2.5 注销登录接口(选接)
SDK用户中心内已有注销登录功能,不建议游戏另外设置游戏退出接口,按需接入。
2.5.1 方法定义
void logout(ULUListener uluListener)
2.5.2 参数说明
参数 | 说明 |
---|---|
uluListener | 此回调与init接口回调相同,建议复用init回调 |
2.5.3 代码示例
ULUManager.getInstance().logout(new ULUListener() {
@Override
public void onInitSuccess() {
}
@Override
public void onInitFail(String errorMsg) {
}
@Override
public void onLogoutSuccess() {
//退出成功回调
}
@Override
public void onLogoutFail(String erroMsg) {
//退出失败回调
}
@Override
public void onLoginSuccess(ULUUser uluUser) {
}
@Override
public void onLoginFail(String erroMsg) {
}
});
2.6 支付接口(必接)
2.6.1 方法定义
void pay(ULUOrder uluOrder, ULURole uluRole, ULUPayListenter uluPayListenter)
2.6.2 参数说明
参数 | 说明 |
---|---|
uluOrder | SDK创建订单所需参数,不可传null |
uluRole | 支付时角色相关参数,不可传null |
uluPayListenter | 支付成功回调:onPaySuccess,返回参数orderId(订单号),extraData(游戏扩展参数) 支付失败回调:onPayFail,返回参数orderId(订单号),errorMsg(错误信息),extraData(游戏扩展参数) |
2.6.3 代码示例
ULUOrder uluOrder=new ULUOrder();
uluOrder.setExtraData("游戏支付扩展参数,不需要可传"",不可传null");
uluOrder.setUluProductId("商品id,请在内购项清单中查看");
ULURole uluRole=new ULURole();
uluRole.setRoleName("角色名称,不可为空");
uluRole.setServerName("服务器名称,不可为空");
uluRole.setServerId("服务器ID,不可为空");
uluRole.setRoleId("角色ID,不可为空");
ULUManager.getInstance().pay(uluOrder,uluRole,new ULUPayListenter() {
@Override
public void onPaySuccess(String orderId,String extraData) {
//支付成功
//母包点击支付,不会跳转支付,直接返回支付成功
}
@Override
public void onPayFail(String orderId, String errorMsg,String extraData) {
//支付失败回调
}
});
2.7 进入用户中心(必接)
研发需要在游戏内自行添加用户中心按钮并调用此接口。
2.7.1 方法定义
void openUserCenter(ULURole uluRole, int orientation)
2.7.2 参数说明
参数 | 说明 |
---|---|
uluRole | 打开用户中心时角色相关信息 |
orientation | 打开用户中心时界面的方向 |
2.7.3 代码示例
uluRole = new ULURole();
uluRole.setRoleLevel("角色等级,不可为空");
uluRole.setRoleName("角色名称,不可为空");
uluRole.setServerName("服务器名称,不可为空");
uluRole.setServerId("服务器ID,不可为空");
uluRole.setVipLevel(1); //vip等级,如没有VIP等级机制可传0
uluRole.setRoleId("角色ID,不可为空");
ULUManager.getInstance().openUserCenter(uluRole, ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);//示例用方向为竖屏,横屏一般为SCREEN_ORIENTATION_SENSOR_LANDSCAPE,可按照自身需求修改
2.8 查询内购项商品信息(选接)
谷歌推荐位要求游戏内购项显示币种需和玩家所在地区一致,所以提供此接口用于查询内购项相关信息给需要的开发团队。建议游戏按币种配置内购显示价格表,如果查询到的币种在配置币种内则显示对应币种,如查询币种不在配置币种表内或查询商品失败,则显示默认币种,注意,此接口只适用于谷歌渠道包。
2.8.1 方法定义
void getProductList(ArrayList<String> uluProductIds, ULUGetProductListener uluQueryProductListener)
2.8.2 参数说明
参数 | 说明 |
---|---|
uluProductIds | 游戏商品ID,请勿传入限时类的商品ID |
uluQueryProductListener | 查询商品信息成功回调:onQuerySuccess,返回参数list(商品信息列表) 查询商品信息失败回调:onQueryFail,返回errorMsg(错误信息) |
2.8.3 代码示例
ArrayList<String> skuList = new ArrayList<String> ();
skuList.add("商品ID");
ULUManager.getInstance().getProductList(skuList, new ULUGetProductListener() {
@Override
public void onQuerySuccess(List<ULUProduct> list) {
//查询商品信息成功回调
//获取商品币种
String currency = uluProducts.get(0).getPayCurrency();
}
@Override
public void onQueryFail(String errorMsg) {
//查询商品信息失败回调,游戏应展示默认价格
}
});
2.9 打开客服中心接口(必接)
研发需要在游戏内自行添加客服中心按钮并调用此接口。 客服新信息回调需要游戏确保Firebase推送服务畅通后可以尝试(选接)。
2.9.1 方法定义
void openCustomerService(ULURole uluRole, ULUOnCustomerServiceNewMessageListener listener)
2.9.2 参数说明
参数 | 说明 |
---|---|
uluRole | 打开客服中心时角色相关信息 |
listener | 客服有新消息时的回调(选接) |
2.9.3 代码示例
uluRole = new ULURole();
uluRole.setRoleLevel("角色等级,不可为空");
uluRole.setRoleName("角色名称,不可为空");
uluRole.setServerName("服务器名称,不可为空");
uluRole.setServerId("服务器ID,不可为空");
uluRole.setVipLevel(1); //vip等级,如没有VIP等级机制可传0
uluRole.setRoleId("角色ID,不可为空");
ULUManager.getInstance().openCustomerService(uluRole, new ULUOnCustomerServiceNewMessageListener() {
@Override
public void onCustomerServiceNewMessage() {
//TODO 提示用户客服有新消息了,如在客服按钮上添加红点等。
}
});
2.10 埋点接口(必接)
2.10.1 Application设置
请在游戏自定义Application的onCreate()方法中添加:SLSDatabaseManager.getInstance().setupDB(getApplicationContext());
- 代码示例
public class 自定义application extends Application {
@Override
public synchronized void onCreate() {
super.onCreate();
//阿里日志服务初始化
SLSDatabaseManager.getInstance().setupDB(getApplicationContext());
}
}
2.10.2 方法定义
void uluTrackEvent(ULURole uluRole, String eventName, Map eventValues)
2.10.3 参数说明
参数 | 说明 |
---|---|
uluRole | 调用埋点接口时角色相关信息,如没有可传空 |
eventName | 埋点需求表内打点名称,不可为空 |
eventValues | 回传键值对,打点有明确要求需回传参数时必传,未明确可传空 |
2.10.4 代码示例
ULURole uluRole = new ULURole();
uluRole.setRoleLevel("角色等级");
uluRole.setRoleName("角色名称");
uluRole.setServerName("服务器名称");
uluRole.setServerId("服务器ID");
uluRole.setVipLevel(1); //vip等级,如没有VIP等级机制可传0
uluRole.setRoleId("角色ID");
Map<String,String> map=new HashMap<String,String>();
map.put("回传键","回传值");
ULUManager.getInstance().uluTrackEvent(uluRole,"打点名称",map);
2.11 礼包兑换功能(选接)
2.11.1 方法定义
void GiftPackDialog(Activity activity, ULURole uluRole)
2.11.2 参数说明
参数 | 说明 |
---|---|
activity | 游戏的Activity对象,不可为null。 |
uluRole | 调用礼包接口时角色相关信息 |
2.11.3 代码示例
ULURole uluRole = new ULURole();
uluRole.setRoleLevel("角色等级");
uluRole.setRoleName("角色名称");
uluRole.setServerName("服务器名称");
uluRole.setServerId("服务器ID");
uluRole.setVipLevel(1); //vip等级,如没有VIP等级机制可传0
uluRole.setRoleId("角色ID");
ULUManager.getInstance().GiftPackDialog(MainActivity.this,uluRole);
2.12 问卷调查功能(选接)
此功能需游戏服务端接入礼包功能才能发放奖励
2.12.1 方法定义
void openQuestionWeb(ULURole uluRole)
2.12.2 参数说明
参数 | 说明 |
---|---|
uluRole | 调用问卷接口时角色相关信息 |
2.12.3 代码示例
ULURole uluRole = new ULURole();
uluRole.setRoleLevel("角色等级");
uluRole.setRoleName("角色名称");
uluRole.setServerName("服务器名称");
uluRole.setServerId("服务器ID");
uluRole.setVipLevel(1); //vip等级,如没有VIP等级机制可传0
uluRole.setRoleId("角色ID");
ULUManager.getInstance().openQuestionWeb(uluRole);
2.13 聚合分享功能(选接)
2.13.1 方法定义
void setULUShareListener(ULUShareListener uluShareListener)
2.13.2 参数说明
参数 | 说明 |
---|---|
uluShareListener | 分享成功回调:onShareSuccess 分享失败回调:onShareFailed,返回errorMsg(错误信息) 分享取消回调:onShareCancel |
intent传值:shareImageFile | 分享图片,本地图片File,不可为空 图片要求2M以内的PNG/JPG/JPEG,1:1或者16:9/9:16 |
intent传值:shareText | 分享文案,注意fb禁止设置默认文案,sdk会自动屏蔽 |
intent传值:shareLink | 分享链接,可选,在fb与kakao分享生效,会覆盖配置中的ulu_kakao_shareurl项 |
2.13.3 代码示例
Intent intent = new Intent(MainActivity.this,ULUShareActivity.class);
intent.putExtra("shareImageFile", file);
intent.putExtra("shareText", "分享文案");
intent.putExtra("shareOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//分享界面方向
intent.putExtra("shareLink", "分享链接,比如https://www.google.com");
startActivity(intent);
ULUShareActivity.setULUShareListener(new ULUShareListener() {
@Override
public void onShareSuccess() {
//分享成功回调
}
@Override
public void onShareFailed(String errorMsg) {
//分享失败回调及错误信息
}
@Override
public void onShareCancel() {
//分享取消回调
}
});
2.14 谷歌评分功能(选接)
测试评分功能需要谷歌测试账号,非测试账号不能拉起,不管拉起成功还是失败都应该正常游戏,不能影响游戏进程
2.14.1 方法定义
void inAppReview()
2.14.2 方法调用
ULUManager.getInstance().inAppReview();
2.15 设置登录功能(选接)
用于唤起除了标准登录框以外的登录模式,在调用登录之前调用即可。 请注意LOGIN_MODE_EXTRA开头的为特定游戏定制模式,在未被通知前请勿使用LOGIN_MODE_EXTRA开头的模式
2.15.1 方法定义
void setLoginMode(int loginMode)
2.15.2 方法调用
ULUManager.getInstance().setLoginMode(ULUManager.LoginMode.LOGIN_MODE_NORMAL);//LOGIN_MODE_NORMAL为默认登录模式,与不调用此方法的表现相同
2.16 获得含有本地化的商品信息接口 (选接)
通过游陆商品id获得商品信息,如果游戏完全无法自行判断显示商品的币种等内容,可以调用此接口获得由我方后端判断的适配当前用户的商品信息。否则不需要调用此接口
2.16.1 方法定义
void getProductPriceByProductId(List<String> uluProductIdList, ULUGetProductPriceListener listener)
2.16.2 参数说明
参数 | 说明 |
---|---|
uluProductIdList | 游陆商品id的List |
listener | 接收回调的listener |
2.16.3 代码示例
List<String> tempList = new ArrayList<>();
tempList.add("游陆商品id");//请根据商品表自行替换
tempList.add("游陆商品id2");//请根据商品表自行替换
ULUManager.getInstance().getProductPriceByProductId(tempList, new ULUGetProductPriceListener() {
@Override
public void onFailed(int errorCode) {
//errorCode详情参考ULUManager中ERROR_CODE开头字段
//-1为未知错误,-2为网络错误,-3为无对应数据
}
@Override
public void onSuccess(List<ULUProductWithCurrency> productList) {
//详情参考ULUProductWithCurrency类
ULUProductWithCurrency product = produtList.get(0);//这里随便取了第一个用来做示例
String uluProductCode = product.getUluProductCode();//游陆商品id,和传入的参数相同
String productName = product.getProductName();//商品名称,例:一颗钻石
String description = product.getDescription();//商品描述,例:这是一颗闪亮且价值连城的钻石
String currency = product.getCurrency();//货币,例:TWD
String mark = product.getMark();//货币符号,例:NT$
String price = product.getPrice();//价格,例:100
String productIcon = product.getProductIcon();//商品图标,例:https://www.picture001.com
}
}
2.17 获得当前用户绑定账号信息(选接)
在已登录的状态下获取当前用户的账号绑定信息,用于显示一些绑定相关的引导或奖励发放
2.17.1 方法定义
void getCurrentUserAccountBindInfo(ULUGetCurrentUserAccountBindInfoListener listener)
2.16.2 参数说明
参数 | 说明 |
---|---|
listener | 接收回调的listener |
2.16.3 代码示例
ULUManager.getInstance().getCurrentUserAccountBindInfo(new ULUGetCurrentUserAccountBindInfoListener() {
@Override
public void onFailed(int errorCode) {
//errorCode详情参考ULUManager中ERROR_CODE开头字段
//-1为未知错误,-2为网络错误,-3为无对应数据
}
@Override
public void onSuccess(ULUAccountBindInfo info) {
String email = info.getEmail();//如果绑定了游陆账号,则可以获得注册邮箱
String uid = info.getUid();
boolean isBind = info.isAnyBind();//是否绑定了任意一种账号
boolean isBindGoogle = info.isBindGoogle();//是否绑定了特定账号,如谷歌
}
});