更新时间:2017-2-22

应用场景


原生Android接入适合任何引擎开发的Android游戏项目。适合已经完成了游戏跨平台调用,及有在游戏内接入过Android原生第三方经验的游戏开发商。

Android接入优点在于有很好的灵活性和适应行,可以支持所有开发引擎对接,如:Unity3D、Cocos2Dx、自研引擎。并且因为开源特性能很快速的聚合接入运营工具SDK,如:乐变、友盟、talkdata等。

当然Android层完成接入也有其缺点,游戏开发者需要自行解决iOS、Android多平台发布问题,可能需要针对iOS和Android分开进行接入。同时游戏还发者还需要解决跨平台方法调用和数据封装,有不小的开发工作量。

客户端接入准备工作


在客户端接入TypeSDK前,你需要从TypeSDK官网下载TypeSDK提供的原生接入资源,资源内包含聚合接入代码及TypeSDK自主发行渠道,以供开发者进行调试。再打包时自主开发渠道将被替换为其他渠道资源文件。如果您的开发环境没有外网,还建议您将接入文档及接入资源复制到您的开发环境,文档中提供了大量的范例代码,您可更具需要直接复制和修改,帮助您快速完成编码工作。

导入资源

引用TypeSDK项目

第一步:在Eclipse中选择导入MainActiviy项目。

导入-1.png

导入-2.png

第二步:在您的主项目中引用被导入的MainActivity项目

引用MainActivity.png

第三步:复制MainActivity项目assets目录中的文件至游戏项assets目录中。

第四步:添加AndroidManifest.xml内容

  1. 在application元素内添加属性 android:name="com.type.sdk.application.TypeApplication"
    android:name="com.type.sdk.application.TypeApplication"

如果您有自己的Application代码,请继承com.type.sdk.application.TypeApplication,然后将此处修改为您自己的类名。

  1. 在application元素内添加子元素,以申明activity、service和receiver。
        <activity
            android:name="com.goldautumn.sdk.activity.ProtocolActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="sensorLandscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        </activity>
        <activity
            android:name="com.goldautumn.sdk.activity.WebViewActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="sensorLandscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        </activity>
        <activity
            android:name="com.goldautumn.sdk.activity.WebActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="behind"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        </activity>
        <activity
            android:name="com.goldautumn.sdk.activity.SplashActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="sensorLandscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        </activity>
        <!-- qq login -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="tencentyour.qq_appid" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="behind"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <!-- qq login end -->

        <!-- wx pay begin -->
        <activity
            android:name="com.goldautumn.sdk.pay.GAGameSDKWXEntryLoginActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="behind"
            android:windowSoftInputMode="stateAlwaysHidden" >
        </activity>

        <activity
            android:name="com.goldautumn.sdk.pay.GAGameSDKWXEntryPayActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="behind"
            android:windowSoftInputMode="stateAlwaysHidden" >
        </activity>

        <activity-alias
            android:name="your.package.wxapi.WXEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="behind"
            android:windowSoftInputMode="stateAlwaysHidden"
            android:targetActivity="com.goldautumn.sdk.pay.GAGameSDKWXEntryLoginActivity" />

        <activity-alias
            android:name="your.package.wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:screenOrientation="behind"
            android:windowSoftInputMode="stateAlwaysHidden"
            android:targetActivity="com.goldautumn.sdk.pay.GAGameSDKWXEntryPayActivity" />
        <!-- wx pay end -->

3.在manifest元素内添加子元素,以申明权限。

    <!-- TypeSDK自建渠道 权限 -->
    <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" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <uses-feature android:name="android.hardware.nfc.hce" />

流程描述


了解SDK必接接口时序流程

调用接口和回调函数列表


1. com.type.sdk.android.TypeSDKHelper类调用方法列表

