本文档说明运营 SDK(下面称 SDK)对游戏盒云游戏的优惠券、充值等功能的支持
下图示意了云游戏过程中各个实体的包含关系和通信流程
在游戏盒内进行云游戏,硬件部署结构有以下包含关系:
注意:上述包含关系中出现了两个游戏盒、两个运营SDK,它们完全可以是不同的
一些典型的通信流程
game key
对于具体功能,还需要额外配置,将在下文说明
游戏盒调用充值前需要以特定参数初始化,以告知 SDK 的初始化方式
mOpeCenter = OperateCenter.getInstance();
OperateConfig opeConfig = new OperateConfig.Builder(requireContext())
.setGameKey(mGame.key()) // game key,从云端获取
.setOrientation(SettingProvider.screenOrientation()) // SDK 页面方向,跟随游戏
.setForCloud(true) // 是否为云游戏充值初始化
.build();
mOpeCenter.setConfig(opeConfig);
mOpeCenter.init(MainActivity.this, new OperateCenter.OnInitGlobalListener() {
@Override
public void onInitFinished(boolean isLogin, User userInfo) {
// 初始化后处理
}
@Override
public void onUserAccountLogout(boolean fromUserCenter) {
// 用户登出,游戏应回到自身登录页面
}
@Override
public void onSwitchUserAccountFinished(boolean fromUserCenter, User userInfo) {
// 用户切换,游戏应回到选服页面
}
});
/*
* 获取云游戏优惠券View
*
* @param activity 游戏Activity
* @param args 游戏盒向游戏盒服务端临时请求获取到的accessToken
* @param listener1 踢出回调对象;其中code:607、608为踢出标识;message:为踢出说明文案
* @param listener2 需要手机认证时的回调对象;
* @return 优惠券view;在未初始化 || activity== null || gameBoxToken || listener1 == null || listener2 == null时该view可能为空
*/
.getCouponView(activity,args,
mOpeCenternew OpeResultListener() {
@Override
public void onResult(int code, @Nullable String message) {
}},
new OpeResultListener() {
@Override
public void onResult(int code, @Nullable String message) {
}
});
/**
* 云游戏优惠券页面,刷新优惠券列表
*/
.refreshCouponView(); mOpeCenter
运营 SDK 支持云游戏充值方案,是将云端充值请求转发到用户环境来完成。方案如图所示:
整个流程围绕订单及其结果的传递而展开(略去不必要的细节),简要说明如下:
至此,完成整个充值流程,但是需要注意,此方案不支持单机游戏
游戏盒需要调用 SDK 内的充值接口,此接口会与游戏所用充值接口不一样
/*
* 云游戏充值.
*
* @param activity Activity对象
* @param args Map,包装充值参数,包括用户、订单、设备参数
* @param listener 充值回调对象
*/
.recharge(activity, args, new OperateCenter.OnRechargeFinishedListener() {
mOpeCenter@Override
public void onRechargeFinished(boolean success, int resultCode, String msg) {
// todo
}
});