Toggle navigation
Toggle navigation
This project
Loading...
Sign in
guangka
/
public_sdk_android
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
tangweijun
2020-04-23 06:18:51 +0000
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
3ebd0174f3bd51b6f6594a05aac24f5e4367ff47
3ebd0174
1 parent
6b9c046c
Update 公共SDK客户端接入文档.md
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
530 additions
and
409 deletions
doc/公共SDK客户端接入文档.md
doc/公共SDK客户端接入文档.md
View file @
3ebd017
...
...
@@ -803,453 +803,574 @@ android:authorities="originPackageTag.provider"
# 7. 完整的接入demo
```
java
package
com
.
youai
.
foolsdk
.
demo
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.app.Application
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.res.Configuration
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.View
;
import
android.view.View.OnClickListener
;
import
android.view.WindowManager.LayoutParams
;
import
android.widget.Button
;
import
com.gzyouai.fengniao.sdk.framework.PoolExitDialogListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolExitListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolLoginInfo
;
import
com.gzyouai.fengniao.sdk.framework.PoolLoginListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolLogoutListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolPayInfo
;
import
com.gzyouai.fengniao.sdk.framework.PoolPayListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolRoleInfo
;
import
com.gzyouai.fengniao.sdk.framework.PoolRoleListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolSDKCallBackListener
;
import
com.gzyouai.fengniao.sdk.framework.PoolSDKCode
;
import
com.gzyouai.fengniao.sdk.framework.PoolSdkConfig
;
import
com.gzyouai.fengniao.sdk.framework.PoolSdkHelper
;
import
com.gzyouai.fengniao.sdk.framework.PoolSdkLog
;
public
class
AppActivity
extends
Activity
{
private
Button
yaLoginBt
;
private
Button
yaEnterGameBt
;
private
Button
yaPayBt
;
private
Button
yaSubmitRoleDataBt
;
private
Button
yaChannelCenter
;
private
Button
yaLogoutBt
;
private
Button
yaForumBt
;
private
Button
yaSwitchAccountBt
;
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
int
layoutId
=
getResources
().
getIdentifier
(
"public_sdk_self_game_login"
,
"layout"
,
getPackageName
());
setContentView
(
layoutId
);
initLoginView
();
//================================↓↓↓↓↓公共SDK接入代码示例↓↓↓↓↓==================================
//PoolSdkHelper.isDebug = true;
PoolSdkLog
.
setIsShowLog
(
true
);
PoolSdkHelper
.
init
(
this
,
new
PoolSDKCallBackListener
()
{
@Override
public
void
poolSdkCallBack
(
int
code
,
String
msg
)
{
// TODO Auto-generated method stub
PoolSdkLog
.
logInfo
(
"callback: code:"
+
code
+
"msg:"
+
msg
);
switch
(
code
)
{
case
PoolSDKCode
.
POOLSDK_INIT_SUCCESS
:
// 收到初始化成功回调才可以调用其他接口
PoolSdkLog
.
logInfo
(
"SDK初始化成功"
);
login
();
break
;
case
PoolSDKCode
.
POOLSDK_INIT_FAIL
:
break
;
default
:
break
;
}
}
});
import
android.widget.TextView
;
import
android.widget.Toast
;
import
com.gzpublic.app.sdk.framework.PoolEventParameterName
;
import
com.gzpublic.app.sdk.framework.PoolEventType
;
import
com.gzpublic.app.sdk.framework.PoolExitDialogListener
;
import
com.gzpublic.app.sdk.framework.PoolExitListener
;
import
com.gzpublic.app.sdk.framework.PoolExpansionListener
;
import
com.gzpublic.app.sdk.framework.PoolLoginInfo
;
import
com.gzpublic.app.sdk.framework.PoolLoginListener
;
import
com.gzpublic.app.sdk.framework.PoolLogoutListener
;
import
com.gzpublic.app.sdk.framework.PoolPayInfo
;
import
com.gzpublic.app.sdk.framework.PoolPayListener
;
import
com.gzpublic.app.sdk.framework.PoolPayOrderConfirmHandler
;
import
com.gzpublic.app.sdk.framework.PoolReport
;
import
com.gzpublic.app.sdk.framework.PoolRoleInfo
;
import
com.gzpublic.app.sdk.framework.PoolRoleListener
;
import
com.gzpublic.app.sdk.framework.PoolSDKCallBackListener
;
import
com.gzpublic.app.sdk.framework.PoolSDKCode
;
import
com.gzpublic.app.sdk.framework.PoolSdkConfig
;
import
com.gzpublic.app.sdk.framework.PoolSdkHelper
;
import
com.gzpublic.app.sdk.framework.PoolSdkLog
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.util.HashMap
;
import
java.util.Locale
;
import
java.util.Map
;
public
class
AppActivity
extends
Activity
implements
OnClickListener
{
//新的view
private
Button
btLogin
;
private
Button
btEnterGame
;
private
Button
btPay
;
private
Button
btLogout
;
private
Button
btSubRoleInfo
;
private
Button
btOpenChannel
;
private
Button
btSwitchAcc
;
private
Button
btOpenBbs
;
private
Button
btQueryProducts
;
private
Button
pb_bt_verifyname
;
private
Bundle
saveBundle
;
//提示LOG
private
TextView
txMsg
,
txSdkMsg
;
private
Activity
mContext
;
private
PoolPayListener
mPoolPayListener
=
new
PoolPayListener
()
{
PoolSdkHelper
.
setLogoutCallback
(
new
PoolLogoutListener
()
{
@Override
public
void
onLogoutSuccess
()
{
//注销账号成功回调在这里通知,游戏收到注销成功,需自行回到登陆界面调用登陆接口
PoolSdkLog
.
logInfo
(
"游戏中logoutSuccess"
);
login
();
}
});
}
@Override
public
void
onPaySuccess
(
String
paramCustom
)
{
//支付回调以服务端通知为准
// TODO Auto-generated method stub
//[{"orderId":"20180116114151740535D825","state":0,"productId":"1","productName":"金币","amout":0}]
if
(
paramCustom
==
null
||
paramCustom
.
length
()
<=
0
)
{
PoolSdkLog
.
logError
(
"paysuccess data error :"
+
paramCustom
);
return
;
}
try
{
PoolSdkLog
.
logInfo
(
"paySuccess:"
+
paramCustom
);
JSONArray
jsonArray
=
new
JSONArray
(
paramCustom
);
StringBuilder
orderIds
=
new
StringBuilder
();
int
length
=
jsonArray
.
length
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
JSONObject
jb
=
jsonArray
.
getJSONObject
(
i
);
String
orderId
=
jb
.
getString
(
"orderId"
);
orderIds
.
append
(
orderId
);
if
(
i
!=
length
-
1
)
{
//最后一项不加分割符
orderIds
.
append
(
","
);
}
}
PoolSdkHelper
.
paymentSuccess
(
AppActivity
.
this
,
orderIds
.
toString
());
}
catch
(
JSONException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
upTx
(
"支付成功回调:"
+
paramCustom
);
}
@Override
public
void
onStart
()
{
super
.
onStart
();
PoolSdkHelper
.
onStart
();
}
@Override
public
void
onPayFailed
(
String
paramCustom
,
String
errorMsg
)
{
// TODO Auto-generated method stub
System
.
out
.
println
(
"支付失败回调:"
+
paramCustom
+
"; errorMsg:"
+
errorMsg
);
upTx
(
"支付失败回调:"
+
paramCustom
+
"; errorMsg:"
+
errorMsg
);
}
};
@Override
public
void
onStop
()
{
super
.
onStop
();
PoolSdkHelper
.
onStop
();
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
PoolSdkHelper
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
init
(
saveBundle
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
PoolSdkHelper
.
onDestroy
();
}
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
saveBundle
=
savedInstanceState
;
int
layoutId
=
getResources
().
getIdentifier
(
"public_sdk_self_test"
,
"layout"
,
getPackageName
());
setContentView
(
layoutId
);
mContext
=
this
;
initView
();
PoolSdkLog
.
setIsShowLog
(
true
);
PoolSdkConfig
.
readPoolSdkConfigData
(
this
);
if
(
getApplicationInfo
().
targetSdkVersion
>=
23
&&
Build
.
VERSION
.
SDK_INT
>=
23
){
requestPermissions
(
new
String
[]{
Manifest
.
permission
.
READ_PHONE_STATE
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
},
1
);
}
else
{
//不需要权限直接调用init
this
.
init
(
savedInstanceState
);
}
@Override
public
void
onResume
()
{
super
.
onResume
();
PoolSdkHelper
.
onResume
();
}
txSdkMsg
.
setText
(
"sdksimplename:"
+
PoolSdkConfig
.
getConfigByKey
(
"sdksimplename"
)
+
"\nsdkversioncode:"
+
PoolSdkConfig
.
getConfigByKey
(
"sdkversioncode"
)
+
"\ngamesimplename:"
+
PoolSdkConfig
.
getConfigByKey
(
"gamesimplename"
)
+
"\nlogincheckurl:"
+
PoolSdkConfig
.
getConfigByKey
(
"logincheckurl"
)
);
}
@Override
public
void
onPause
()
{
super
.
onPause
();
PoolSdkHelper
.
onPause
();
private
void
init
(
Bundle
savedInstanceState
){
PoolSdkHelper
.
init
(
this
,
new
PoolSDKCallBackListener
()
{
@Override
public
void
poolSdkCallBack
(
int
code
,
String
msg
)
{
PoolSdkLog
.
logInfo
(
"poolSdkCallBack:code:"
+
code
+
",msg:"
+
msg
);
upTx
(
"poolSdkCallBack:code:"
+
code
+
",msg:"
+
msg
);
switch
(
code
)
{
case
PoolSDKCode
.
POOLSDK_INIT_SUCCESS
:
// 初始化成功
PoolSdkLog
.
logInfo
(
"游戏中收到初始化成功回调"
);
new
Handler
().
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
login
();
}
},
1000
);
break
;
case
PoolSDKCode
.
POOLSDK_INIT_FAIL
:
break
;
case
PoolSDKCode
.
POOLSDK_QUERY_WITH_PRODUCTS
:
//msg:为查询的结果值
/**
* {//查询商品信息返回数据
* "android.test.purchased0": {//key为商品ID
* "displayPrice": "₩1167.28",//显示价格
* "price": "₩1,167", //实际价格(去除小数点) 充值传递
* "priceAmountMicros": 1167284249, //数字价格
* "priceCurrencyCode": "KRW", //货币代码
* "sku": "android.test.purchased0",//商品ID
* "title": "名称示例"
* }
* }
*/
break
;
case
PoolSDKCode
.
POOLSDK_EXTENDS_CODE1
:
//实名认证成功才有回调
//msg为生日
break
;
default
:
break
;
}
}
},
savedInstanceState
);
// init(this);// this为游戏的activity对象
PoolSdkHelper
.
setPayListener
(
mPoolPayListener
);
PoolSdkHelper
.
setLogoutCallback
(
new
PoolLogoutListener
()
{
@Override
public
void
onLogoutSuccess
()
{
// TODO: 此处处理SDK登出的逻辑
PoolSdkLog
.
logInfo
(
"游戏中收到logoutSuccess回调"
);
login
();
}
});
PoolSdkHelper
.
trackEvent
(
getApplicationContext
(),
PoolEventType
.
POOL_RES_LOADED
,
null
);
}
}
@Override
public
void
onStart
()
{
super
.
onStart
();
PoolSdkHelper
.
onStart
();
}
@Override
public
void
onRestart
()
{
super
.
onRestart
();
PoolSdkHelper
.
onRestart
();
}
@Override
public
void
onStop
()
{
super
.
onStop
();
PoolSdkHelper
.
onStop
();
}
@Override
public
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
PoolSdkHelper
.
onNewIntent
(
intent
);
}
@Override
public
void
onDestroy
(
)
{
super
.
onDestroy
(
);
PoolSdkHelper
.
onDestroy
(
);
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
PoolSdkHelper
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
}
@Override
public
void
onResume
()
{
super
.
onResume
();
PoolSdkHelper
.
onResume
();
}
@Override
public
void
onPause
()
{
super
.
onPause
();
PoolSdkHelper
.
onPause
();
@Override
public
void
onConfigurationChanged
(
Configuration
newConfig
)
{
// TODO Auto-generated method stub
super
.
onConfigurationChanged
(
newConfig
);
PoolSdkHelper
.
onConfigurationChanged
(
newConfig
);
}
@Override
protected
void
onSaveInstanceState
(
Bundle
outState
)
{
// TODO Auto-generated method stub
super
.
onSaveInstanceState
(
outState
);
PoolSdkHelper
.
onSaveInstanceState
(
outState
);
}
@Override
protected
void
onRestoreInstanceState
(
Bundle
savedInstanceState
)
{
// TODO Auto-generated method stub
super
.
onRestoreInstanceState
(
savedInstanceState
);
PoolSdkHelper
.
onRestoreInstanceState
(
savedInstanceState
);
}
@Override
public
void
onWindowFocusChanged
(
boolean
hasFocus
)
{
// TODO Auto-generated method stub
super
.
onWindowFocusChanged
(
hasFocus
);
PoolSdkHelper
.
onWindowFocusChanged
(
hasFocus
);
}
@Override
public
void
onWindowAttributesChanged
(
LayoutParams
params
)
{
// TODO Auto-generated method stub
super
.
onWindowAttributesChanged
(
params
);
PoolSdkHelper
.
onWindowAttributesChanged
(
params
);
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
// TODO Auto-generated method stub
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
PoolSdkHelper
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
}
//返回按钮退出游戏示例
@Override
public
boolean
dispatchKeyEvent
(
KeyEvent
pKeyEvent
)
{
if
(
pKeyEvent
.
getKeyCode
()
==
KeyEvent
.
KEYCODE_BACK
&&
pKeyEvent
.
getAction
()
==
KeyEvent
.
ACTION_DOWN
)
{
//点击返回,判断渠道SDK有无退出框
if
(
PoolSdkHelper
.
hasExitDialog
())
{
PoolSdkHelper
.
showExitDialog
(
new
PoolExitDialogListener
()
{
@Override
public
void
onDialogResult
(
int
code
,
String
msg
)
{
switch
(
code
)
{
case
PoolSDKCode
.
EXIT_SUCCESS
:
// 退出成功游戏处理自己退出逻辑
finish
();
break
;
case
PoolSDKCode
.
EXIT_CANCEL
:
// 取消退出
break
;
default
:
break
;
}
}
});
}
else
{
//没有则调用游戏的退出界面
showGameExitTips
();
}
return
false
;
}
return
super
.
dispatchKeyEvent
(
pKeyEvent
);
}
@Override
public
void
onRestart
()
{
super
.
onRestart
();
PoolSdkHelper
.
onRestart
();
}
/**
* 切换帐号/注销账号
*/
private
void
switchAccount
()
{
//游戏请先调用 PoolSdkHelper.hasLogout() PoolSdkHelper.hasSwitchAccount() 接口 判断渠道SDK有没有该接口
if
(
PoolSdkHelper
.
hasLogout
()){
//如果渠道SDK有注销接口,那么游戏可以添加注销按钮,实现 PoolSdkHelper.logout(this); 结果在注销监听回调中处理
PoolSdkHelper
.
logout
(
this
);
}
else
if
(
PoolSdkHelper
.
hasSwitchAccount
()){
//如果渠道SDK有切换账号接口,那么游戏可以添加切换账号按钮,实现 PoolSdkHelper.switchAccount(this); 新账号结果在登陆回调中处理
PoolSdkHelper
.
switchAccount
(
this
);
}
else
{
//直接回到登录界面调用登录
int
layoutId
=
getResources
().
getIdentifier
(
"public_sdk_self_game_login"
,
"layout"
,
getPackageName
());
setContentView
(
layoutId
);
initLoginView
();
}
}
private
void
openForum
(){
PoolSdkHelper
.
openForum
();
}
//单独注销按钮 注销账号
private
void
logout
(){
if
(
PoolSdkHelper
.
hasLogout
()){
PoolSdkHelper
.
logout
(
this
);
//结果回调通知到PoolLogoutListener
}
}
private
void
login
()
{
PoolSdkHelper
.
login
(
"登录自定义字段"
,
new
PoolLoginListener
()
{
@Override
public
void
onLoginSuccess
(
PoolLoginInfo
poolLoginInfo
)
{
String
userType
=
poolLoginInfo
.
getUserType
();
String
timestamp
=
poolLoginInfo
.
getTimestamp
();
String
serverSign
=
poolLoginInfo
.
getServerSign
();
String
openId
=
poolLoginInfo
.
getOpenID
();
// TODO: 把以上信息发送给游戏服务端做登录校验,需要其他信息请从poolLoginInfo对象中获取
System
.
out
.
println
(
"登录成功 userType = "
+
userType
+
"; timestamp = "
+
timestamp
+
"; serverSign = "
+
serverSign
+
"; openId = "
+
openId
);
}
@Override
public
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
PoolSdkHelper
.
onNewIntent
(
intent
);
}
@Override
public
void
onLoginFailed
(
String
errorMsg
)
{
System
.
out
.
println
(
"登录失败 = "
+
errorMsg
);
}
});
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
PoolSdkHelper
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
}
private
void
pay
()
{
final
PoolPayInfo
poolPayInfo
=
new
PoolPayInfo
();
@Override
public
void
onConfigurationChanged
(
Configuration
newConfig
)
{
super
.
onConfigurationChanged
(
newConfig
);
PoolSdkHelper
.
onConfigurationChanged
(
newConfig
);
}
/********************************************
* 以下所有字段都是必填项
*/
// 设置充值金额,单位“元”
poolPayInfo
.
setAmount
(
"1"
);
// 服务器id
poolPayInfo
.
setServerID
(
"8"
);
// 服务器名
poolPayInfo
.
setServerName
(
"我是服务器名"
);
// 角色id
poolPayInfo
.
setRoleID
(
"123456"
);
// 角色名
poolPayInfo
.
setRoleName
(
"我是角色名"
);
// 角色等级
poolPayInfo
.
setRoleLevel
(
"10"
);
// 商品ID
poolPayInfo
.
setProductID
(
"1"
);
// 商品名称
poolPayInfo
.
setProductName
(
"金币"
);
// 商品描述
poolPayInfo
.
setProductDesc
(
"购买金币"
);
// 兑换比例
poolPayInfo
.
setExchange
(
"10"
);
// 自定义参数
poolPayInfo
.
setCustom
(
"operator=xwrw&server_id=39&player_id=2081&cp_order_id=001000100000020811491470345294&dext=2"
);
// TODO Auto-generated method stub
PoolSdkHelper
.
pay
(
poolPayInfo
,
new
PoolPayListener
()
{
@Override
protected
void
onSaveInstanceState
(
Bundle
outState
)
{
super
.
onSaveInstanceState
(
outState
);
PoolSdkHelper
.
onSaveInstanceState
(
outState
);
}
@Override
public
void
onPaySuccess
(
String
paramCustom
)
{
System
.
out
.
println
(
"支付成功 = "
+
paramCustom
);
}
@Override
protected
void
onRestoreInstanceState
(
Bundle
savedInstanceState
)
{
super
.
onRestoreInstanceState
(
savedInstanceState
);
PoolSdkHelper
.
onRestoreInstanceState
(
savedInstanceState
);
}
@Override
public
void
onPayFailed
(
String
paramCustom
,
String
errorMsg
)
{
System
.
out
.
println
(
"支付失败 = "
+
paramCustom
+
"; errorMsg = "
+
errorMsg
);
}
});
@Override
public
void
onWindowFocusChanged
(
boolean
hasFocus
)
{
super
.
onWindowFocusChanged
(
hasFocus
);
PoolSdkHelper
.
onWindowFocusChanged
(
hasFocus
);
}
}
@Override
public
void
onWindowAttributesChanged
(
LayoutParams
params
)
{
super
.
onWindowAttributesChanged
(
params
);
PoolSdkHelper
.
onWindowAttributesChanged
(
params
);
}
/**
* 提交角色数据 该接口需要在3个地方调用
*
* 1、登录游戏主场景 2、创建角色 3、角色升级
*/
private
void
submitRoleData
()
{
/********************************************
* 以下所有字段都是必填项
*/
PoolRoleInfo
poolRoleInfo
=
new
PoolRoleInfo
();
poolRoleInfo
.
setRoleID
(
"123456"
);
poolRoleInfo
.
setRoleLevel
(
"10"
);
poolRoleInfo
.
setRoleSex
(
"0"
);
poolRoleInfo
.
setRoleName
(
"我是角色名"
);
poolRoleInfo
.
setServerID
(
"8"
);
poolRoleInfo
.
setServerName
(
"我是服务器名"
);
poolRoleInfo
.
setCustom
(
"角色创建时间"
);
poolRoleInfo
.
setRoleCTime
(
System
.
currentTimeMillis
()/
1000
);
//角色创建时间(秒)
poolRoleInfo
.
setPartyName
(
"公会名称"
);
poolRoleInfo
.
setRoleType
(
"狂战"
);
//角色类型
poolRoleInfo
.
setRoleChangeTime
(
System
.
currentTimeMillis
()/
1000
);
//角色更新时间
poolRoleInfo
.
setVipLevel
(
"10"
);
//vip等级
poolRoleInfo
.
setDiamond
(
"1000"
);
//余额
poolRoleInfo
.
setMoneyType
(
"金币"
);
//商品单位
poolRoleInfo
.
setCallType
(
PoolRoleInfo
.
Type_EnterGame
);
// poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);
// poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);
@Override
public
boolean
dispatchKeyEvent
(
KeyEvent
pKeyEvent
)
{
if
(
pKeyEvent
.
getKeyCode
()
==
KeyEvent
.
KEYCODE_BACK
&&
pKeyEvent
.
getAction
()
==
KeyEvent
.
ACTION_DOWN
)
{
if
(
PoolSdkHelper
.
hasExitDialog
())
{
PoolSdkHelper
.
showExitDialog
(
new
PoolExitDialogListener
()
{
@Override
public
void
onDialogResult
(
int
code
,
String
msg
)
{
switch
(
code
)
{
case
PoolSDKCode
.
EXIT_SUCCESS
:
// 退出成功游戏处理自己退出逻辑
PoolSdkLog
.
logInfo
(
"游戏调用自己退出逻辑"
);
finish
();
System
.
exit
(
0
);
break
;
case
PoolSDKCode
.
EXIT_CANCEL
:
// 取消退出
PoolSdkLog
.
logInfo
(
"收到取消退出回调"
);
break
;
default
:
break
;
}
}
});
}
else
{
// TODO: 调用游戏的退出界面
showGameExitTips
();
}
return
false
;
}
return
super
.
dispatchKeyEvent
(
pKeyEvent
);
}
PoolSdkHelper
.
submitRoleData
(
poolRoleInfo
,
new
PoolRoleListener
()
{
@Override
public
void
onRoleDataSuccess
(
String
paramCustom
)
{
System
.
out
.
println
(
"提交角色数据成功 = "
+
paramCustom
);
}
});
}
private
void
showGameExitTips
()
{
AlertDialog
.
Builder
dialog
=
new
AlertDialog
.
Builder
(
this
);
int
ic_dialog_alert_id
=
getRedIdByName
(
"ic_dialog_alert"
,
"drawable"
);
dialog
.
setIcon
(
ic_dialog_alert_id
);
dialog
.
setTitle
(
"提示"
);
dialog
.
setMessage
(
"是否退出游戏?"
);
dialog
.
setPositiveButton
(
"确定"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
PoolSdkHelper
.
exitGame
(
new
PoolExitListener
()
{
@Override
public
void
onExitGame
()
{
finish
();
}
});
}
});
dialog
.
setNegativeButton
(
"取消"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
}
});
dialog
.
show
();
}
/**
* 用户中心
*
* 游戏方先调用PoolSdkHelper.hasChannelCenter()获取是否有用户中心,
* 如果有的话,游戏中需要添加按钮,点击按钮调用PoolSdkHelper.openChannelCenter();
* 如果没有,则不需要显示按钮,也不用调用下面的接口
*/
private
void
channelCenter
()
{
PoolSdkHelper
.
openChannelCenter
();
}
/**
* 实名认证接入示例
*/
private
void
verifyRealName
(){
String
realNameInfo
=
PoolSdkHelper
.
verifyRealName
(
paramActivity
);
//cp通过查询接口得到实名信息,其值一般为玩家的生日日期
if
(
""
.
equals
(
realNameInfo
)){
//渠道没有实名功能,此时cp需调用自己的实名功能
//cp方实名认证逻辑。。。
}
else
if
(
"0"
.
equals
(
realNameInfo
)){
//渠道有实名功能,但玩家未实名
boolean
hasVerifyView
=
PoolSdkHelper
.
hasFunction
(
"hasRealNameVerifyView"
);
//cp通过此接口判断是否能调用渠道的实名认证界面
if
(
hasVerifyView
){
//为true则表示能调用,false则表示无法调用渠道的实名界面
//cp调渠道的实名认证逻辑,此接口的回调在初始化时传入的回调实例,code为 POOLSDK_EXTENDS_CODE1
PoolSdkHelper
.
callFunc
(
"showRealNameVerifyView"
,
null
);
}
}
else
{
//玩家在渠道实名了
}
}
//================================↑↑↑↑↑公共SDK接入代码示例↑↑↑↑↑==================================
private
void
showGameExitTips
()
{
AlertDialog
.
Builder
dialog
=
new
AlertDialog
.
Builder
(
this
);
int
ic_dialog_alert_id
=
getRedIdByName
(
"ic_dialog_alert"
,
"drawable"
);
dialog
.
setIcon
(
ic_dialog_alert_id
);
dialog
.
setTitle
(
"提示"
);
dialog
.
setMessage
(
"是否退出游戏?"
);
dialog
.
setPositiveButton
(
"确定"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
PoolSdkHelper
.
exitGame
(
new
PoolExitListener
()
{
@Override
public
void
onExitGame
()
{
finish
();
}
});
}
});
dialog
.
setNegativeButton
(
"取消"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
}
});
dialog
.
show
();
}
private
int
getRedIdByName
(
String
resName
,
String
resType
)
{
return
getResources
().
getIdentifier
(
resName
,
resType
,
getPackageName
());
}
private
int
getRedIdByName
(
String
resName
,
String
resType
)
{
return
getResources
().
getIdentifier
(
resName
,
resType
,
getPackageName
());
}
private
void
initView
(){
btLogin
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_login"
,
"id"
));
btEnterGame
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_entergame"
,
"id"
));
btPay
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_pay"
,
"id"
));
btLogout
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_logout"
,
"id"
));
btSubRoleInfo
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_subrole"
,
"id"
));
btOpenChannel
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_openchannel"
,
"id"
));
btSwitchAcc
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_switchacc"
,
"id"
));
btOpenBbs
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_openbbs"
,
"id"
));
btQueryProducts
=
findViewById
(
getRedIdByName
(
"pool_query_products_id"
,
"id"
));
pb_bt_verifyname
=
(
Button
)
findViewById
(
getRedIdByName
(
"pb_bt_verifyname"
,
"id"
));
txMsg
=
(
TextView
)
findViewById
(
getRedIdByName
(
"tx_msg"
,
"id"
));
txSdkMsg
=
(
TextView
)
findViewById
(
getRedIdByName
(
"tx_sdk_msg"
,
"id"
));
btLogin
.
setOnClickListener
(
this
);
btEnterGame
.
setOnClickListener
(
this
);
btPay
.
setOnClickListener
(
this
);
btLogout
.
setOnClickListener
(
this
);
btSubRoleInfo
.
setOnClickListener
(
this
);
btOpenChannel
.
setOnClickListener
(
this
);
btSwitchAcc
.
setOnClickListener
(
this
);
btOpenBbs
.
setOnClickListener
(
this
);
btQueryProducts
.
setOnClickListener
(
this
);
pb_bt_verifyname
.
setOnClickListener
(
this
);
}
private
void
initLoginView
()
{
int
ya_login_bt
=
getRedIdByName
(
"ya_login_bt"
,
"id"
);
// getResources().getIdentifier("ya_login_bt",
// "id",
// getPackageName());
yaLoginBt
=
(
Button
)
findViewById
(
ya_login_bt
);
yaLoginBt
.
setText
(
"登录"
);
yaEnterGameBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"ya_enter_game_bt"
,
"id"
));
yaEnterGameBt
.
setText
(
"进入游戏"
);
}
public
void
yaOnClick
(
View
view
)
{
}
private
void
initGameView
()
{
yaPayBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"ya_pay_bt"
,
"id"
));
yaPayBt
.
setText
(
"支付"
);
yaSubmitRoleDataBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"ya_submit_role_data_bt"
,
"id"
));
yaSubmitRoleDataBt
.
setText
(
"提交角色数据"
);
yaChannelCenter
=
(
Button
)
findViewById
(
getRedIdByName
(
"ya_channel_center"
,
"id"
));
yaChannelCenter
.
setText
(
"渠道中心"
);
PoolSdkLog
.
logError
(
""
+
yaPayBt
+
"yachannel:"
+
yaChannelCenter
);
yaLogoutBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"logout_bt"
,
"id"
));
yaSwitchAccountBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"ya_switch_account_bt"
,
"id"
));
yaSwitchAccountBt
.
setText
(
"切换账号"
);
yaForumBt
=
(
Button
)
findViewById
(
getRedIdByName
(
"forum_bt"
,
"id"
));
}
@Override
public
void
onClick
(
View
view
)
{
//新view
if
(
view
==
btLogin
)
{
login
();
}
else
if
(
view
==
btEnterGame
)
{
submitRoleData
(
10
,
PoolRoleInfo
.
Type_EnterGame
);
//PoolReport.reportEnterGame("chufan","角色名", 12, "201","服务器名");
}
else
if
(
view
==
btPay
)
{
pay
();
}
else
if
(
view
==
btLogout
)
{
logout
();
}
else
if
(
view
==
btSubRoleInfo
)
{
submitRoleData
(
11
,
PoolRoleInfo
.
Type_RoleUpgrade
);
}
else
if
(
view
==
btOpenChannel
)
{
channelCenter
();
}
else
if
(
view
==
btSwitchAcc
)
{
switchAccount
();
}
else
if
(
view
==
btOpenBbs
)
{
trackEvent
();
}
else
if
(
view
==
btQueryProducts
){
queryProducts
();
}
else
if
(
view
==
pb_bt_verifyname
){
Toast
.
makeText
(
this
,
PoolSdkHelper
.
verifyRealName
(
this
),
Toast
.
LENGTH_SHORT
).
show
();
}
}
public
void
yaOnClick
(
View
view
)
{
if
(
view
==
yaLoginBt
)
{
login
();
}
else
if
(
view
==
yaEnterGameBt
)
{
setContentView
(
getRedIdByName
(
"public_sdk_self_game"
,
"layout"
));
// (R.layout.game);
//模拟调用聊天接口:
//PoolSdkHelper.reportChat("content", "世界", "roleId", "roleName", 10, "serverId", "serverName");
initGameView
();
}
else
if
(
view
==
yaPayBt
)
{
pay
();
}
else
if
(
view
==
yaSubmitRoleDataBt
)
{
submitRoleData
();
}
else
if
(
view
==
yaChannelCenter
)
{
channelCenter
();
}
else
if
(
view
==
yaLogoutBt
){
logout
();
}
else
if
(
view
==
yaForumBt
){
openForum
();
}
else
if
(
view
==
yaSwitchAccountBt
){
//切换账号
switchAccount
();
}
}
private
void
trackEvent
(){
Map
<
String
,
Object
>
valueMap
=
new
HashMap
<>();
valueMap
.
put
(
PoolEventParameterName
.
POOL_ORDER_ID
,
System
.
currentTimeMillis
()+
""
);
//订单号
valueMap
.
put
(
PoolEventParameterName
.
POOL_CURRENCY
,
"USD"
);
//货币类型 USD:美元 CNY:人民币
valueMap
.
put
(
PoolEventParameterName
.
POOL_PRICE
,
6
);
//充值金额
PoolSdkHelper
.
trackEvent
(
getApplicationContext
(),
PoolEventType
.
POOL_RES_LOADED
,
valueMap
);
}
private
void
logout
(){
// if(PoolSdkHelper.hasLogout()){
// PoolSdkHelper.logout(this);//结果回调通知到PoolLogoutListener
// }
}
private
void
upTx
(
final
String
msg
){
mContext
.
runOnUiThread
(
new
Runnable
()
{
@Override
public
void
run
()
{
txMsg
.
setText
(
msg
);
}
});
// new Handler().post(new Runnable() {
//
// @Override
// public void run() {
// txMsg.setText(msg);
// }
// });
}
private
void
login
()
{
PoolSdkLog
.
logError
(
"调用login"
);
PoolSdkHelper
.
login
(
"登录自定义字段"
,
new
PoolLoginListener
()
{
@Override
public
void
onLoginSuccess
(
PoolLoginInfo
poolLoginInfo
)
{
final
String
userType
=
poolLoginInfo
.
getUserType
();
final
String
timestamp
=
poolLoginInfo
.
getTimestamp
();
final
String
serverSign
=
poolLoginInfo
.
getServerSign
();
final
String
openId
=
poolLoginInfo
.
getOpenID
();
// TODO: 把以上信息发送给游戏服务端做登录校验,需要其他信息请从poolLoginInfo对象中获取
System
.
out
.
println
(
"登录成功回调:userType = "
+
userType
+
"; timestamp = "
+
timestamp
+
"; serverSign = "
+
serverSign
+
"; openId = "
+
openId
);
upTx
(
"登录成功回调:userType = "
+
userType
+
"; timestamp = "
+
timestamp
+
"; serverSign = "
+
serverSign
+
"; openId = "
+
openId
);
}
@Override
public
void
onLoginFailed
(
final
String
errorMsg
)
{
System
.
out
.
println
(
"登录失败回调 :"
+
errorMsg
);
upTx
(
"登录失败回调 :"
+
errorMsg
);
}
});
PoolPayOrderConfirmHandler
.
getInstance
(
this
,
2000
,
1000
).
startOrderConfirmOp
(
mPoolPayListener
);
}
private
void
pay
()
{
final
PoolPayInfo
poolPayInfo
=
new
PoolPayInfo
();
/********************************************
* 以下所有字段都是必填项
*/
// 设置充值金额,单位“元”
poolPayInfo
.
setAmount
(
"100"
);
// 服务器id
poolPayInfo
.
setServerID
(
"1209"
);
// 服务器名
poolPayInfo
.
setServerName
(
"我是服务器名"
);
// 角色id
poolPayInfo
.
setRoleID
(
"123456"
);
// 角色名
poolPayInfo
.
setRoleName
(
"我是角色名"
);
// 角色等级
poolPayInfo
.
setRoleLevel
(
"10"
);
// 商品ID
poolPayInfo
.
setProductID
(
"1"
);
// 商品名称
poolPayInfo
.
setProductName
(
"金币"
);
// 商品描述
poolPayInfo
.
setProductDesc
(
"购买金币"
);
// 兑换比例
poolPayInfo
.
setExchange
(
"10"
);
// 自定义参数
poolPayInfo
.
setCustom
(
"我是自定义参数"
);
// TODO Auto-generated method stub
PoolSdkHelper
.
pay
(
poolPayInfo
,
mPoolPayListener
);
}
/**
* 提交角色数据 该接口需要在3个地方调用
*
* 1、登录游戏主场景 2、创建角色 3、角色升级
*/
private
void
submitRoleData
(
int
level
,
String
callType
)
{
/********************************************
* 以下所有字段都是必填项
*/
final
PoolRoleInfo
poolRoleInfo
=
new
PoolRoleInfo
();
poolRoleInfo
.
setRoleID
(
"123456"
);
poolRoleInfo
.
setRoleLevel
(
level
+
""
);
poolRoleInfo
.
setRoleSex
(
"0"
);
poolRoleInfo
.
setRoleName
(
"我是角色名"
);
poolRoleInfo
.
setServerID
(
"1209"
);
poolRoleInfo
.
setServerName
(
"我是服务器名"
);
poolRoleInfo
.
setCustom
(
"角色创建时间"
);
poolRoleInfo
.
setRoleCTime
((
long
)
1509331962
);
//角色创建时间(秒)
poolRoleInfo
.
setPartyName
(
"公会名称"
);
poolRoleInfo
.
setRoleType
(
"狂战"
);
//角色类型
poolRoleInfo
.
setRoleChangeTime
(
System
.
currentTimeMillis
()/
1000
);
//角色更新时间
poolRoleInfo
.
setVipLevel
(
"10"
);
//vip等级
poolRoleInfo
.
setDiamond
(
"1000"
);
//余额
poolRoleInfo
.
setMoneyType
(
"金币"
);
//商品单位
poolRoleInfo
.
setCallType
(
callType
);
// poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);
// poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);
PoolSdkHelper
.
submitRoleData
(
poolRoleInfo
,
new
PoolRoleListener
()
{
@Override
public
void
onRoleDataSuccess
(
String
paramCustom
)
{
System
.
out
.
println
(
"提交角色数据成功:"
+
poolRoleInfo
.
verboseInfo
());
upTx
(
"提交角色数据成功:"
+
poolRoleInfo
.
verboseInfo
());
}
});
}
/**
* 用户中心
*
* 游戏方先调用PoolSdkHelper.hasChannelCenter()获取是否有用户中心,
* 如果有的话,游戏中需要添加按钮,点击按钮调用PoolSdkHelper.openChannelCenter();
* 如果没有,则不需要显示按钮,也不用调用下面的接口
*/
private
void
channelCenter
()
{
PoolSdkHelper
.
openChannelCenter
();
}
/**
* 切换帐号
*/
private
void
switchAccount
()
{
if
(
PoolSdkHelper
.
hasLogout
()){
PoolSdkHelper
.
logout
(
this
);
//注销成功后结果回调通知到PoolLogoutListener中
}
else
if
(
PoolSdkHelper
.
hasSwitchAccount
()){
PoolSdkHelper
.
switchAccount
(
this
);
//切换成功后回回调结果到登录成功通知中(与登录通知数据一样)
}
else
{
//渠道不存在注销和切换账号接口,游戏可自定处理逻辑
}
}
/**
* 扩展接口
*/
private
void
expansionInterface
()
{
PoolSdkHelper
.
expansionInterface
(
"自定义参数"
,
new
PoolExpansionListener
()
{
@Override
public
void
onSuccess
(
String
paramCustom
)
{
}
});
}
/**
* 商品查询接口
*/
private
void
queryProducts
(){
PoolSdkLog
.
logError
(
PoolSdkHelper
.
hasFunction
(
"hasQueryWithProducts"
)
+
"SSS"
);
Map
productMap
=
new
HashMap
<
Object
,
Object
>();
productMap
.
put
(
"productId1"
,
""
);
productMap
.
put
(
"productId2"
,
""
);
PoolSdkHelper
.
callFunc
(
"queryWithProducts"
,
productMap
);
}
}
```
\ No newline at end of file
...
...
Please
register
or
login
to post a comment