函数名称 功能说明
void onCreate(Activity) (必接)需添加在游戏Activity对象onCreate方法内
void onDestroy(Activity) (必接)需添加在游戏Activity对象onDestroy方法内
void onPause(Activity) (必接)需添加在游戏Activity对象onPause方法内
void onResume(Activity) (必接)需添加在游戏Activity对象onResume方法内
void onStart(Activity) (必接)需添加在游戏Activity对象onStart方法内
void onNewIntent(Activity, Intent) (必接)需添加在游戏Activity对象onNewIntent方法内
void onStop(Activity) (必接)需添加在游戏Activity对象onStop方法内
void onActivityResult(Activity _in_activity, int requestCode, int resultCode, Intent data) (必接)需添加在游戏Activity对象onActivityResult方法内
void onRestart(Activity) (必接)需添加在游戏Activity对象onRestart方法内
void CallInitSDK(Activity, String) (必接)初始化SDK方法,建议设置为应用启动后第一个执行的逻辑。游戏必需等待SDK初始化成功回调后才能继续流程。
void CallLogin(Activity, String) (必接)调出渠道SDK用户登录界面。用户需要在登录界面添加一个登录按钮,用户登录失败或取消登录界面后使用该按再次打开登录界面。但启动游戏后首次登录应该是自动弹数登录界面。
void CallSetPlayerInof(Activity, String) (必接)客户端需要将游戏服务端返回的用户相关信息通过次方法提交至SDK。不提交或提交信息不正确可能无法渠道过审核及无法进行支付。
void CallExitGame(Activity, String) (必接)用户意图退出游戏时调用次方法,启动渠道SDK退出流程。
String CallPayItem(Activity, String) (选接)如免费游戏可不接入此接口。此接口提交支付订单并调出渠道SDK支付界面。
boolean CallIsHasRequest(Activity, String) (查询)查询渠道是否支持某些功能。
CallPlatformData(Activity, String) (查询)查询渠道相关详细。
CallUserData(Activity, String) (查询)查询用户相关信息。

1.1 void onCreate(Activity)

说明:

(必接)需添加在游戏Activity对象onCreate方法内。

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例

TypeSDKHelper.onCreate(this);

1.2 void onDestroy(Activity)

说明:

(必接)需添加在游戏Activity对象onDestroy方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onDestroy(this);

1.3 void onPause(Activity)

说明:

(必接)需添加在游戏Activity对象onPause方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onPause(this);

1.4 void onResume(Activity)

说明:

(必接)需添加在游戏Activity对象onResume方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onResume(this);

1.5 void onStart(Activity)

说明:

(必接)需添加在游戏Activity对象onStart方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onStart(this);

1.6 void onStop(Activity)

说明:

(必接)需添加在游戏Activity对象onStop方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onStop(this);

1.7 void onRestart(Activity)

说明:

(必接)需添加在游戏Activity对象onRestart方法内

参数:

参数 说明
Activity activity 游戏主Actvity对象

调用范例:

TypeSDKHelper.onRestart(this);

1.8 void onNewIntent(Activity activity, Intent intent)

说明:

(必接)需添加在游戏Activity对象onNewIntent方法内

调用范例:

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
TypeSDKHelper.onNewIntent(this, intent);
}

1.9 void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data)

说明:

(必接)需添加在游戏Activity对象onStop方法内

调用范例:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TypeSDKHelper.onActivityResult(this, requestCode, resultCode, data);
}

1.10 void CallInitSDK(Activity, String)

说明:

(必接)初始化SDK方法,建议设置为应用启动后第一个执行的逻辑。游戏必需等待SDK初始化成功回调后才能继续流程。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

TypeSDKHelper.CallInitSDK(_app_activity, "调用初始化SDK方法");

1.11 void CallLogin(Activity, String)

说明:

(必接)调出渠道SDK用户登录界面。用户需要在登录界面添加一个登录按钮,用户登录失败或取消登录界面后使用该按再次打开登录界面。但启动游戏后首次登录应该是自动弹数登录界面。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

TypeSDKHelper.CallLogin(_app_activity, "调用SDK登录窗口方法");

1.12 void CallSetPlayerInfo(Activity, String)

说明:

(必接)客户端需要将游戏服务端返回的用户相关信息通过次方法提交至SDK。不提交或提交信息不正确可能无法渠道过审核及无法进行支付。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 将所需要提交的信息格式化成为json。

调用范例:

