@@ -1,4 +1,3 @@
package com.unity3d.player ;
import android.app.Activity ;
@@ -29,31 +28,71 @@ import com.tuyoo.gamesdk.api.SDKAPI;
import com.tuyoo.gamesdk.api.SDKCallBack ;
import com.tuyoo.gamesdk.api.SDKWrapper ;
import com.tuyoo.gamesdk.api.TuYooClientID ;
import com.tuyoo.gamesdk.event.EventBus ;
import com.tuyoo.gamesdk.event.EventConsts ;
import com.tuyoo.gamesdk.event.data.PayEventData ;
import com.tuyoo.gamesdk.event.data.WeixinShareData ;
import com.tuyoo.gamesdk.login.model.SnsInfo ;
import com.tuyoo.gamesdk.model.InitParam ;
import com.tuyoo.gamesdk.pay.model.PayType ;
import com.tuyoo.gamesdk.util.SDKLog ;
import org.json.JSONArray ;
import org.json.JSONException ;
import org.json.JSONObject ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import kotlinx.serialization.json.Json ;
/**
* Unified SDKManager for all channels (GooglePlay / Flexion / RuStore).
* C# passes the channel string via InitSDK(activity, channel); Java dispatches
* internally via switch. All login/link/GA/share logic is shared.
* Channel-specific behaviour is limited to: Init, Pay, thirdExtend, Review.
*/
public class SDKManager {
private final static Handler handler = new Handler ( Looper . getMainLooper ( ) ) ;
private static final Handler handler = new Handler ( Looper . getMainLooper ( ) ) ;
private static IGASDK gasdk ;
private static final String TAG = com . unity3d . player . SDKManager. class . getSimpleName ( ) ;
private static final String TAG = SDKManager . class . getSimpleName ( ) ;
private static String curType = TuYooClientID . tyGuest ;
public static void InitSDK ( Activity activity )
{
private static SnsInfo tmpSnsInfo ;
private static String channel = " GooglePlay " ;
// Channel helper registry
public interface ISDKHelper {
void init ( Activity activity ) ;
void pay ( Activity activity , String productId , String productName ,
String productCount , String prodorderId , String appInfo ) ;
void queryProducts ( ) ;
}
private static final java . util . Map < String , ISDKHelper > helperMap = new java . util . HashMap < > ( ) ;
private static ISDKHelper sdkHelper ;
public static void registerHelper ( String ch , ISDKHelper helper ) {
helperMap . put ( ch , helper ) ;
}
// -------------------------------------------------------------------------
// Init — with channel helper support
// -------------------------------------------------------------------------
public static void InitSDK ( Activity activity , String ch ) {
channel = ch ! = null ? ch : " GooglePlay " ;
ChannelHelpers . register ( ) ;
if ( ! channel . equals ( ChannelHelpers . CHANNEL ) ) {
Log . e ( TAG , " Channel mismatch! Helpers= " + ChannelHelpers . CHANNEL + " expected= " + channel ) ;
}
sdkHelper = helperMap . get ( channel ) ;
Log . i ( TAG , " InitSDK channel= " + channel + " helper= " + ( sdkHelper ! = null ? sdkHelper . getClass ( ) . getSimpleName ( ) : " none " ) ) ;
if ( sdkHelper ! = null ) {
sdkHelper . init ( activity ) ;
} else {
initDefault ( activity ) ;
}
}
private static void initDefault ( Activity activity ) {
activity . runOnUiThread ( ( ) - > {
SDKAPI . getIns ( ) . lightModeEnable ( ) ;
try {
@@ -67,11 +106,14 @@ public class SDKManager {
SDKAPI . getIns ( ) . onActivityStart ( activity ) ;
SDKAPI . getIns ( ) . onActivityResume ( activity ) ;
} catch ( Exception e ) {
System . out . println ( " initSDK Exception " + e ) ;
System . out . println ( " initSDK Exception " + e ) ;
}
} ) ;
}
// -------------------------------------------------------------------------
// Login / Callbacks (shared)
// -------------------------------------------------------------------------
public static void parseLoginInfo ( int i , String s ) {
try {
@@ -80,21 +122,21 @@ public class SDKManager {
if ( i = = 0 ) {
JSONObject serverResponse = new JSONObject ( s ) ;
JSONObject userInfo = serverResponse . getJSONObject ( " result " ) ;
result . put ( " loginData " , userInfo ) ;
result . put ( " loginData " , userInfo ) ;
} else {
result . put ( " errStr " , s ) ;
}
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
} catch ( Exception e ) {
Log . e ( TAG , " SDKManager-parseLoginInfo-Exception " + e ) ;
Log . e ( TAG , " SDKManager-parseLoginInfo-Exception " + e ) ;
SDKLog . e ( " SDKManager-parseLoginInfo-Exception " + e ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
}
}
//登录回调-统一的回调方法(保持回调仅有一个,否则可能会出现多次回调的情况)
static SDKCallBack . Login mLogin = new SDKCallBack . Login ( ) {
protected static SDKCallBack . Login mLogin = new SDKCallBack . Login ( ) {
@Override
public void callback ( int i , String s ) {
SDKLog . i ( " SDKCallBack.Login callback: " + i + " \ n " + s ) ;
@@ -103,21 +145,22 @@ public class SDKManager {
}
} ;
static SDKCallBack . Pay mPay = new SDKCallBack . Pay ( ) {
protected static SDKCallBack . Pay mPay = new SDKCallBack . Pay ( ) {
@Override
public void callback ( int i , String s ) {
SDKLog . i ( " SDKCallBack.Pay callback: " + i + " \ n " + s ) ;
try {
JSONObject result = new JSONObject ( ) ;
result . put ( " code " , i ) ;
result . put ( " respObj " , s ) ;
result . put ( " errStr " , s ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . PAY_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
} catch ( Exception e ) {
Log . e ( TAG , " SDKManager-SDKCallBack.Pay-Exception " + e ) ;
Log . e ( TAG , " SDKManager-SDKCallBack.Pay-Exception " + e ) ;
SDKLog . e ( " SDKManager-SDKCallBack.Pay-Exception " + e ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . PAY_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
}
}
} ;
@@ -132,18 +175,15 @@ public class SDKManager {
handler . post ( ( ) - > SDKAPI . getIns ( ) . loginByToken ( token , mLogin ) ) ;
}
public static String UnityLoginBySnsInfo ( )
{
if ( tmpSnsInfo = = null )
{
handler . post ( ( ) - > UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ) ;
public static String UnityLoginBySnsInfo ( ) {
if ( tmpSnsInfo = = null ) {
handler . post ( ( ) - > UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LOGIN_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ) ;
return " " ;
}
SDKLog . i ( " UnityLoginBySns : " + tmpSnsInfo ) ;
handler . post ( ( ) - > SDKAPI . getIns ( ) . loginBySnsInfo ( tmpSnsInfo , mLogin ) ) ;
return tmpSnsInfo . type ;
}
public static void UnityGetIdentityFun ( String type ) {
@@ -161,15 +201,15 @@ public class SDKManager {
handler . post ( ( ) - > SDKAPI . getIns ( ) . logout ( type ) ) ;
}
private static SnsInfo tmpSnsInfo ;
public static void LinkAccount ( String type , String userId )
{
SDKAPI . getIns ( ) . getSnsInfo ( type , ( snscode , snsInfo , snsmsg ) - > {
if ( snscode = = SDKCallBack . CODE_SUCCESS & & snsInfo ! = null )
{
SDKAPI . getIns ( ) . bindBySnsId ( snsInfo , userId , ( bindcode , bindmsg ) - > {
if ( bindcode = = SDKCallBack . CODE_SUCCESS )
{
// -------------------------------------------------------------------------
// Account linking (shared )
// -------------------------------------------------------------------------
public static void LinkAccount ( String type , String userId ) {
SDKAPI . getIns ( ) . getSnsInfo ( type , ( snscode , snsInfo , snsmsg ) - > {
if ( snscode = = SDKCallBack . CODE_SUCCESS & & snsInfo ! = null ) {
SDKAPI . getIns ( ) . bindBySnsId ( snsInfo , userId , ( bindcode , bindmsg ) - > {
if ( bindcode = = SDKCallBack . CODE_SUCCESS ) {
try {
JSONObject result = new JSONObject ( ) ;
result . put ( " code " , bindcode ) ;
@@ -178,41 +218,28 @@ public class SDKManager {
JSONObject serverResponse = new JSONObject ( bindmsg ) ;
JSONObject userInfo = serverResponse . getJSONObject ( " result " ) ;
result . put ( " loginData " , userInfo ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
} catch ( JSONException e ) {
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
}
else if ( bindcode = = SDKCallBack . CODE_FAILED )
{
try
{
} else if ( bindcode = = SDKCallBack . CODE_FAILED ) {
try {
JSONObject bindMsgObj = new JSONObject ( bindmsg ) ;
JSONObject bindMsgResult = bindMsgObj . getJSONObject ( " result " ) ;
int bindMsgResultCode = bindMsgResult . getInt ( " code " ) ;
if ( bindMsgResultCode = = 4 )
{
SDKAPI . getIns ( ) . checkSnsInfo ( snsInfo , ( checkcode , checkMsg ) - > {
if ( checkcode ! = SDKCallBack . CODE_SUCCESS )
{
if ( bindMsgResultCode = = 4 ) {
SDKAPI . getIns ( ) . checkSnsInfo ( snsInfo , ( checkcode , checkMsg ) - > {
if ( checkcode ! = SDKCallBack . CODE_SUCCESS ) {
Log . w ( TAG , checkMsg ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
return ;
}
try {
//{
// "track":"128:10:28654792:1766569516",
// "result":{
// "bindInfo":"{ // \"guest\": \"guest:devidmap3:bf12a8a28b663548e368ebe8742368b7\", // \"google\": \"google:118182347502471840780\" // }",
// "code":0,
// "info":"user exist",
// "exist":1,
// "userId":10030
// }
// }
tmpSnsInfo = snsInfo ;
JSONObject checkMsgObj = new JSONObject ( checkMsg ) ;
JSONObject checkResult = checkMsgObj . getJSONObject ( " result " ) ;
@@ -222,165 +249,143 @@ public class SDKManager {
callbackMsg . put ( " code " , - 1 ) ;
callbackMsg . put ( " userId " , bindUserId ) ;
callbackMsg . put ( " bindInfo " , bindInfo ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , callbackMsg . toString ( ) ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME ,
callbackMsg . toString ( ) ) ;
} catch ( JSONException e ) {
Log . i ( TAG , e . toString ( ) ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
else
{
} else {
Log . w ( TAG , bindmsg ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
}
catch ( JSONException e )
{
} catch ( JSONException e ) {
Log . i ( TAG , e . toString ( ) ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
}
else
{
} else {
Log . w ( TAG , bindmsg ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
else
{
} else {
Log . w ( TAG , snsmsg ) ;
String msg = " { \" code \" :1, \" userId \" : 0} " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . LINKACCOUT_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
public static void CleanLinkTmpSnsInfo ( )
{
tmpSnsInfo = null ;
}
public static void ChangeLinkAccount ( String type , int oldUserId , int newUserId )
{
if ( tmpSnsInfo = = null )
{
public static void CleanLinkTmpSnsInfo ( ) {
tmpSnsInfo = null ;
}
public static void ChangeLinkAccount ( String type , int oldUserId , int newUserId ) {
if ( tmpSnsInfo = = null ) {
String msg = " { \" code \" :1, \" userId \" : 0, \" msg \" : \" tmpSnsInfo is null \" } " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
return ;
}
SDKAPI . getIns ( ) . unbindBySnsId ( tmpSnsInfo , String . valueOf ( oldUserId ) , ( unbindCode , unbindMsg ) - > {
Log . i ( TAG , " unbindBySnsId code: " + unbindCode + " msg: " + unbindMsg ) ;
if ( unbindCode = = SDKCallBack . CODE_SUCCESS )
{
if ( unbindCode = = SDKCallBack . CODE_SUCCESS ) {
SDKAPI . getIns ( ) . bindBySnsId ( tmpSnsInfo , String . valueOf ( newUserId ) , ( bindCode , bindMsg ) - > {
Log . i ( TAG , " bindBySnsId code: " + bindCode + " msg: " + bindMsg ) ;
if ( bindCode = = SDKCallBack . CODE_SUCCESS )
{
if ( bindCode = = SDKCallBack . CODE_SUCCESS ) {
String msg = " { \" code \" :0, \" userId \" : " + newUserId + " , \" msg \" : \" success \" } " ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
}
else
{
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
} else {
String msg = String . format ( " { \" code \" :-1, \" userId \" : 0, \" msg \" : \" %s \" } " , bindMsg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
else
{
} else {
String msg = String . format ( " { \" code \" :1, \" userId \" : 0, \" msg \" : \" %s \" } " , unbindMsg ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
public static void LinkCheck ( String type )
{
SDKAPI . getIns ( ) . getSnsInfo ( type , ( code , snsInfo , msg ) - > {
if ( code = = SDKCallBack . CODE_SUCCESS & & snsInfo ! = null ) {
SDKAPI . getIns ( ) . checkSnsInfo ( snsInfo , ( code1 , msg1 ) - > {
if ( code1 = = SDKCallBack . CODE_SUCCESS & & ! TextUtils . isEmpty ( msg1 ) ) {
try {
JSONObject jsonObject = new JSONObject ( msg1 ) . optJSONObject ( " result " ) ;
//返回信息中code为0时表示服务端查询成功, exit为1表示此渠道用户信息已产生过途游账号, 可直接进行登录, exit为0表示此渠道用户信息未产生过途游账号, 可以进行绑定
if ( jsonObject . optString ( " code " ) . equals ( " 0 " )
& & jsonObject . optString ( " exist " ) . equals ( " 0 " ) ) {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " 0 " ) ;
}
else
{
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " 1 " ) ;
}
} catch ( JSONException e ) {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
e . printStackTrace ( ) ;
}
}
else
{
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
}
} ) ;
}
else
{
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHANGELINK_CALLBACK_FUNCTION_NAME , msg ) ;
}
} ) ;
}
public static void UnityKnow ( String productId , String productName , String productCount , String prodorderId , String appInfo ) {
public static void LinkCheck ( String type ) {
SDKAPI . getIns ( ) . getSnsInfo ( type , ( code , snsInfo , msg ) - > {
if ( code = = SDKCallBack . CODE_SUCCESS & & snsInfo ! = null ) {
SDKAPI . getIns ( ) . checkSnsInfo ( snsInfo , ( code1 , msg1 ) - > {
if ( code1 = = SDKCallBack . CODE_SUCCESS & & ! TextUtils . isEmpty ( msg1 ) ) {
try {
JSONObject jsonObject = new JSONObject ( msg1 ) . optJSONObject ( " result " ) ;
if ( jsonObject . optString ( " code " ) . equals ( " 0 " )
& & jsonObject . optString ( " exist " ) . equals ( " 0 " ) ) {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " 0 " ) ;
} else {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " 1 " ) ;
}
} catch ( JSONException e ) {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
e . printStackTrace ( ) ;
}
} else {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
}
} ) ;
} else {
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . CHECKLINK_CALLBACK_FUNCTION_NAME , " -1 " ) ;
}
} ) ;
}
// -------------------------------------------------------------------------
// Payment — channel dispatch
// -------------------------------------------------------------------------
public static void UnityKnow ( String productId , String productName , String productCount ,
String prodorderId , String appInfo ) {
if ( sdkHelper ! = null ) {
sdkHelper . pay ( UnityPlayer . currentActivity , productId , productName , productCount , prodorderId , appInfo ) ;
return ;
}
SDKLog . i ( " UnityKnow : " + productId ) ;
HashMap < String , String > extraInfo = new HashMap < String , String > ( ) ;
extraInfo . put ( " appInfo " , appInfo ) ;
SDKAPI . getIns ( ) . pay ( productId , productName , productCount , Integer . parseInt ( ConfigManager . SDK_GAMEID ) , mPay , prodorderId , extraInfo ) ;
SDKAPI . getIns ( ) . pay ( productId , productName , productCount ,
Integer . parseInt ( ConfigManager . SDK_GAMEID ) , mPay , prodorderId , extraInfo ) ;
}
public static void UnityGet KnowTypeList ( String productId )
{
Log . e ( TAG , " UnityGetKnowTypeList: " + productId ) ;
final PayEventData . PayReq mPayReq = new PayEventData . PayReq ( ) ;
mPayReq . prodId = productId ;
SDKAPI . getIns ( ) . charge ( mPayReq , new SDKCallBack . Base1 ( ) {
@Override
public void callback ( int code , String msg ) {
SDKLog . e ( " ====> code= " + code + " msg= " + msg ) ;
try {
JSONObject result = new JSONObject ( ) ;
result . put ( " code " , code ) ;
if ( code = = 0 ) {
result . put ( " respObj " , msg ) ;
} else {
result . put ( " errStr " , msg ) ;
}
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
} catch ( Exception e ) {
SDKLog . e ( " SDKManager-UnityGetKnowTypeList-Exception " + e ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
}
}
} ) ;
}
public static void UnityKnowNew ( String productId , String productPrice , String productName , String productCount , String prodorderId , String appInfo , String ptype )
{
public static void UnityKnowNew ( String productId , String productPrice , String productName ,
String productCount , String prodorderId , String appInfo ,
String ptype ) {
if ( sdkHelper ! = null ) {
sdkHelper . pay ( UnityPlayer . currentActivity , productId , productName , productCount , prodorderId , appInfo ) ;
return ;
}
PayEventData . PayData payData = new PayEventData . PayData ( ) ;
final PayEventData . PayReq mPayReq = new PayEventData . PayReq ( ) ;
mPayReq . prodId = productId ;
mPayReq . prodPrice = productPrice ;
mPayReq . prodName = productName ;
mPayReq . prodCount = productCount ;
// 此字段与服务端回调接口内的appInfo不对应, 与orderId相对应
mPayReq . appInfo = prodorderId ;
HashMap < String , String > map = new HashMap < String , String > ( ) ;
// 此字段( appInfo) 可用于传递透传信息( 此信息与服务端回调接口内的appInfo相对应)
map . put ( " appInfo " , appInfo ) ;
mPayReq . extra = map ;
payData . payReq = mPayReq ;
@@ -389,41 +394,56 @@ public class SDKManager {
SDKAPI . getIns ( ) . payNew ( payData , payType , mPay ) ;
}
// -------------------------------------------------------------------------
// thirdExtend — with channel helper support
// -------------------------------------------------------------------------
public static void thirdExtend ( )
{
Log . e ( TAG , " ====>java thirdExtend " ) ;
public static void thirdExtend ( ) {
if ( sdkHelper ! = null ) {
sdkHelper . queryProducts ( ) ;
return ;
}
defaultThirdExtend ( ) ;
}
private static void defaultThirdExtend ( ) {
Log . e ( TAG , " ====>java thirdExtend " ) ;
JSONObject jsonObject = new JSONObject ( ) ;
try {
jsonObject . put ( " action " , " ACTION_GET_SKU_DETAILS_LIST " ) ;
jsonObject . put ( " action " , " ACTION_GET_SKU_DETAILS_LIST " ) ;
} catch ( JSONException e ) {
throw new RuntimeException ( e ) ;
}
SDKAPI . getIns ( ) . thirdExtend ( jsonObject . toString ( ) , new SDKCallBack . Extend ( ) {
@Override public void callback ( int code , String msg ) {
Log . e ( TAG , " ====>thirdExtend code= " + code + " msg= " + msg ) ;
@Override
public void callback ( int code , String msg ) {
Log . e ( TAG , " ====>thirdExtend code= " + code + " msg= " + msg ) ;
try {
//获取成功, msg即为对应的json字符串
JSONObject result = new JSONObject ( ) ;
result . put ( " code " , code ) ;
if ( code = = SDKCallBack . Extend . EXTEND_CODE_SUCCESS ) {
if ( code = = SDKCallBack . Extend . EXTEND_CODE_SUCCESS ) {
result . put ( " respObj " , msg ) ;
} else {
Log . e ( TAG , " 获取商品列表失败啦: " + msg ) ;
} else {
Log . e ( TAG , " thirdExtend failed: " + msg ) ;
result . put ( " thirdExtend_errStr " , msg ) ;
}
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , result . toString ( ) ) ;
} catch ( Exception e ) {
SDKLog . e ( " SDKManager-UnityGetKnowTypeList -Exception " + e ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME , ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
SDKLog . e ( " SDKManager-thirdExtend -Exception " + e ) ;
UnityPlayer . UnitySendMessage ( ConfigManager . UNITY_FACADE_NAME ,
ConfigManager . PAY_TYPE_CALLBACK_FUNCTION_NAME , " { \" code \" :1} " ) ;
}
}
} ) ;
}
private static IGASDK GetGameGa ( ) {
if ( gasdk = = null ) {
// -------------------------------------------------------------------------
// GA (shared)
// -------------------------------------------------------------------------
protected static IGASDK GetGameGa ( ) {
if ( gasdk = = null ) {
GAConfiguration . Builder builder = new GAConfiguration . Builder ( )
. withBaseUrl ( BaseUrl . INTERNATIONAL )
. withContext ( SDKWrapper . getInstance ( ) . getContext ( ) )
@@ -435,82 +455,61 @@ public class SDKManager {
return gasdk ;
}
public static void SetGaUserInfo ( String userId )
{
Log . e ( TAG , " SetGaUserInfo : " + userId ) ;
public static void SetGaUserInfo ( String userId ) {
Log . e ( TAG , " SetGaUserInfo : " + userId ) ;
SDKLog . i ( " SetGaUserInfo : " + userId ) ;
GetGameGa ( ) . setUserId ( userId ) ;
}
public static void SetGaCommonInfo ( String SetGaCommonInfo )
{
Log . e ( TAG , " SetGaCommonInfo : " + SetGaCommonInfo ) ;
public static void SetGaCommonInfo ( String SetGaCommonInfo ) {
Log . e ( TAG , " SetGaCommonInfo : " + SetGaCommonInfo ) ;
SDKLog . i ( " SetGaCommonInfo : " + SetGaCommonInfo ) ;
Gson gson = new Gson ( ) ;
Map < String , Object > map = gson . fromJson ( SetGaCommonInfo , new TypeToken < Map < String , Object > > ( ) { } . getType ( ) ) ;
Map < String , Object > map = gson . fromJson ( SetGaCommonInfo ,
new TypeToken < Map < String , Object > > ( ) { } . getType ( ) ) ;
for ( String key : map . keySet ( ) ) {
System . out . println ( " Key = " + key + " , Value = " + map . get ( key ) ) ;
if ( ! TextUtils . isEmpty ( key ) & & map . get ( key ) ! = null ) {
if ( ! TextUtils . isEmpty ( key ) & & map . get ( key ) ! = null ) {
GetGameGa ( ) . addCommonParameter ( key , map . get ( key ) . toString ( ) ) ;
}
}
}
public static void GAReportParams ( int type , String eventstr , String paramstr )
{
public static void GAReportParams ( int type , String eventstr , String paramstr ) {
ParamsBuilder paramsBuilder = ParamsBuilder . newInstance ( ) ;
Gson gson = new Gson ( ) ;
Map < String , Object > map = gson . fromJson ( paramstr , new TypeToken < Map < String , Object > > ( ) { } . getType ( ) ) ;
Map < String , Object > map = gson . fromJson ( paramstr ,
new TypeToken < Map < String , Object > > ( ) { } . getType ( ) ) ;
for ( String key : map . keySet ( ) ) {
if ( ! TextUtils . isEmpty ( key ) & & map . get ( key ) ! = null ) {
if ( ! TextUtils . isEmpty ( key ) & & map . get ( key ) ! = null ) {
paramsBuilder . append ( key , map . get ( key ) . toString ( ) ) ;
}
}
// GA_TRACK = 1, //默认类型
// GA_CION = 2, //金流相关事件
// GA_PAY = 3, //支付相关事件
// GA_GAME = 4, //游戏行为
// GA_LOGIN = 5, //登录注册相关事件
// GA_PUSH = 6, //推送相关事件
// GA_ADBOX = 7, //adbox相关事件
// GA_PREFORMANCE = 8, //性能上报相关事件
// GA_SDK = 9, //SDK相关事件
// GA_ABTest = 10, //abtest相关事件
switch ( type )
{
case 2 :
GetGameGa ( ) . track ( EventType . COIN , eventstr , paramsBuilder ) ;
break ;
case 3 :
GetGameGa ( ) . track ( EventType . PAY , eventstr , paramsBuilder ) ;
break ;
case 4 :
GetGameGa ( ) . track ( EventType . GAME , eventstr , paramsBuilder ) ;
break ;
case 5 :
GetGameGa ( ) . track ( EventType . LOGIN , eventstr , paramsBuilder ) ;
break ;
case 6 :
GetGameGa ( ) . track ( EventType . PUSH , eventstr , paramsBuilder ) ;
break ;
case 7 :
GetGameGa ( ) . track ( EventType . ADBOX , eventstr , paramsBuilder ) ;
break ;
case 8 :
GetGameGa ( ) . track ( EventType . PREFORMANCE , eventstr , paramsBuilder ) ;
break ;
case 9 :
GetGameGa ( ) . track ( EventType . SDK , eventstr , paramsBuilder ) ;
break ;
default :
GetGameGa ( ) . track ( EventType . TRACK , eventstr , paramsBuilder ) ;
break ;
switch ( type ) {
case 2 : GetGameGa ( ) . track ( EventType . COIN , eventstr , paramsBuilder ) ; break ;
case 3 : GetGameGa ( ) . track ( EventType . PAY , eventstr , paramsBuilder ) ; break ;
case 4 : GetGameGa ( ) . track ( EventType . GAME , eventstr , paramsBuilder ) ; break ;
case 5 : GetGameGa ( ) . track ( EventType . PAY , eventstr , paramsBuilder ) ; break ;
case 6 : GetGameGa ( ) . track ( EventType . PUSH , eventstr , paramsBuilder ) ; break ;
case 7 : GetGameGa ( ) . track ( EventType . ADBOX , eventstr , paramsBuilder ) ; break ;
case 8 : GetGameGa ( ) . track ( EventType . PREFORMANCE , eventstr , paramsBuilder ) ; break ;
case 9 : GetGameGa ( ) . track ( EventType . SDK , eventstr , paramsBuilder ) ; break ;
default : GetGameGa ( ) . track ( EventType . TRACK , eventstr , paramsBuilder ) ; break ;
}
}
public static void Review ( )
{
// -------------------------------------------------------------------------
// Review — channel dispatch
// -------------------------------------------------------------------------
public static void Review ( ) {
if ( " Rustore " . equals ( channel ) ) {
RuStoreReview ( ) ;
} else {
GooglePlayReview ( ) ;
}
}
private static void GooglePlayReview ( ) {
ReviewManager manager = ReviewManagerFactory . create ( SDKWrapper . getInstance ( ) . getContext ( ) ) ;
Task < ReviewInfo > request = manager . requestReviewFlow ( ) ;
request . addOnCompleteListener ( reqTask - > {
@@ -519,16 +518,59 @@ public class SDKManager {
Activity activity = UnityPlayer . currentActivity ;
manager . launchReviewFlow ( activity , reviewInfo ) ;
} else {
@ReviewErrorCode int reviewErrorCode = ( ( ReviewException ) request . getException ( ) ) . getErrorCode ( ) ;
Log . e ( TAG , " Review Error code: " + review ErrorCode ) ;
@ReviewErrorCode int reviewErrorCode =
( ( ReviewException ) request . getException ( ) ) . get ErrorCode ( );
Log . e ( TAG , " Review Error code: " + reviewErrorCode ) ;
}
} ) ;
}
public static void FBShareLink ( String title , String content , String url )
{
Log . e ( TAG , " FBShareLink : " + title + " " + content + " " + url ) ;
// RuStore two-step review
public interface ReviewResultCallback {
void onReviewSuccess ( JSONObject result ) ;
void onReviewError ( int code , String msg ) ;
}
public static void RequestRustoreReView ( ReviewResultCallback callback ) {
JSONObject json = new JSONObject ( ) ;
try { json . put ( " action " , " ACTION_REQUEST_REVIEW " ) ; } catch ( JSONException e ) { throw new RuntimeException ( e ) ; }
SDKAPI . getIns ( ) . thirdExtend ( json . toString ( ) , ( code , msg ) - > {
Log . e ( TAG , " RequestRustoreReView code= " + code + " msg= " + msg ) ;
try {
JSONObject result = new JSONObject ( ) ;
result . put ( " code " , code ) ;
if ( code = = SDKCallBack . Extend . EXTEND_CODE_SUCCESS ) {
if ( callback ! = null ) callback . onReviewSuccess ( result ) ;
} else {
result . put ( " thirdExtend_errStr " , msg ) ;
if ( callback ! = null ) callback . onReviewError ( code , msg ) ;
}
} catch ( Exception e ) {
SDKLog . e ( " RequestRustoreReView Exception: " + e ) ;
}
} ) ;
}
public static void LaunchRustoreView ( ) {
JSONObject json = new JSONObject ( ) ;
try { json . put ( " action " , " ACTION_LAUNCH_REVIEW " ) ; } catch ( JSONException e ) { throw new RuntimeException ( e ) ; }
SDKAPI . getIns ( ) . thirdExtend ( json . toString ( ) , ( code , msg ) - >
Log . e ( TAG , " LaunchRustoreView code= " + code + " msg= " + msg ) ) ;
}
public static void RuStoreReview ( ) {
RequestRustoreReView ( new ReviewResultCallback ( ) {
@Override public void onReviewSuccess ( JSONObject result ) { LaunchRustoreView ( ) ; }
@Override public void onReviewError ( int code , String msg ) { }
} ) ;
}
// -------------------------------------------------------------------------
// Facebook / Messenger share (shared)
// -------------------------------------------------------------------------
public static void FBShareLink ( String title , String content , String url ) {
Log . e ( TAG , " FBShareLink : " + title + " " + content + " " + url ) ;
if ( ShareDialog . canShow ( ShareLinkContent . class ) ) {
Activity activity = UnityPlayer . currentActivity ;
ShareDialog dialog = new ShareDialog ( activity ) ;
@@ -537,30 +579,22 @@ public class SDKManager {
. setContentUrl ( Uri . parse ( url ) )
. build ( ) ;
dialog . show ( linkContent ) ;
}
else
{
} else {
Log . e ( TAG , " FBShareDialog can not show " ) ;
}
}
public static void MessengerShareLink ( String title , String content , String url )
{
Log . e ( TAG , " MessengerShareLink : " + title + " " + content + " " + url ) ;
public static void MessengerShareLink ( String title , String content , String url ) {
Log . e ( TAG , " MessengerShareLink : " + title + " " + content + " " + url ) ;
if ( MessageDialog . canShow ( ShareLinkContent . class ) ) {
Activity activity = UnityPlayer . currentActivity ;
ShareLinkContent linkContent = new ShareLinkContent . Builder ( )
. setQuote ( content )
. setContentUrl ( Uri . parse ( url ) )
. build ( ) ;
MessageDialog . show ( activity , linkContent ) ;
}
else
{
MessageDialog . show ( activity , linkContent ) ;
} else {
Log . e ( TAG , " Messenger ShareDialog can not show " ) ;
}
}
}