更新日期: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