BaseData UploadUserInfo = new TypeSDKData.BaseData();
UploadUserInfo.SetData(AttName.ROLE_TYPE, "createRole"); //role_type 角色信息提交调用时机,不能为空字符串
//createRole:创建角色
//levelUp:角色升级
//enterGame:选定角色进入游戏
UploadUserInfo.SetData(AttName.USER_ID, "10001"); //user_id 服务端返回用户id
UploadUserInfo.SetData(AttName.USER_TOKEN,"01a99f19d9h301dfc432kd"); //user_token 服务端返回token
UploadUserInfo.SetData(AttName.ZONE_ID, "1"); //zone_id 区id
UploadUserInfo.SetData(AttName.ZONE_NAME, "一区"); //zone_name 区名
UploadUserInfo.SetData(AttName.SERVER_ID, "1"); //server_id 服务器id
UploadUserInfo.SetData(AttName.SERVER_NAME, "一服"); //server_name 服务器名
UploadUserInfo.SetData(AttName.ROLE_ID, "100001"); //role_id 角色id
UploadUserInfo.SetData(AttName.ROLE_NAME, "无敌二三"); //role_name 角色名
UploadUserInfo.SetData(AttName.PARTY_NAME, "第一军团"); //party_name 帮派名称
UploadUserInfo.SetData(AttName.ROLE_LEVEL, "99"); //role_level 角色等级
UploadUserInfo.SetData(AttName.VIP_LEVEL, "30"); //vip_level 用户vip等级
UploadUserInfo.SetData(AttName.ROLE_LEVELUP_TIME, "1418520525"); //role_levelup_time 角色最近升级时间 秒时间戳
UploadUserInfo.SetData(AttName.ROLE_CREATE_TIME, "1418520525"); //role_create_time 角色创建时间 秒时间戳

TypeSDKHelper.CallSetPlayerInfo(this, UploadUserInfo.DataToString());

1.13 void CallExitGame(Activity, String)

说明:

(必接)用户意图退出游戏时调用次方法,启动渠道SDK退出流程。如用户使用了手机返回按钮。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

TypeSDKHelper.CallExitGame(this, "调用退出方法");

1.14 void CallPayItem(Activity, String)

说明:

(选接)如免费游戏可不接入此接口。此接口提交支付订单并调出渠道SDK支付界面。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 将所需要提交的订单信息格式化成为json。

调用范例:

BaseData payData = new BaseData();
//用户ID,渠道返回,没有填空字符串
payData.SetData(AttName.USER_ID,"10001");
//用户token,登录验签完成后由游戏服务端返回,没有填空字符串
payData.SetData(AttName.USER_TOKEN,"01a99f19d9h301dfc432kd");
//商品支付价格(单位:分)
payData.SetData(AttName.REAL_PRICE,"100");
//商品名称,不要出现空格和特殊字符。
payData.SetData(AttName.ITEM_NAME,"60钻石");
//商品数量
payData.SetData(AttName.ITEM_COUNT,"1");
//所在服务器id(如果没有填“0”)
payData.SetData(AttName.SERVER_ID,"1");
//所在服务器名字(如果没有填“server_name”)
payData.SetData(AttName.SERVER_NAME,"一服");
//所在大区id(如果没有填“0”),注意应用宝要求:账户分区ID_角色ID。每个应用都有一个分区ID为1的默认分区,分区可以在cpay.qq.com/mpay上自助配置。如果应用选择支持角色,则角色ID接在分区ID号后用"_"连接,角色ID需要进行urlencode。payData.SetData(U3DTypeAttName.ZONE_ID,"1");
//所在大区名字(如果没有填“server_name”)
payData.SetData(AttName.ZONE_NAME,"安卓一区");
//内部订单号(必须填写,并保证多区情况下,订单号唯一)
payData.SetData(AttName.BILL_NUMBER,"NO_123456");
//商品id(需和TypeSDK Server商品列表保持一致)
payData.SetData(AttName.ITEM_SERVER_ID,"id");
//传递的额外参数(建议传入需要用来做订单标识的信息)
payData.SetData(AttName.EXTRA,"extra");
//商品描述,不要出现空格和特殊字符串
payData.SetData(AttName.ITEM_DESC,"60钻石,送60钻石");
//玩家在游戏中的角色ID
payData.SetData(AttName.ROLE_ID,"role_1234");
//玩家在游戏中的角色名字
payData.SetData(AttName.ROLE_NAME,"角色名称");
//提交订单信息
TypeSDKHelper.CallPayItem(_app_activity, payData.DataToString());

