此文档主要是用于在游戏及应用开发商需要接入掌趣SDK时,各个用户和计费相关的接口参考说明。
用于在游戏及应用开发商需要接入掌趣BASE SDK时,了解BASE SDK如何接入,接入过程中需注意的事项等。
接入掌趣的游戏及应用的android 客户端开发者。
服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》
安卓包是指androidmainfest.xml中的versionName。
在掌趣自动打包系统里,serviceId是区分渠道信息的标识,研发如果要识别当前游戏包属于哪个渠道,请调用获取serviceId的接口,并和技术经理匹配各serviceId对应的渠道。
如果产品接入了第三方SDK,有需要根据包名、签名分配参数的情况,一定要提前通知技术经理。各个渠道包的包名、签名、证书等都不一样。自动打包将替换客户端包名、签名和证书。但不会自动替换第三方的参数。
如地图、语音、推送能功能的第三方SDK。具体如何实现,需要根据具体情况操作。
可以将使用到包名的地方配置为:ourpalm_package_name 。打包时掌趣打包工具会将ourpalm_package_name替换为包名。
游戏res资源文件中,png及xml文件命名最好不好过于简单,以免和第三方渠道重复。如close.png或close.xml命名的文件,可以加上游戏名前缀,game_close.png或game_close.xml
游戏需要调用Ourpalm_GetEnableInterface这个接口,根据的返回值来确认游戏是否需要启用这三个接口和相应的UI按钮展示。因为根据渠道不同会用到其中之一或者所有都不用。返回值详见Ourpalm_GetEnableInterface接口说明。
具体接口介绍参见:11 Activity生命周期相关接口的调用
Ourpalm_Entry.getInstance(this).Ourpalm_onPause()
Ourpalm_Entry.getInstance(this).Ourpalm_onRestart()
Ourpalm_Entry.getInstance(this).Ourpalm_onResume()
Ourpalm_Entry.getInstance(this).Ourpalm_onStart()
Ourpalm_Entry.getInstance(this).Ourpalm_onStop()
Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy()
Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult()
Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged()
Ourpalm_Entry.getInstance(this).Ourpalm_onNewIntent()
支付接口中的参数注意:
propName:商品名称(也可以理解为商品单位)。
propCount:商品数量。
注意:对该接口中的商品名称和商品数量2个参数具体说明。
如游戏中所卖商品在游戏界面显示为“100元宝或100金币”,当调用支付接口时,商品名称务必传“元宝或金币”,商品数量务必传“100”。切记不可商品名称传“100元宝或100金币”,商品数量传“1”;
如游戏中所卖商品在游戏界面显示为“月卡或礼包”一类,当调用支付接口时,商品名称请直接传“月卡或礼包”,商品数量传“1”。
切记 如果当前商品是某种虚拟游戏货币,商品名称中不要出现数量的概念。
方式一:游戏工程直接引用《OurpalmAndroid_SDK_Lib_Base完整版本号》此lib工程,工程内已包含res中的资源和lib库,assets中资源,请自行从《资源,LIB库和配置文件》目录中复制assets文件夹中内容到游戏工程的assets目录。如何引用lib工程这里不做详细说明,如不清楚如何导入lib工程到游戏工程请上网搜索,或者咨询掌趣SDK技术人员。
方式二:直接从《资源,LIB库和配置文件》目录中复制所有资源和lib库到游戏工程的相应目录,包含res,libs,assets。
<!-- OurpalmSDK需要的权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="our.test.base.demo"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0.1" >
<!-- 如游戏本身有Application类,则需要在代码中继承ourpalm.android.channels.Info.Ourpalm_Channels_Application;如游戏本身没有Application类,则需要在此添加配置,将AndroidManifest.xml中application的名字命名为"ourpalm.android.channels.Info.Ourpalm_Channels_Application" -->
<application android:name="ourpalm.android.channels.Info.Ourpalm_Channels_Application"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- 客服反馈功能的Activity V3.1.7新增加 -->
<activity
android:name="ourpalm.android.opservice.Ourpalm_OpService_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- 打开指定页面Activity V3.4.0版本新增加-->
<activity
android:name="ourpalm.android.view.Ourpalm_WebView_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="sensor"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<!-- BASE SDK中上传崩溃日志的服务 V3.1.9版本新增加 -->
<service
android:name="ourpalm.android.c.Ourpalm_CrashService"
android:exported="false"
android:process=":ourpalmCrash" >
<intent-filter>
<action android:name="ourpalm.UpCrashLog" />
</intent-filter>
</service>
<!-- 游戏自己的启动activity类名,需要完整路径,必须配置 -->
<meta-data
android:name="ourpalm_class_name"
android:value="com.ourpalm.test_ourpalm_v3.MainActivity" />
<!-- 游戏请配置自己游戏的展示类型,竖屏游戏请配置成 portrait,横屏游戏请配置成landscape -->
<meta-data
android:name="ourpalm_screenOrientation"
android:value="landscape" />
<meta-data
android:name="ourpalm_gametype_console"
android:value="false" />
</application>
注意:APK安装位置属性必须配置为android:installLocation=”auto”
1 手机游戏客户端会调用掌趣sdk进行sdk初始化操作
2 掌趣sdk向掌趣用户中心服务器发起登录/注册的请求
3 掌趣用户中心服务器向掌趣sdk返回token、用户信息等等
4 掌趣sdk向游戏客户端返回登录结果,包含token和用户相关信息
5 游戏客户端上传用户信息到游戏服务器
6 服务器根据token向掌趣用户中心服务器获取用户信息
7 掌趣用户中心服务器向游戏服务器返回用户信息
8 游戏服务器向游戏客户端返回登录结果
/**
* 初始化SDK
*
* @param gameType
* 游戏类型 1:网游;2:单机
* @param gameVer
* 游戏版本号
* @param gameResVer
* 游戏资源版本号,无资源版本号可传""
* @param listener
* 回调接口
**/
public void Ourpalm_Init(String gameType, String gameVer, String gameResVer, Ourpalm_CallBackListener listener)
参数名称 | 是否必传 | 类型 | 说明 |
---|---|---|---|
gameType | 必须 | String | 游戏类型,GameInfo.GameType_Online表示网游,GameInfo.GameType_Console表示单机。 |
gameVer | 可选 | String | SDK优先读取AndroidManifest.xml里面的版本号,如未获取到则使用此参数。 |
gameResVer | 可选 | String | 游戏资源版本号,如游戏无此概念则可以传null。 |
listener | 必须 | Ourpalm_CallBackListener | 游戏需实现此回调中的所有接口。 |
// 初始化SDK
Ourpalm_Entry.getInstance(this).Ourpalm_Init("1", gameVer, gameResVer, new Ourpalm_CallBackListener() {
@Override
public void Ourpalm_LogoutSuccess() {
// TODO Auto-generated method stub
// 当前渠道带有注销功能的话由游戏实现,如返回到登录界面。
// 单机游戏不用实现
}
@Override
public void Ourpalm_LogoutFail(int code) {
// TODO Auto-generated method stub
// 当前渠道带有注销功能的话由游戏实现
// 单机游戏不用实现
}
@Override
public void Ourpalm_LoginSuccess(String tokenId, String data) {
// TODO Auto-generated method stub
// 登录成功回调,网络游戏必须实现
// 单机游戏不用实现
}
@Override
public void Ourpalm_LoginFail(int code) {
// TODO Auto-generated method stub
// 登录失败回调,网络游戏必须实现
// 单机游戏不用实现
}
@Override
public void Ourpalm_InitSuccess() {
// TODO Auto-generated method stub
// 待SDK的初始化完成后,游戏开始实现游戏本身的初始化
// 初始化游戏
}
@Override
public void Ourpalm_InitFail(int code) {
// TODO Auto-generated method stub
// SDK初始化失败的回调,游戏可以在这里实现自己的逻辑处理,可以只提示用户后退出游戏,也可以继续游戏,但SDK的某些功能可能会受到影响
}
@Override
public void Ourpalm_ExitGame() {
// TODO Auto-generated method stub
// 游戏使用掌趣SDK退出接口时必须实现此回调,在此处实现退出游戏的功能。
MainActivity.this.finish();
// android.os.Process.killProcess(android.os.Process.myPid());
}
@Override
public void Ourpalm_SwitchingAccount(boolean Success, String tokenId, String userInfo) {
// TODO Auto-generated method stub
// 当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
// 一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
// 二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程(游戏能在游戏中直接实现账号切换,人物改变的除外,不需返回登录界面)。
// Success=true表示切换成功,Success=false表示切换失败,tokenId和userInfo同登录成功接口
// 单机游戏不用实现
}
});
登陆注销成功:public void Ourpalm_LogoutSuccess();
登陆注销失败:public void Ourpalm_LogoutFail(int code);
登陆成功:public void Ourpalm_LoginSuccess(String tokenId, String data);
登陆失败:public void Ourpalm_LoginFail(int code);
初始化成功:public void Ourpalm_InitSuccess();
初始化失败:public void Ourpalm_InitFail(int code);
退出游戏:public void Ourpalm_ExitGame();
切换账号回调:public void Ourpalm_SwitchingAccount(boolean Success,
String tokenId, String userInfo);
以上接口中的code参数为错误码。
调用第三方SDK的登陆功能。
当为官网包时会自动调用掌趣官网登陆界面。
/**
* 登陆接口
*/
public void Ourpalm_Login();
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Login();
public void Ourpalm_LoginSuccess(String tokenId, String data)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
tokenId | 必须 | String | 掌趣用户中心返回的当前登陆用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登陆验证,验证通过才能让用户进入游戏,详看服务器登陆验证接口。 |
data | 必须 | String | 当前登陆用户的用户信息数据,json格式 |
tokenId == 45bf7d3b-5041-451d-b660-b872ba4c831d
data == {"id":"0101540000000000000000000000000623530796","userName":"oPlat000000001000047","returnJson":{"ErrorCode":"1","ErrorDesc":"有效"}}
id:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。
userName:掌趣用户中心生成的用户名称。
returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。
public void Ourpalm_LoginFail(int code)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
code | 必须 | int | 错误码详情 请查看错误码列表 |
注销当前登陆账号,注销成功后会调用游戏实现功能后的注销回调接口。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口
/**
* 登陆注销
*/
public void Ourpalm_Logout()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_Logout();
某些渠道SDK当登陆过一次后下次登陆会变成自动登陆,这个时候如果SDK内部没有注销或者切换账号的按钮,需要游戏调用此接口实现账号切换功能。
客户端需要根据Ourpalm_GetEnableInterface 返回值,判断是否需要展示UI和调用此接口
/**
* 账号切换
*/
public void Ourpalm_SwitchAccount();
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SwitchAccount();
成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置(type=1)和一次登录设置(type=2);用户使用老角色登录,则只需要调用一次登录设置(type=2)。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置(type=1),再调用登录设置(type=2)
/**
* 设置游戏角色信息
* @param type
* 1:角色注册,2:角色登录
* @param gameServerName
* 当前角色所属服务器名称
* @param gameServerId
* 当前角色所属服务器ID(必须纯数字)
* @param roleName
* 当前角色名字(不支持富文本)
* @param roleId
* 当前角色ID(不可使用特殊符号)
* @param rolelv
* 当前角色等级,无等级可传""
* @param roleViplv
* 当前角色VIP等级,无VIP等级可传""
*
*/
public void Ourpalm_SetGameInfo(int type, String gameServerName,
String gameServerId, String roleName, String roleId,
String rolelv,String roleViplv)
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_SetGameInfo(1, "服务器名称", "服务器ID", "测试角色名称", "测试角色ID", "测试角色等级", "测试角色VIP等级");
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
type | 必须 | int | 1表示角色注册,2表示角色登录 |
gameServerName | 必须 | String | 当前用户所在游戏服务器名称 |
gameServerId | 必须 | String | 当前用户所在游戏服务器ID(必须纯数字) |
roleName | 必须 | String | 当前角色名称(不支持富文本) |
roleId | 必须 | String | 当前角色ID(不可使用特殊符号) |
rolelv | 必须 | String | 当前角色等级,如无可传”” |
roleViplv | 必须 | String | 当前角色VIP等级,如无可传”” |
绑定官网账户的回调,游戏如果有需要绑定结果可以设置,不需要可以不使用该接口。
/**
* 绑定账号结果回调 韩国需求使用,可能会和登录成功 或者其他回调 同时触发
*
* @param listener
*/
public void SetOurpalm_AccountBindListener(Ourpalm_AccountBindListener listener)
Ourpalm_Entry.getInstance(this).SetOurpalm_AccountBindListener(new Ourpalm_AccountBindListener() {
@Override
public void Ourpalm_AccountBindSuccess(String tokenId, String userInfo) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_AccountBindSuccess, tokenId == " + tokenId + " userInfo = " + userInfo);
Toast.makeText(MainActivity.this, "通知游戏绑定成功", Toast.LENGTH_LONG).show();
}
@Override
public void Ourpalm_AccountBindFail(int code) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_AccountBindFail,");
Toast.makeText(MainActivity.this, "通知游戏绑定失败", Toast.LENGTH_LONG).show();
}
@Override
public void Ourpalm_AccountBindCancel() {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_AccountBindCancel,");
Toast.makeText(MainActivity.this, "通知游戏绑定取消", Toast.LENGTH_LONG).show();
}
});
/**
* 绑定账号成功
*
* @param tokenId
* 用户绑定账号返回的tokenid
*
* @param userInfo
* 绑定账号后返回的用户信息
*/
public abstract void Ourpalm_AccountBindSuccess(String tokenId, String userInfo);
/**
* 绑定失败
*
* @param code
* 错误标识
*/
public abstract void Ourpalm_AccountBindFail(int code);
/**
* 绑定取消
*/
public abstract void Ourpalm_AccountBindCancel();
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
tokenId | 必须 | String | 掌趣用户中心返回的当前登陆用户的tokenId,游戏客户需将此参数的值传给游戏服务器,游戏服务器需来掌趣用户中心进行登陆验证,验证通过才能让用户进入游戏,详看服务器登陆验证接口。 |
userInfo | 必须 | String | 当前登陆用户的用户信息数据,json格式 |
tokenId == 45bf7d3b-5041-451d-b660-b872ba4c831d
userInfo == {"id":"0101540000000000000000000000000623530796","userName":"oPlat000000001000047","returnJson":{"ErrorCode":"1","ErrorDesc":"有效"}}
id:掌趣用户中心生成的用户ID,游戏应以此ID作为用户登陆的唯一标识。
userName:掌趣用户中心生成的用户名称。
returnJson:第三方用户系统返回给掌趣用户中心的数据,不同渠道返回的数据会有所不同,游戏根据情况酌情使用,不需要的话可以不取。
谷歌渠道要求所有上架的应用都需要带删除账号功能。实现删除账号功能调用此接口即可。
// 删除账号
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("CloseAccountWithUserInfo");
此接口为自定义接口,可以在自定义接口中接受回调
参数名称 | 重要性 | 类型 |
---|---|---|
jsonParams.success | string | 成功:”1”,失败:”0” |
jsonParams.code | string | 错误码 |
jsonParams.desc | string | 结果状态说明 |
回调示例 {“code”:”0”,”desc”:””,”success”:”1”}
// 特殊功能回调接口。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if(id.equals("CloseAccountWithUserInfo")){
Toast.makeText(MainActivity.this, "删除账号信息:"+arg[0], Toast.LENGTH_LONG).show();
}
恢复账号回调是自定义接口
参数名称 | 重要性 | 类型 |
---|---|---|
jsonParams.status | string | 成功:”1”,失败:”0” |
jsonParams.reset | string | 错误码 |
jsonParams.desc | string | 结果状态说明 |
jsonParams.id | string | userid |
回调示例:{“status”:”1”,”desc”:”恢复账号成功”,”reset”:”1000”,”id”:”0800010000000000000000000000000010000703”}
// 特殊功能回调接口。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if(id.equals("resumeAccountCallBack")){
Toast.makeText(MainActivity.this, "恢复账号成功:"+arg[0], Toast.LENGTH_LONG).show();
}
1 base sdk向掌趣计费中心发起支付请求;
2 掌趣计费中心生成订单号,并向base sdk返回支付结果;
3 掌趣计费中心通知游戏服务器发货;
4 游戏服务器发送虚拟物品至玩家手机游戏客户端;
5 游戏服务器向计费中心返回发货结果;
调用自有支付功能或者第三方SDK的支付功能,实现游戏中的道具购买。
注意:对该接口中的商品名称和商品数量2个参数具体说明,如游戏中所卖商品在游戏界面显示为“100元宝”,当调用支付接口时,商品名称请传“元宝”,商品数量请传“100”,切记不可商品名称传“100元宝”,商品数量传“1”。
/**
*
* @param propId
* 游戏自定义的商品ID
* @param chargeCash
* 商品价格
* @param currencyType
* 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元10泰铢)
* @param propName
* 商品名称
* @param propCount
* 商品数量
* @param propDes
* 商品描述
* @param Gameurl
* 掌趣计费中心回调游戏发货地址
* @param ExtendParams
* 扩展参数
* @param callBack
* 支付回调接口
* @param rolelv
* 角色等级
* @param roleviplv
* 角色VIP等级
* @param userId
* 掌趣SDK登录成功返回的userId
* @param serverId
* 玩家登录的游戏服id
* @param roleId
* 玩家角色id
*/
public void Ourpalm_Pay(final String propId, final String chargeCash, final String currencyType,final String propName, final String propCount, final String propDes, final String Gameurl,final String ExtendParams, final Ourpalm_PaymentCallBack callBack, final String rolelv,final String roleviplv,
final String userId, final String serverId, final String roleId)
注:Android相比于iOS新增 userId、serverId、roleId等参数
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
propId | 必须 | String | 游戏自定义的道具ID 必传。 |
chargeCash | 必须 | String | 道具价格,单位为分。 |
currencyType | 必须 | String | 货币类型(1人民币2美元3日元4港币5英镑6新加坡币7越南盾8台币9韩元) |
propName | 必须 | String | 道具名称 |
propCount | 必须 | String | 道具数量 |
propDes | 必须 | String | 道具描述 |
Gameurl | 必须 | String | 游戏发放道具服务器地址,用户支付成功后掌趣计费中心会回调此地址告知游戏进行道具发放。 |
ExtendParams | 可选 | String | 游戏自定义数据,支付成功后,计费中心会将此字段数据回传给游戏服务器。 |
callBack | 必须 | Ourpalm_PaymentCallBack | 客户端回调类 |
rolelv | 必须 | String | 角色等级,请传数字,如游戏中无角色等级可以传null |
roleviplv | 必须 | String | 角色VIP等级,请传数字,如游戏中无角色VIP等级可以传null |
userId | 必须 | String | 掌趣SDK登录成功后返回的userId |
serverId | 必须 | String | 玩家登录的游戏服id |
roleId | 必须 | String | 玩家角色id |
Ourpalm_Entry.getInstance(this).Ourpalm_Pay("商品ID", "100", "1", "商品名称", "1", "商品描述", "回调地址", "我是扩展参数",
new Ourpalm_PaymentCallBack() {
@Override
public void Ourpalm_PaymentSuccess(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_PaymentSuccess ssid == " + ssid + " , pbid = " + pbid);
Toast.makeText(mContext, "花钱成功了。。。*_*", Toast.LENGTH_SHORT).show();
}
@Override
public void Ourpalm_PaymentFail(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Logs.i("info", "Ourpalm_PaymentFail code = " + code + "ssid == " + ssid + " , pbid = " + pbid);
Toast.makeText(mContext, "支付失败了", Toast.LENGTH_SHORT).show();
}
@Override
public void Ourpalm_OrderSuccess(int code, String ssid, String pbid) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "下单成功了", Toast.LENGTH_SHORT).show();}
}, RoleLv, RoleVipLv, userId, serverId, roleId);
public void Ourpalm_PaymentSuccess(int code, String ssid, String pbid);
public void Ourpalm_PaymentFail(int code, String ssid, String pbid);
/* "下单成功"表示当前订单已经成功提交,但用户是否进行支付,以计费中心服务器的通知为准。 下单成功代表支付流程结束。下单成功回调触发以后不会在有支付成功和支付失败的回调,游戏需要根据服务器通知为准。*/
public void Ourpalm_OrderSuccess(int code, String ssid, String pbid);
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
code | 必须 | int | 结果状态说明 |
ssid | 必须 | string | 掌趣计费中心生成的订单号,如支付失败或者用户取消支付时可能返回为空。 |
pdid | 必须 | string | 游戏自定义id |
注:1、Android端和iOS端返回错误码不一致。2、Android返回参数key为小写{String ssid, String pbid},iOS端返回json中的key为小驼峰{ “desc”:成功描述,”propId”:”道具ID”,”reset”:”120”,”ssId”:”订单号}
游戏登录成功后,调用此接口,打开客服反馈页面
游戏需要自己设计UI展示以及展示位置,当用户点击此按钮时,调用接口,打开客服反馈页面。
/**
* 进入客服反馈页面
*/
public void EnterServiceQuestion();
Ourpalm_OpService_Entry.getInstance().EnterServiceQuestion();
兑换礼包码
CP接入礼包码功能时,由SDK来直接提示错误提示语。
/**
* 礼包码兑换接口
* @param GiftCode 礼包码
* @param url 发货地址
* @param extendParams 扩展参数
* @param mListener 回调
*/
public void Ourpalm_GiftExchange(String GiftCode, String url,final String extendParams,final Ourpalm_GiftExchangeCallBack mListener);
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
GiftCode | 必须 | String | 礼包码 |
url | 必须 | String | 游戏发货服务器地址 |
extendParams | 可选 | String | 透传参数,成功回调内,将会返回此参数 |
mListener | 必须 | GiftExchangeCallBack | 结果回调,成功回调内参数说明packageId |
Ourpalm_Entry.getInstance(this).Ourpalm_GiftExchange("用户输入的礼包码", "游戏发货服务器地址", "透传参数",new Ourpalm_GiftExchangeCallBack());
/**
* 操作成功
* packageId 礼包码ID
* extendParams 游戏透传参数(游戏传进来的透传参数)
*/
public void Ourpalm_Success(String packageId, String extendParams);
/*
* 操作失败
* @param code
* 错误码
*/
public abstract void Ourpalm_Fail(int code);
因为某些第三方SDK需要用到生命周期中的某些方法,所以游戏客户端Activity中 必须调用掌趣SDK中定义的生命周期方法,否则可能会出现不可预估的问题。
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Ourpalm_Entry.getInstance(this).Ourpalm_onStart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Ourpalm_Entry.getInstance(this).Ourpalm_onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Ourpalm_Entry.getInstance(this).Ourpalm_onPause();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Ourpalm_Entry.getInstance(this).Ourpalm_onStop();
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Ourpalm_Entry.getInstance(this).Ourpalm_onRestart();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Ourpalm_Entry.getInstance(this).Ourpalm_onDestroy();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Ourpalm_Entry.getInstance(this).Ourpalm_onActivityResult(requestCode, resultCode, data);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
Ourpalm_Entry.getInstance(this).Ourpalm_onConfigurationChanged(newConfig);
}
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent); Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_onNewIntent(intent);
}
“用户中心”,“切换账号”,“登录注销”等接口必须接入。
提供此接口用来引导游戏合理使用以上三个接口。根据SDK返回的值,判断是否在相应渠道客户端中显示或隐藏UI展示,以及和是否调用以上三个接口。
比如当前渠道需要调用用户中心接口,则需要将用户中心按钮显示出来并实现其接口调用的功能,如不需要,则需要隐藏用户中心的按钮。其他功能同理。
此三个功能SDK只提供功能接口,无UI显示,所以需要游戏实现展示或者隐藏“用户中心”,“切换账号”,“登录注销”的UI按钮。根据返回值给予显示或者隐藏。
/**
* 获取当前渠道游戏包是否要调用“用户中心”,“切换账号”,“登陆注销”等接口
*/
public String Ourpalm_GetEnableInterface()
String enable = Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GetEnableInterface();
{"Logout":"Disabled","SwitchAccount":"Disabled","UserCenter":"Enabled"}
Enabled: 表示需要调用
Disabled: 表示不需要调用
例如以上返回数据说明:登陆注销接口不需要调用;切换账号接口不需要调用,进入用户中心接口需要调用。
进入第三方渠道SDK的用户中心或者论坛界面,或者进入官网SDK的用户中心界面。
客户端调用,根据第三方渠道SDK要求来决定是否调用
/**
* 进入用户中心接口,如果是用官网登陆的则进入官网的用户中心
*/
public void Ourpalm_GoCenter()
Ourpalm_Entry.getInstance(MainActivity.this).Ourpalm_GoCenter();
调用第三方SDK的退出提示接口,如第三方SDK无退出提示接口则调用掌趣的退出 提示界面或者直接退出游戏。
/**
* 调用第三方SDK退出提示页面,如果第三方SDK无退出提示页面则调用掌趣提示页面
* @param usetip
* 是否使用掌趣SDK的退出提示界面
*/
public void Ourpalm_ExitGame(boolean usetip)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
usetip | 必须 | Boolean | 决定是否使用掌趣SDK自带的退出提示界面, 如果第三方SDK带有退出提示界面,此参数无效 |
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
Ourpalm_Entry.getInstance(this).Ourpalm_ExitGame(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
打开后能在logcat看到SDK的日志输出,TAG为“info”和”msg”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
/**
* 是否打开日志
* @param log 是否打开日志输出
*/
public void SetLogs(boolean log)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
log | 必须 | Boolean | 是否打开日志输出 |
// 设置打开日志输出
Ourpalm_Entry.getInstance(this).SetLogs(true);
获取当前游戏包中的ServiceId。
/**
* @return 业务ID
*
public String getServiceId();
Ourpalm_Entry.getInstance(this).getServiceId();
获取当前游戏包内打入的渠道ID。
/**
* @return 渠道ID
*
public String getChannelId();
Ourpalm_Entry.getInstance(this).getChannelId();
获取当前游戏包内打入的机型组ID。
/**
* @return 机型组ID
*/
public String getDeviceGroupId();
Ourpalm_Entry.getInstance(this).getDeviceGroupId();
获取当前游戏包内打入的语言ID。
/**
* @return 语言ID
*/
public String getLocaleId();
Ourpalm_Entry.getInstance(this).getLocaleId();
获取当前游戏包内打入的OPID。
/**
* @return OPID
*/
public String getOpId();
Ourpalm_Entry.getInstance(this).getOpId();
1.需要先调用初始化接口Ourpalm_Init后 再调用 本接口获取 ServiceCode;
2.游戏研发人员 获取ServiceCode后,联系掌趣服务器端同学联调服务端日志,获取ServiceCode接入工作正式完成。
/**
* 获取ServiceCode
* @param gameResVer
* 游戏资源版本号,无资源版本号可传""
*
* @return 返回ServiceCode
*/
public String Ourpalm_getServiceCode(final String gameResVer);
// 获取掌趣serviceCode接口,游戏需要调用(SDK接口)
Ourpalm_ServiceCode_Entry.getInstance(this).Ourpalm_getServiceCode("资源版本号");
打开后能在logcat看到SDK的日志输出,TAG为“info”, 用于游戏接入SDK的调试阶段,出正式游戏包时请务必关闭日志输出。
/**
* 是否打开日志
*
* @param log
*/
public void SetLogs(boolean log)
// 设置打开日志输出,出正式包时务必注释掉,或者传false
Ourpalm_ServiceCode_Entry.getInstance(this).SetLogs(true);
打开指定url的web页面接口(可用于论坛、社区、活动)。
/**
* 加载指定URL的Web页面
*
* @param webUrl
* 页面URL
*
* @author lgc 2018年04月11日 上午11:17:52
*/
public void Ourpalm_OpenSpecificWebView(String webUrl)
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
webUrl | 必须 | String | web页面url |
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).
Ourpalm_OpenSpecificWebView(
"http://www.baidu.com");
游戏登录成功后调用本接口可以打开系统分享界面,给其它玩家分享邀请内容及邀请码,其它玩家可以通过分享app上的邀请链接拉起或安装游戏包。
注意:游戏必须接入base sdk的onNewIntent 这个生命期接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_Channel_Spreads(id, inviteMsg, inviteCode);
参数说明:
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
id | 必传 | String | 接口id 本接口为:OpenInstall_sendShareInvite |
inviteMsg | 必传 | String | 邀请内容 |
inviteCode | 必传 | String | 邀请码 |
接口示例
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_Channel_Spreads("OpenInstall_sendShareInvite", "test openinstall invite", "testvalue");
其它玩家可以通过分享app上的邀请链接拉起或安装游戏包时,会收到这个回调。其中,arg[0]即为邀请者的邀请码。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if (id.equals("OpenInstall_InviteData")) {
Logs.i("info", " Ourpalm_Spreads OpenInstall_InviteData = " + arg[0]);
}
}
});
游戏内切换多语言时调用。
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
游戏必须在主activity中实现生命周期接口attachBaseContext,具体代码如下:
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(Ourpalm_LocaleUtils.attachBaseContext(base));
}
Ourpalm_LocaleUtils.updateLocale(Context, Locale);
参数名 | 重要性 | 类型 | 说明 |
---|---|---|---|
context | 必传 | Context | 传入上下文 |
locale | 必传 | Locale | 设置地域语言(参见下面的地域语言参数说明) |
Ourpalm_LocaleUtils.updateLocale(MainActivity.this,Ourpalm_LocaleUtils.LOCALE_CHINESE);
Locale参数名 | 语言及对应的国家 |
---|---|
LOCALE_CHINESE | 简体中文_中国 |
LOCALE_CHINESE_HK | 繁体中文_中国香港 |
LOCALE_PH | 英语_菲律宾 |
LOCALE_SG | 英语_新加坡 |
LOCALE_GB | 英语_英国 |
LOCALE_English | 英语_其他地区 |
LOCALE_TL | 菲律宾语_菲律宾 |
LOCALE_IND | 印尼语_印尼 |
LOCALE_TH | 泰语_泰国 |
LOCALE_MY | 简体中文_马来西亚 |
LOCALE_RS | 俄语_俄罗斯 |
LOCALE_DE | 德语_德国 |
LOCALE_FR | 法语_法国 |
LOCALE_ES | 西班牙语_西班牙 |
LOCALE_PL | 波兰语_波兰 |
LOCALE_BR | 葡萄牙语_巴西 |
LOCALE_IT | 意大利语_意大利 |
LOCALE_KR | 韩语_韩国 |
LOCALE_TR | 土耳其语_土耳其 |
LOCALE_VI | 越南语_越南 |
LOCALE_JP | 日语_日本 |
提供helpshift在线客服功能及打开FAQ页面功能。
调用此接口,可以拉起HelpShift在线客服反馈页面。
/**
* 打开helpshift客服弹框
* @param id 接口id
* @param tag 客服入口打点
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
"helpShift_openServiceDialog","opentags");
参数 | 描述 |
---|---|
id | 接口id 本接口为:helpShift_openServiceDialog |
tag | 客服入口打点标识 |
注意:当游戏设立多个客服入口时,每个入口都要设定一个tag,同时需要把所有的tag值都提供给运营同学,运营同学在helpShift后台Settings-WORKFLOWS-Tags下添加所有定义好的tag.
调用此接口,可以拉起HelpShift FAQ页面。
/**
* 打开helpshift FAQ弹窗
* @param id 接口id
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
"helpShift_openFAQs");
参数 | 描述 |
---|---|
id | 接口id 本接口为:helpShift_openFAQs |
调用此接口,可以拉起指定问题id的helpshift客服FAQ页面,问题id由运营同学提供。
/**
* 打开helpshift指定FAQ弹窗
*
* @param activity
* @param questionPublishId
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
"helpShift_openSingleFAQ", "25");
参数 | 描述 |
---|---|
id | 接口id 本接口为:helpShift_openSingleFAQ |
questionPublishId | 指定问题id |
调用此接口,可以拉起指定问题id的helpshiftFAQ列表页面,问题id由运营同学提供。
/**
* 打开指定问题id的faq列表
*
* @param activity
* @param questionPublishId
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
"helpShift_openFAQSection", "29");
参数 | 描述 |
---|---|
id | 接口id 本接口为:helpShift_openFAQSection |
questionPublishId | 指定问题id |
调用此接口,可以设置helpshift用户信息,如果登录前调用,userId传空串,登录成功选服后,sdk会自动此调用。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads(
"helpShift_setUserInfo", userId, userName, roleId, serverId, vLevel, roleName);
参数 | 描述 |
---|---|
id | 接口id 本接口为:helpShift_setUserInfo |
userId | 用户id |
userName | 用户名称 |
roleId | 角色id |
serverId | 玩家区服id |
vLevel | 角色vip等级 |
roleName | 角色名称 |
客服人员回复消息后,玩家重进后会收到此回调
// 特殊功能回调接口。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if (id.equals("helpShift_NotificationCount")){
//arg[0] 为回复通知数,"0"表示没有新的通知
Logs.i("info", "arg[0]"+arg[0]);
Toast.makeText(MainActivity.this, "helpshift回复通知数="+arg[0], Toast.LENGTH_LONG).show();
}
}
});
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:helpShift_NotificationCount |
arg[0] | String | 0表示没有新的回复 |
根据google渠道要求,在欧盟及美国发行的游戏新用户首次启动需要弹隐私协议,
只有玩家同意后才能进入游戏。
sdk启动后会自动检测是否需要显示隐私协议。如果玩家已同意过协议,则下次启动不会自动弹出协议界面;
但如果协议内容有更新,则会再次弹出。
本接口暂时保留,目前暂时不可用,用于以后在游戏内需要显示隐私协议时调用。
调用此接口,如果玩家当前ip是欧盟或美国,会拉起隐私协议弹窗。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_OpenPrivacyProtocol();
隐私弹窗点击“不同意”、“同意”、隐私协议更新或不需要展示隐私协议时,游戏都会收到此回调。
特别注意:必须在调用sdk初始化接口Ourpalm_Init前调用Ourpalm_SetSpreadsCallBack接口。
同时,游戏必须等待协议回调通知,然后才能调用登录和打点等其它SDK功能
// 特殊功能回调接口。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if (id.equals("OpenPrivacyProtocol")){
//arg[0] 是否显示隐私弹窗
Logs.i("info", "arg[0]"+arg[0]);
Toast.makeText(MainActivity.this, "已调用隐私协议弹窗接口。。。, Toast.LENGTH_LONG).show();
}
}
});
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:OpenPrivacyProtocol |
arg[0] | String | 0已点击隐私弹窗同意按钮 1不用展示隐私弹窗 |
arg[0]的可选值有:
可选值 | 意义 | 说明 |
---|---|---|
0 | 点击隐私弹窗同意按钮 | 显示弹窗并且用户点击了同意协议 |
1 | 不用展示隐私弹窗 | 不需要展示协议、或者用户已经同意过协议 |
2 | 点击隐私弹窗拒绝按钮 | 显示弹窗并且用户点击了不同意协议 |
3 | 隐私协议更新,并点击隐私弹窗同意按钮 | 隐私协议内容有变化,并且用户又同意了新版本的协议 |
4 | 该产品没有配置隐私协议功能 |
调用此接口后,可以向阿里云后台上传网络信息,检测网络异常原因,及时修复。
manifest配置文件中,游戏主activity必须添加如下scheme配置
<intent-filter>
<data android:scheme="ourpalm_package_name"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
游戏必须接入sdk生命周期接口:onNewIntent
public void Ourpalm_NetworkDiagnosis(String checkTargetArray, String extParams, String isDisplay)
参数1:checkTargetArray 参数为检测目标的地址的数组
[
{"http_url":"待检测的url","host":"host地址","http":"1"},
{"host":"ip地址","tcp_port":端口号,"tcp_ping":"1"}
]
参数2:extParams 参数为检测信息中可附带的额外信息,没有的值可为空(“”)
{"reason":"serverlist","serverId":"10001","userId":"0000011101"}
参数3:isDisplay :游戏调用时传 “0”, 游戏是无感上传
接口调用:
String checkTargetArray = "[\n" +
"{http_url: 'https://www.google.com/', http: '1', host: 'www.google.com'}"+
"]";
String extParams ="{"reason":"serverlist","serverId":"10001","userId":"0000011101"}";
Ourpalm_Entry.getInstance(MainActivity.mMainActivity).Ourpalm_NetworkDiagnosis(checkTargetArray, extParams, "0");
游戏调用此接口后,可以返回Google商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的商品id。
/**
* 获取Google商品信息
*
* @param id
* SkuDetails 获取Google商品信息固定参数
* @param value1
* google商品id1
* @param value2
* google商品id2
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SkuDetails","ubi.heroes.ad60", "ubi.heroes.ad60");
注意:可以获取多个google商品id 对应的商品信息。
if (id.equals("SkuDetails")) {
Logs.i("info", "SkuDetails sku_list =" + arg[0]);
if (arg[0].equals("")) {
// 获取道具列表失败
Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();
} else {
// 输出道具列表信息
Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();
try {
JSONArray sku_list = new JSONArray(arg[0]);
for (int i = 0; i < sku_list.length(); i++) {
JSONObject sku = sku_list.getJSONObject(i);
Logs.i("info",
" sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")
+ " title = " + sku.getString("title") + " type = " + sku.getString("type")
+ " priceCurrencyCode =" + sku.getString("priceCurrencyCode")
+ " description = " + sku.getString("description")
+ " priceAmountMicros =" + sku.getLong("priceAmountMicros"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
}
}
参数 | 描述 |
---|---|
sku | google商品信息列表 |
sku.getString(“productId”) | google 商品id |
sku.getString(“price”) | google 商品价格 |
sku.getString(“title”) | google 商品title |
sku.getString(“priceCurrencyCode”) | google 商品货币单位 |
sku.getString(“description”) | google 商品描述 |
sku.getString(“priceAmountMicros”) | google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000” |
游戏调用此接口后,可以返回Google订阅商品id对应的商品信息(商品ID、商品价格、商品货币单位、商品title、商品描述及以微单位显示的商品价格),注意需要游戏传入google后台配置的订阅商品id。
/**
* 获取Google订阅计费点商品信息
*
* @param id
* SubsSkuDetails 获取Google商品信息固定参数
* @param value1
* google商品id1
* @param value2
* google商品id2
*/
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("SubsSkuDetails", "ubi.heroes.ad9.99e");
注意:可以获取多个google订阅商品id 对应的商品信息。
if (id.equals("SubsSkuDetails")) {
Logs.i("info", "SubsSkuDetails sku_list =" + arg[0]);
if (arg[0].equals("")) {
// 获取道具列表失败
Toast.makeText(MainActivity.this, "获取道具信息功能失败", Toast.LENGTH_LONG).show();
} else {
// 输出道具列表信息
Toast.makeText(MainActivity.this, "获取道具信息功能成功", Toast.LENGTH_LONG).show();
try {
JSONArray sku_list = new JSONArray(arg[0]);
for (int i = 0; i < sku_list.length(); i++) {
JSONObject sku = sku_list.getJSONObject(i);
Logs.i("info",
" sku productId = " + sku.getString("productId") + " price = " + sku.getString("price")
+ " title = " + sku.getString("title") + " type = " + sku.getString("type")
+ " priceCurrencyCode =" + sku.getString("priceCurrencyCode")
+ " description = " + sku.getString("description")
+ " priceAmountMicros =" + sku.getLong("priceAmountMicros"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
}
}
参数 | 描述 |
---|---|
sku | google订阅商品信息列表 |
sku.getString(“productId”) | google 商品id |
sku.getString(“price”) | google 商品价格 |
sku.getString(“title”) | google 商品title |
sku.getString(“priceCurrencyCode”) | google 商品货币单位 |
sku.getString(“description”) | google 商品描述 |
sku.getString(“priceAmountMicros”) | google 以微单位显示的商品价格,其中 1,000,000 个微单位等于 1 个单位的货币。例如,如果 price 为 “€7.99”,则 price_amount_micros 为 “7990000” |
根据游戏传入的google预注册商品id判断玩家是否在Google商店领取过预注册商品。
此功能最好在游戏账号登录成功后调用。
注意:传入的google预注册商品id是google后台申请的原始预注册商品id。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_Channel_Spreads("CheckGooglePreRegistrationCode",
"opm_tw_gg_pregift");
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:CheckGooglePreRegistrationCode |
arg[0] | String | google预注册商品id |
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id + ", arg[0] =" + arg[0]);
if (id.equals("CheckGooglePreRegistrationCode")) {
// 是否领取预注册奖励回调
if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "没有可以领取的奖励", Toast.LENGTH_LONG).show();
} else if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "可以领取奖励", Toast.LENGTH_LONG).show();
}
}
}
});
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGooglePreRegistrationCode |
arg[0] | String | 0 没有可以领取的奖励 1 可以领取奖励 |
领取google预注册奖励接口,用户进入游戏登录角色后调用。
Ourpalm_Channel_Spreads("ConsumeGooglePreRegistrationCode",
"opm_tw_gg_pregift",
"testroleId123", "testrolename123", "605",
"http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver",
"extendParams");
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:ConsumeGooglePreRegistrationCode |
arg[0] | String | google预注册商品id |
arg[1] | String | 角色id |
arg[2] | String | 角色名称 |
arg[3] | String | 游戏服Id |
arg[4] | String | 预注册礼包发货地址 |
arg[5] | String | 游戏自定义参数 |
if (id.equals("ConsumeGooglePreRegistrationCode")) {
//领取预注册奖励回调
if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "领取失败", Toast.LENGTH_LONG).show();
} else if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "领取成功", Toast.LENGTH_LONG).show();
}
}
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:ConsumeGooglePreRegistrationCode |
arg[0] | String | 0 领取失败 1 领取成功 |
用于玩家在google play商店兑换google礼品卡促销码后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePromotionCode","http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver");
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:CheckGooglePromotionCode |
arg[0] | String | google play card促销码发货url |
用于玩家在google play商店Points兑换礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGooglePointsCode",
"http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver",
"extendParams_PointsTest");
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:CheckGooglePointsCode |
arg[0] | String | google Points商品发货url |
arg[1] | String | 游戏自定义参数 |
if (id.equals("CheckGooglePointsCode")) {
//兑换google points奖励回调
if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "Points兑换失败", Toast.LENGTH_LONG).show();
} else if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "Points兑换成功", Toast.LENGTH_LONG).show();
}
}
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGooglePointsCode |
arg[0] | String | 0 兑换失败 1 兑换成功 |
解决游戏后台运行情况下,在google商店兑换google points礼包后,返回游戏收不到货的问题。
通过sdk自定义回调Ourpalm_SetSpreadsCallBack通知游戏可以调用google points领取接口,具体事例如下:
if (id.equals("GooglePointsCodeResume")) {
//onResume时是否可以领取google points奖励回调
if (arg[0].equals("1")) {
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_Channel_Spreads("CheckGooglePointsCode",
"http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver",
"extendParamsTest");
}
}
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:GooglePointsCodeResume |
arg[0] | String | 1 需要调用领取google points接口 |
用于玩家在google play商店游戏详情页面兑换eap礼包后,领取相关道具时使用的接口,需要在角色登录后才可进行调用,如果游戏已接入google预注册商品领取功能,需要先调用预注册领取接口后再调用本接口。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity). Ourpalm_Channel_Spreads("CheckGoogleEapCode",
"http://pay.gamebean.net/OurPalm_Pay_Accept/ResponseDeliver",
"extendParams_EapTest");
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 本接口为:CheckGoogleEapCode |
arg[0] | String | google Eap商品发货url |
arg[1] | String | 游戏自定义参数 |
if (id.equals("CheckGoogleEapCode")) {
//兑换google Eap奖励回调
if (arg[0].equals("0")) {
Toast.makeText(MainActivity.this, "Eap兑换失败", Toast.LENGTH_LONG).show();
} else if (arg[0].equals("1")) {
Toast.makeText(MainActivity.this, "Eap兑换成功", Toast.LENGTH_LONG).show();
}
}
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:CheckGoogleEapCode |
arg[0] | String | 0 兑换失败 1 兑换成功 |
功能说明 :
接口定义 :
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");
参数说明:
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
Value1 | 必传 | String | 接口ID |
接口实例:
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("to_GooglePlay");
此接口只给google PGS渠道用,调用此接口会显示google pc端充值优惠弹窗。
注意:pc优惠活动弹窗,不是每次调用都弹,正式上线后,一个玩家一天只能唤起一次弹窗。对测试账号的限制是每分钟弹一次。
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).
Ourpalm_Channel_Spreads("ShowInAppOfferMessages");
参数名称 | 重要性 | 类型 |
---|---|---|
jsonParams.status | string | 成功:”1”,失败:”0” |
jsonParams.code | string | 错误码 |
jsonParams.desc | string | 结果状态说明 |
// 特殊功能回调接口。
Ourpalm_Entry.getInstance(this).Ourpalm_SetSpreadsCallBack(new Ourpalm_SpreadsCallBack() {
@Override
public void Ourpalm_Spreads(String id, String... arg) {
// TODO Auto-generated method stub
Logs.i("info", " Ourpalm_Spreads id = " + id);
if(id.equals("ShowInAppOfferMessages")){
try {
JSONObject checkResultJson = new JSONObject(arg[0]);
String status = checkResultJson.getString("status");
String code = checkResultJson.getString("code");
String desc = checkResultJson.getString("desc");
if (status.equals("1")) {
Toast.makeText(MainActivity.this,
"优惠活动邀请成功, arg[0] =" + arg[0], Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this,
"优惠活动邀请失败, arg[0] =" + arg[0], Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
}
}
功能说明 :按下面的文档接入后,二次打包测试。
Google Play会强制执行一个限时配额,用于规定系统向用户显示评价对话框的频率,即调用google评分接口后,同一个玩家一个月内只会弹一次评分弹窗(配额的具体值可变,Google Play可能会对其进行更改,不会另行通知。)
接口定义 :
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");
参数说明:
参数名称 | 重要性 | 类型 | 说明 |
---|---|---|---|
Value1 | 必传 | String | 接口ID:showAppReview |
接口实例:
Ourpalm_Entry.getInstance(Ourpalm_Entry_Model.mActivity).Ourpalm_Channel_Spreads("showAppReview");
if (id.equals("showAppReview")) {
//兑换google Eap奖励回调
if (arg[0].equals("success")) {
Toast.makeText(MainActivity.this, "评分成功", Toast.LENGTH_LONG).show();
} else{
Toast.makeText(MainActivity.this, "评分失败", Toast.LENGTH_LONG).show();
}
}
参数 | 类型 | 描述 |
---|---|---|
id | String | 接口id 判断是那个接口返回的回调,本接口为:showAppReview |
arg[0] | String | success 评分成功 fail/cancel 评分失败 |
注:
- google应用内评分。弹出评价界面即返回评价成功。
- 评价提交后,取消评论,亦认为已评论成功
- 每个账号只能评价一次(多次调用不会重复显示评价框)
- 当应用评价后,继续点击评价,不会显示弹窗,但是会收到回调评价成功
状态码 | 说明 |
---|---|
-1 | 未知错误 |
-2 | SDK联网URL错误 |
-3 | 第三方登陆验证返回失败 |
-4 | 支付失败,未知错误 |
-5 | 无网络 |
0 | 初始化失败 |
10 | 登陆错误,未知错误 |
11 | 登陆取消 |
12 | 登陆数据错误,账号或密码为空 |
13 | 登陆验证失败 |
14 | 登陆验证参数错误 |
15 | 获取系统用户名错误 |
16 | 单机隐式登录失败 |
20 | 注册失败,未知错误 |
21 | 注册失败,验证错误 |
22 | 注册数据错误,账号或密码为空 |
30 | 修改密码错误 |
31 | 修改密码错误,用户id或者密码为null或者格式错误 |
32 | 修改密码错误,参数错误 |
33 | 找回密码错误,参数错误 |
40 | 绑定用户信息错误 |
41 | 绑定用户信息错误,验证错误 |
42 | 绑定用户信息错误,参数错误 |
43 | 接口所需参数传递为空或者格式不正确 |
100 | 支付相关参数错误 |
101 | 支付成功 |
102 | 支付失败 |
103 | 支付取消 |
104 | 下单成功 |
105 | 下单失败 |
106 | 解析支付协议失败 |
107 | 当前支付方式不可用 |
205 | 账号封停 |
300 | 官网支付webview页面报错 |
状态码 | 说明 |
---|---|
21134 | roleId格式不正确 |
21137 | gameServerId格式不正确 |
21143 | gameServerId在平台没有启用 |
21146 | 请求报文头格式不正确 |
21147 | 手机平台ID格式不正确 |
21148 | 设备名称格式不正确 |
21149 | 设备系统版本号格式不正确 |
21150 | 设备分辨率格式不正确 |
21151 | 设备UDID格式不正确 |
21152 | 运营商格式不正确 |
21153 | 设备厂商格式不正确 |
21185 | 激活码不得为空 |
21186 | 发货失败 |
21187 | 激活码不存在或不可用 |
21188 | 激活码已过期 |
21189 | 激活码未领取 |
21190 | 激活码已使用 |
21191 | 该用户已兑换过激活码 |
21192 | 该设备已兑换过激活码 |
21193 | 活动暂停中 |
21194 | 激活码已经用完 |
21195 | 网络异常 |
21196 | 服务内部错误 |
21197 | 传入的激活码有错误 |
21198 | 传入的礼包ID有错误 |
21199 | 用户未登录 |
21200 | 兑换超过用户最大限制 |
21201 | 游戏产品有误 |
21202 | 策略关系不存在 |
21203 | 联运渠道或推广渠道有误 |
21204 | 推广渠道有误 |
21205 | 机型组有误 |
21206 | 语言有误 |
21207 | 逻辑服策略不存在 |
21208 | 逻辑服有误 |
21227 | 用户每天兑换次数超出上限 |
21228 | 用户每周兑换次数超出上限 |
21229 | 用户每月兑换次数超出上限 |
23157 | 礼包码未到生效时间 |
23158 | 失败 |
货币ID是没有限定位数的纯自增值,详情:货币类型详情列表
货币ID | 货币名 | 货币单位 |
---|---|---|
1 | 人民币 | 分 |
2 | 美元 | 美分 |
3 | 日元 | 円 |
4 | 港币 | 分 |
5 | 英镑 | 便士 |
6 | 新加坡币 | 分 |
7 | 越南盾 | 盾 |
8 | 台币 | 元 |
9 | 韩元 | 分 |
10 | 泰铢 | 萨当 |
14 | 马来西亚林令吉 | 分 |
17 | 菲律宾币 | 仙 |
19 | 印尼卢比 | 卢比 |
21 | 柬埔寨瑞尔 | 瑞尔 |
22 | 加拿大元 | 分 |
28 | 巴西雷亚尔 | 分 |
29 | 智利比索 | 分 |
32 | 欧元 | 分 |
67 | 墨西哥比索 | 分 |
70 | 秘鲁新索尔 | 分 |
93 | 哥斯达黎加科朗 | 分 |
95 | 俄罗斯卢布 | 戈比 |
110 | 巴拉圭瓜尼 | 分 |
122 | 缅甸元 | 分 |
125 | 哥伦比亚比索 | 分 |