更新日期:2024-03-15H5游戏上架安卓越狱渠道接入文档
QuickSDK-H5 是一套建立在H5手游和游戏渠道之间的接入中间件,用以统一各H5渠道、Android渠道、iOS渠道的差异化,游戏研发只需接入QuickSDK即可和本地游戏一样直接上线所有Andorid渠道、iOS渠道.
区别与H5网页版接入方式,此种接入方式因为最终调用的登录支付为渠道的安卓、iOS代码故需要打包后方可运行,不能直接在PC浏览器上运行.
QuickSDK的工作流程如下:
· 在QuickSDK后台创建对应平台的产品。
· 添加键名为 "H5GameUrl" 的产品自定义参数(参见《如何创建使用自定义参数》).
· 游戏研发同学按照本文档接入登录、支付、服务器通知等接口
· 运营同学在QuickSDK后台添加配置各渠道参数,各渠道中的H5GameUrl参数即为该渠道实际的游戏地址.
· 运营同学使用QuickSDK打包工具一健打出Android各渠道的apk包。
QuickSDK登录流程如下:
· 游戏加载完成后,调用QuickSDK.login(callback) 方法,此方法会调起各渠道的登录界面。
· 用户完成登录后,游戏传入的callback回调方法会被调用,调用时QuickSDK会传入用户信息对象。
· 游戏获取对象的用户UID等信息,完成对用户的授权
QuickSDK支付流程如下:
· 当用户在游戏点击购买,游戏可调用QuickSDK.pay(orderInfo,callback)方法调起各自渠道的支付页面.
· 当用户完成购买够,QuickSDK会向游戏事前配置的发送地址POST数据.
· 游戏服务器接收到QuickSDK服务器通知后,根据通知内容向用户发送道具.
· 游戏客户端也可以从callback中渠道支付通知,但此通知仅做UI展示,不能作为发货依据.
在游戏页面引入QuickSDK的JS类库
http://h5.sdk.quicksdk.net/static/lib/libQuickSDKH5_To_Client.js
或 https://sdkapi02.quicksdk.net/static/lib/libQuickSDKH5_To_Client.js
游戏应调用QuickSDK的init接口,同时传入QuickSDK后台分配给游戏的参数.
代码示例:
var productCode = '05425578266356246482673853629430'; //QuickSDK后台自动分配 var productKey = '98253036'; //QuickSDK后台自动分配 QuickSDK.init(productCode,productKey,true);
针对H5投放平台,QuickSDK会默认生成游客帐号,登录不是必须的,游戏可根据自身情况调用登录接口要求用户完成登录.
针对Android/iOS平台,由于受渠道审核限制,游戏必须在游戏开始时自动调用登录接口。
调用QuickSDK的login方法示例如下:
QuickSDK.login(function(callbackData){
var message;
if(callbackData.status){
message = 'GameDemo:QuickSDK登录成功: uid=>' + callbackData.data.uid;
}else{
message = 'GameDemo:QuickSDK登录失败:' + callbackData.message;
}
document.getElementById('loginMessage').innerHTML = message;
});
调用后,会触发回调函数.
回调的callbackData对象类型如下:
| 字段 |
类型 |
说明 |
| status | bool | 是否登录成功,true成功,false失败 |
| data | uid | 渠道UID |
| username | 渠道Username | |
| token | token 游戏服务器需通过v2/checkUserInfo接口(参见服务器接口文档)验证token和UID的正确性 | |
| isLogin | 是否游客,登录后此值为true | |
| channelId | 渠道ID | |
| message | status为false时,此字段为Failed表示登录失败,为cancel表示玩家取消登录 |
JSON表现如下:
{“status”:true,”data”:{“uid”:”123”,”username”:”quicksdk”,”token”:””,”isLogin”:true},”message”:”登录成功”}
除主动调用登录后,游戏同时需处理切换帐号的回调通知.注册切换帐号的回调方法如下:
QuickSDK.setSwitchAccountNotification(function(callbackData){
});
此回调回在玩家切换帐号后触发,参数格式和登录回调一致,游戏需重新完成玩家信息认证操作.
用户点击购买时,游戏可调用pay方法传入orderInfo对象调起支付页面.
调用示例如下:
var orderInfo = new Object();
orderInfo.productCode = “05425578266356246482673853629430”;
orderInfo.uid = “uid”;
orderInfo.userRoleId = 'roleId1';
orderInfo.userRoleName = '小朋友';
orderInfo.serverId= 1;
orderInfo.userServer = '内测1区';
orderInfo.userLevel = 1;
orderInfo.cpOrderNo = 'cpOrderNo000001';
orderInfo.amount = '0.01';
orderInfo.subject = '大袋钻石';
orderInfo.desc = '一大袋钻石60个';
orderInfo.callbackUrl = '';
orderInfo.extrasParams = '';
orderInfo.goodsId = '';
orderInfo.count = 60;
orderInfo.quantifier = '个';
var orderInfoJson = JSON.stringify(orderInfo);
QuickSDK.pay(orderInfoJson,function(payStatusObject){
console.log('GameDemo:下单通知' + JSON.stringify(payStatusObject));
});
支付后,可触发回调函数,函数中可获取是否支付成功,但需要注意,此结果仅仅作为UI展示(或完全不用),发货应以服务器通知为准.
orderInfo对象如下:
|
字段 |
类型 | 说明 |
| productCode | 必传 | QuickSDK后台自动分配的参数 |
| uid | 必传 | 渠道UID |
| username | 选传 | 渠道username |
| userRoleId | 必传 | 游戏内角色ID |
| userRoleName | 必传 | 游戏角色 |
| serverId | 必传 | 角色所在区服ID |
| userServer | 必传 | 角色所在区服 |
| userLevel | 必传 | 角色等级 |
| cpOrderNo | 必传 | 游戏内的订单,服务器通知中会回传 |
| amount | 必传 | 购买金额(元) |
| count | 必传 | 购买商品个数 |
| quantifier | 必传 | 购买商品单位,如,个 |
| subject | 必传 | 道具名称 |
| desc | 必传 | 道具描述 |
| callbackUrl | 选传 | 服务器通知地址 |
| extrasParams | 选传 | 透传参数,服务器通知中原样回传 |
| goodsId | 必传 | 商品ID |
注:选传的字段值可以为空,但是对象必须包含此属性.
回调函数payStatusObject对象中status为true时为支付成功.
服务器通知接口参见《QuickSDK服务器对接文档》
调用退出接口调用示例:
QuickSDK.logout(function(logoutObject){console.log('Game:成功退出游戏');})
logoutObject对象包含status和message属性.
注册退出接口示例:
QuickSDK.setLogoutNotification(function(logoutObject){console.log('Game:玩家点击注销帐号');})
此回调会在玩家主动在渠道SDK中点击注销或切换帐号时触发
游戏需要在玩家登录或角色发生变化调用此接口.
调用示例如下:
function uploadGameRoleInfo(){ var roleInfo = new Object(); roleInfo.isCreateRole = true; roleInfo.roleCreateTime = 1490598150; roleInfo.uid = 12; roleInfo.serverId = 1; roleInfo.serverName = '内测1区'; roleInfo.userRoleName = '小朋友'; roleInfo.userRoleId = 'roleId1'; roleInfo.userRoleBalance = 1000; roleInfo.vipLevel = 1; roleInfo.userRoleLevel = 1; roleInfo.partyId = 1; roleInfo.partyName = '行会名称'; roleInfo.gameRoleGender = '男'; roleInfo.gameRolePower = 100; roleInfo.partyRoleId = 1; roleInfo.partyRoleName = '会长'; roleInfo.professionId = '1'; roleInfo.profession = '武士'; roleInfo.friendlist =''; var roleInfoJson = JSON.stringify(roleInfo); QuickSDK.uploadGameRoleInfo(roleInfoJson,function(response){ if(response.status){ document.getElementById('uploadMessage').innerHTML = '提交信息成功'; }else{ document.getElementById('uploadMessage').innerHTML = response.message; } }); }
roleInfo对象字段如下
| 字段 | 类型 | 说明 |
| isCreateRole | 必传 | 仅创建角色时传true,更新信息时传false |
| roleCreateTime | 必传 | 角色创建时间 |
| uid | 必传 | UID |
| username | 必传 | username |
| serverId | 必传 | 区服ID |
| serverName | 必传 | 区服名称 |
| userRoleId | 必传 | 游戏内角色ID |
| userRoleName | 必传 | 游戏角色 |
| userRoleBalance | 必传 | 角色游戏内货币余额 |
| vipLevel | 必传 | 角色VIP等级 |
| userRoleLevel | 必传 | 角色等级 |
| partyId | 必传 | 公会/社团ID |
| partyName | 必传 | 公会/社团名称 |
| gameRoleGender | 选传 | 角色性别 |
| gameRolePower | 选传 | 角色战力 |
| partyRoleId | 选传 | 角色在帮派中的ID |
| partyRoleName | 选传 | 角色在帮派中的名称 |
| professionId | 选传 | 角色职业ID |
| profession | 选传 | 角色职业名称 |
| friendlist | 选传 | 角色好友列表 |
注:选传的字段值可以为空,但是对象必须包含此属性.
1.QuickSDK.getChannelType(); 获取渠道ID
2.QuickSDK.getExtrasConfig(key); 获取后台配置的产品自定义参数
3.QuickSDK.setOnResumeNotification(callback) ; 注册恢复home键时通知
4.QuickSDK.setOnStopNotification(callback); 注册按下home键时通知
浏览器打开超链接 channelcode为渠道号
举例吊起渠道号为134的H5转安卓包:
打开134号渠道包
另附H5游戏上架Android渠道后台配置流程:https://www.quicksdk.com/doc-213.html
李先生:13880511661
QQ:48157910
赵先生:15390049857
QQ:1077535763
孙女士:13551010407
QQ:1799614139
QQ群:698731538