1.15 void CallLogout(Activity, String)

说明:

(选接)让用户退出渠道登录,并非所有渠道都支持此接口。不建议游戏干预用户在渠道的状态。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

TypeSDKHelper.CallLogout(_app_activity, "调用退出渠道登录");

1.16 boolean CallIsHasRequest(Activity, String)

说明:

(查询)查询渠道是否支持某些功能。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 需要查询的功能名“support_person_center”,“support_exit_window”

调用范例:

TypeSDKHelper.CallIsHasRequest(_app_activity, "support_person_center");

1.17 String CallPlatformData(Activity, String)

说明:

(查询)查询渠道相关详细。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

BaseData platformData = new BaseData();
platformData.StringToData(TypeSDKHelper.CallPlatformData(_app_activity, "查询渠道信息"));
TypeSDKLogger.i("cp_id=" + platformData.GetData(AttName.CP_ID));
TypeSDKLogger.i("channel_id=" + platformData.GetData(AttName.CHANNEL_ID));

1.18 String CallUserData(Activity, String)

说明:

(查询)查询用户相关信息。

参数:

参数 说明
Activity activity 游戏主Actvity对象
String _in_data 自定义传入参数,可为空字符传

调用范例:

BaseData userData = new BaseData();
userData.StringToData(TypeSDKHelper.CallUserData(_app_activity, "查询用户信息"));
TypeSDKLogger.i("user_id=" + userData.GetData(AttName.USER_ID));
TypeSDKLogger.i("user_token=" + userData.GetData(AttName.USER_TOKEN));

2. 回调函数

在SDK完成或者发生了某些特定操作后,会使用回调通知结果。

您可以使用com.type.sdk.android.TypeSDKEventManager类来完成回调的监听。

使用范例:

TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_INIT_FINISH, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent typesdkEvent) {
// TODO Auto-generated method stub

TypeSDKLogger.i("Event:type=" + typesdkEvent.type + ",data="
+ typesdkEvent.data + ",extra=" +typesdkEvent.extra);

return null;
}

});

TypeSDKEvent对象内容

变量 数据类型 说明
type String 回调侦听的事件类型,详见TypeSDKEvent.EventType定义
data String 如果需要返回参数,则通过data返回。
extra String 返回扩展参数,未使用
TypeSDKEvent.EventType列表:
回调侦听的事件类型 事件说明
EventType.AND_EVENT_INIT_FINISH SDK初始化完毕
EventType.AND_EVENT_LOGIN 登录成功回调
EventType.AND_EVENT_PAY_RESULT 支付结果回调
EventType.AND_EVENT_LOGOUT 登出完毕回调
EventType.AND_EVENT_RELOGIN 重新登录成功回调

2.2 EventType.AND_EVENT_INIT_FINISH

说明:

SDK初始化完毕。

使用范例:

// 添加Init成功回调监听。
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_INIT_FINISH, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

2.3 EventType.AND_EVENT_LOGIN

说明:

用户在渠道SDK登录成功回调。

使用范例:

// 添加Login回调监听
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_LOGIN, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
//从回调参数data中获取用户信息
BaseData userDataCallback = new BaseData();
userDataCallback.StringToData(arg0.data);
//部分渠道回掉内不包含user_id。则传递空字符串""。
String user_id_callback = userDataCallback.GetData(AttName.USER_ID);
String user_token_callback = userDataCallback.GetData(AttName.USER_TOKEN);
TypeSDKLogger.i("data:user_id=" + user_id_callback + ", user_token=" + user_token_callback);

//使用CallUserData查询用户信息
BaseData userData = new BaseData();
userData.StringToData(TypeSDKHelper.CallUserData(_app_activity, "查询用户信息"));
String user_id = userData.GetData(AttName.USER_ID);
String user_token = userData.GetData(AttName.USER_TOKEN);
TypeSDKLogger.i("CallUserData:user_id=" + user_id + ", user_token=" + user_token);
return null;
}

});

2.4 EventType.AND_EVENT_PAY_RESULT

说明:

支付结果回调。

data的参数包括以下内容

PAY_RESULT//支付结果(1/0/2)成功/失败(除取消)/支付取消

PAY_RESULT_REASON//支付结果的原因(失败原因)

PAY_RESULT_DATA//支付结果的返回数据

使用范例:

// 添加pay监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_PAY_RESULT, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);

//获取支付结果
BaseData payResult = new BaseData();
payResult.StringToData(arg0.data);
//判断支付是否完成
if (payResult.GetData(AttName.PAY_RESULT).equals("1")) {
//支付完成,注意不是成功。需要等待服务端回调。才能发货。
TypeSDKLogger.i("pay finished: data=" + payResult.GetData(AttName.PAY_RESULT_DATA));
}else{
//支付失败,显示原因
TypeSDKLogger.i("pay failed: reason=" + payResult.GetData(AttName.PAY_RESULT_REASON));
}

return null;
}

});

2.5 EventType.AND_EVENT_LOGOUT

说明:

用户在渠道SDK完成了登出,游戏应该结束当前游戏内容,退回用户登录界面,并调出渠道SDK登录界面。

使用范例:

// 添加Logout监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_LOGOUT, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);

TypeSDKHelper.CallLogin(_app_activity, "重新登录");

return null;
}

});

2.6 EventType.AND_EVENT_RELOGIN

说明:

用户在渠道SDK进行了重新登录或账号切换,游戏结束当前内容,重新进行用户登录验证,重新选服,重新提交用户信息。

使用范例:

// 添加reLogin监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_RELOGIN, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);

//从回调参数data中获取新的用户信息
BaseData userDataCallback = new BaseData();
userDataCallback.StringToData(arg0.data);
String user_id_callback = userDataCallback.GetData(AttName.USER_ID);
String user_token_callback = userDataCallback.GetData(AttName.USER_TOKEN);
TypeSDKLogger.i("data:user_id=" + user_id_callback + ", user_token=" + user_token_callback);

return null;
}

});

2.7 EventType.AND_EVENT_RELOGIN

说明:

用户在渠道SDK进行了重新登录或账号切换,游戏结束当前内容,重新进行用户登录验证,重新选服,重新提交用户信息。

使用范例:

// 添加reLogin监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_RELOGIN, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);

//从回调参数data中获取新的用户信息
BaseData userDataCallback = new BaseData();
userDataCallback.StringToData(arg0.data);
String user_id_callback = userDataCallback.GetData(AttName.USER_ID);
String user_token_callback = userDataCallback.GetData(AttName.USER_TOKEN);
TypeSDKLogger.i("data:user_id=" + user_id_callback + ", user_token=" + user_token_callback);

return null;
}

});

完整使用范例

package com.typesdk.game;

import android.app.Activity;
import android.os.Bundle;

import com.type.sdk.android.TypeSDKHelper;
import com.type.sdk.android.TypeSDKEvent;
import com.type.sdk.android.TypeSDKEvent.EventType;
import com.type.sdk.android.TypeSDKEventListener;
import com.type.sdk.android.TypeSDKEventManager;
import com.type.sdk.android.TypeSDKLogger;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Activity _app_activity = this;

// 添加update成功回调监听
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_UPDATE_FINISH, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub

TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);

return null;
}

});

// 添加Init成功回调监听
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_INIT_FINISH, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

// 添加Login回调监听
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_LOGIN, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

// 添加Logout监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_LOGOUT, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

// 添加reLogin监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_RELOGIN, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

// 添加pay监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_PAY_RESULT, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

// 添加分享结果监听回调
TypeSDKEventManager.Instance().AddEventListener(
EventType.AND_EVENT_SHARE_RESULT, new TypeSDKEventListener() {

@Override
public Boolean NotifySDKEvent(TypeSDKEvent arg0) {
// TODO Auto-generated method stub
TypeSDKLogger.i("Event:type=" + arg0.type + ",data="
+ arg0.data + ",extra=" + arg0.extra);
return null;
}

});

}
}