公共SDK客户端接入文档.md 15.2 KB

#SDK 接入文档

###1、开发环境搭建 以下是以 Eclipse 为例,在 Eclipse 环境下开发的 SDK 配置 1.1、将 SDK 压缩包中 Jar 目录下的所有 jar 包复制到游戏工程的 libs 目录下

Alt text
1.2、将1.1中复制的jar包引用到游戏工程
1.3、复制SDK压缩包中assets目录下的所有内容到游戏工程的assets目录,将游戏中的闪屏图片放到assets中poolsdk_splash目录 下,将assets中的poolsdk.xml中的payCallbackUrl参数配置为游戏测试的充值回调地址(注:此回调地址为测试使用,正式 环境以SDK后台配置的地址为准) 1.4、修改游戏工程的AndroidManifest.xml(可以参照复制Demo中AndroidManifest.xml文件) ①.添加声明权限:
    ②.添加对应的Activity,service,receiver等:
    <!-- start YouaiSDK -->
    <receiver
        android:name="com.gzyouai.fengniao.sdk.framework.AppInstallReceiver"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_ADDED" />
            <action android:name="android.intent.action.PACKAGE_REPLACED" />
            <action android:name="android.intent.action.PACKAGE_REMOVED" />
            <data android:scheme="package" />
        </intent-filter>
    </receiver>
    <!-- start i9133 -->
    <activity
        android:name=".wxapi.WXPayEntryActivity"
        android:exported="true"
        android:launchMode="singleTop" />
    <activity
        android:name="com.youai.sdk.YouaiSDK"
        android:label="youai_sdk"
        android:theme="@android:style/Theme.Dialog" >
    </activity>
    <service
        android:name="com.youai.sdk.YouaiService"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.youai.sdk.YouaiService" />
        </intent-filter>
    </service>
    <service
        android:name="com.youai.sdk.FloatViewService"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.youai.sdk.FloatViewService" />
        </intent-filter>
    </service>
    <receiver android:name="com.youai.sdk.Receiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" >
            </action>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </receiver>
    <activity
        android:name="com.alipay.sdk.app.H5PayActivity"
        android:configChanges="orientation|keyboardHidden|navigation"
        android:exported="false"
        android:screenOrientation="behind" >
    </activity>
    <activity
        android:name="com.alipay.sdk.auth.AuthActivity"
        android:configChanges="orientation|keyboardHidden|navigation"
        android:exported="false"
        android:screenOrientation="behind" >
    </activity>
    <!-- end i9133 -->

###2、功能接口 (注意:以下所有接口都必须在 SDK 初始化完成之后才能调用)
2.1、继承 PoolSDKApplication(必接)
说明:
游戏工程如果没有Application,请在 AndroidManifest.xml 中添加SDK的Application,如下所示:

游戏工程如果有 Application,请继承 SDK 中 PoolSDKApplication: public class XXXXApplication extends PoolSDKApplication { @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); } } 2.2、初始化接口(必接) 接口说明: 首先在程序开始的地方调用 SDK 的初始化 init 方法,并设 置 Activity 对像和初始化完成回调监听(在初始化失败情况下不 再调用其它 SDK 接口方法) 注意:要确保在 SDK 初始化成功后才可调用其它接口 2.2.1、方法定义 public static void init(final Activity activity,final PoolSDKCallBackListener callBackListener) 2.2.2、参数说明 2.2.3、代码示例: PoolSdkHelper.init(this, new PoolSDKCallBackListener() { @Override public void poolSdkCallBack(int code, String msg) { // TODO Auto-generated method stub switch (code) { case PoolSDKCode.POOLSDK_INIT_SUCCESS://初始化成功 PoolSdkLog.logInfo("游戏中POOLSDK_INIT_SUCCESS"); login(); break; case PoolSDKCode.POOLSDK_INIT_FAIL: break; default: break; } } });

2.3、登录接口(必接)
    接口说明:游戏登录时调用
    2.3.1、方法定义
    public static void login(final String paramCustom,final PoolLoginListener poolLoginListener)
    2.3.2、参数说明
    2.3.3、代码示例
        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 onLoginFailed(String errorMsg) {
                System.out.println("登录失败  = " + errorMsg);
            }
        });

2.4、提交角色数据接口(必接)
    接口说明:游戏提交角色数据接口,该接口需要在以下 3 中情况下
    调用:进入游戏主场景、创建角色、角色升级
    2.4.1、方法定义
    public static void submitRoleData(final PoolRoleInfo poolRoleInfo,
        final PoolRoleListener poolRoleListener)
    2.4.2、参数说明
    2.4.3、代码示例
    /********************************************
     * 以下所有字段都是必填项
     */
    PoolRoleInfo poolRoleInfo = new PoolRoleInfo();
    poolRoleInfo.setRoleID("123456");
    poolRoleInfo.setRoleLevel("10");
    poolRoleInfo.setRoleSex("0");
    poolRoleInfo.setRoleName("我是角色名");
    poolRoleInfo.setServerID("1");
    poolRoleInfo.setServerName("我是服务器名");
    poolRoleInfo.setCustom("角色创建时间");
    poolRoleInfo.setCallType(PoolRoleInfo.Type_EnterGame);
    // poolRoleInfo.setCallType(PoolRoleInfo.Type_CreateRole);
    // poolRoleInfo.setCallType(PoolRoleInfo.Type_RoleUpgrade);

    PoolSdkHelper.submitRoleData(poolRoleInfo, new PoolRoleListener() {
        @Override
        public void onRoleDataSuccess(String paramCustom) {
            System.out.println("提交角色数据成功  = " + paramCustom);
        }
    });

2.5、支付接口(必接)
    2.5.1、方法定义
        public static void pay(final PoolPayInfo poolPayInfo,final PoolPayListener poolPayListener)
   2.5.2、参数说明
   2.5.3、代码示例
        /********************************************
        * 以下所有字段都是必填项
        */
        // 设置充值金额,单位“元”
        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("我是自定义参数");
        // TODO Auto-generated method stub
        PoolSdkHelper.pay(poolPayInfo, new PoolPayListener() {
            @Override
            public void onPaySuccess(String paramCustom) {
                System.out.println("支付成功  = " + paramCustom);
            }
            @Override
            public void onPayFailed(String paramCustom, String errorMsg) {
                System.out.println("支付失败  = " + paramCustom + "; errorMsg = "
                        + errorMsg);
            }
        });

2.6、检测 SDK 是否含有用户中心接口(必接)
    说明:如果接口返回为 true,表示需要游戏方在合适的界面中添加一个用户中心的按钮,点击按钮时调用文档中 2.7 的用户中心接口;如果返回 false,则不做处理
    2.6.1、方法定义
        public static boolean hasChannelCenter() 
2.7、用户中心接口(必接)
    说明:打开渠道用户中心界面
    2.7.1、方法定义
    public static void openChannelCenter()
    2.7.2、代码示例
    /**
 * 用户中心
 * 
 * 游戏方先调用YASDKHelper.hasChannelCenter()获取是否有用户中心,
 * 如果有的话,游戏中需要添加按钮,点击按钮调用YASDKHelper.openChannelCenter();
 * 如果没有,则不需要显示按钮,也不用调用下面的接口
 */
private void channelCenter() {
    PoolSdkHelper.openChannelCenter();
}

2.8、注销登录监听接口
    说明:可在游戏启动时设置注销监听事件,渠道注销成功后 SDK 会回调 onLogoutSuccess 方法通知游戏,游戏可在此处理切换账号逻辑
    2.8.1、方法定义
    public static void setLogoutCallback(final PoolLogoutListener poolLogoutListener)
    2.8.2、参数说明
    2.8.3、代码示例
        PoolSdkHelper.setLogoutCallback(new PoolLogoutListener() {
    @Override
    public void onLogoutSuccess() {
        // TODO: 此处处理SDK登出的逻辑
        login();
        PoolSdkLog.logInfo("游戏中logoutSuccess");
    }
    }); 
2.9、退出游戏接口(必接)
    说明:在游戏需要退出时调用,调用此接口时需先用 PoolSdkHelper.hasExitDialog() 判断 sdk 是否有退出界面,为 true
    表示有退出界面需调用 showExitDialog()显示退出界面,为 false 时表示没有退出界面,游戏需自己处理退出逻辑且在确认 
    游戏退出前调用 PoolSdkHelper.exitGame 通知 SDK 游戏要退出 (具体可参照 Demo 示例)
    2.9.1、方法定义
        public static void showExitDialog(final PoolExitDialogListener exitDialogListener)
    2.9.2、参数说明
    2.9.3、代码示例
        @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) {
                    // TODO Auto-generated method stub
                    switch (code) {
                    case PoolSDKCode.EXIT_SUCCESS:// 退出成功游戏处理自己退出逻辑
                        finish();
                        // System.exit(0);
                        break;
                    case PoolSDKCode.EXIT_CANCEL:// 取消退出
                        break;
                    default:
                        break;
                    }
                }
            });
        } else {
            // TODO: 调用游戏的退出界面
            showGameExitTips();
        }
        return false;
    }
    return super.dispatchKeyEvent(pKeyEvent);
    }
2.10、Android 生命周期接口(必接)
    说明:在游戏 Activity 的 onStart、onPause、onResume、 onStop、onDestroy、onRestart、onNewIntent、 onActivityResult、onConfigurationChanged 中分别调用对应的接口
    2.10.1、代码示例
        @Override
    public void onStart() {
    super.onStart();
    PoolSdkHelper.onStart();
    }

    @Override
    public void onStop() {
    super.onStop();
    PoolSdkHelper.onStop();
    }

    @Override
    public void onDestroy() {
    super.onDestroy();
    PoolSdkHelper.onDestroy();
    }

    @Override
    public void onResume() {
    super.onResume();
    PoolSdkHelper.onResume();
    }

    @Override
    public void onPause() {
    super.onPause();
    PoolSdkHelper.onPause();
    }

    @Override
    public void onRestart() {
    super.onRestart();
    PoolSdkHelper.onRestart();
    }

    @Override
    public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    PoolSdkHelper.onNewIntent(intent);
    }

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

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    // TODO Auto-generated method stub
    super.onConfigurationChanged(newConfig);
    PoolSdkHelper.onConfigurationChanged(newConfig);
    }
2.11、扩展接口(可选)
    说明:该接口为扩展的万能接口,留作备用,目前游戏方可以不接入
    2.11.1、方法定义
    public static void expansionInterface(final String paramCustom,final PoolExpansionListener poolExpansionListener)
    2.11.2、参数说明

2.12、获取渠道包标识(可选)
    接口名称:PoolSdkHelper.getGameChannelId()
接口说明:获取在企业平台配置的渠道标识,返回类型为 String
接口名称:PoolSdkHelper. getChannelParameter1 ()
接口说明:获取在企业平台配置的渠道参数 1,返回类型为 String
接口名称:PoolSdkHelper. getChannelParameter2 ()
接口说明:获取在企业平台配置的渠道参数 2,返回类型为 String
2.13、获取渠道自定义参数(可选)
    接口名称:PoolSdkHelper.getCustomValue()
接口说明:获取在企业平台配置的渠道自定义参数,返回类型为 String
2.14、打开论坛接口(UC 平台专用)
    接口名称:PoolSkHelper.openForum() 
    接口说明:打开渠道的论坛界面

#3、自测用例 3.1、进入游戏会弹出下面的登录界面,表示登录接口接入正常; ![text1][../image/image2.png] 3.2、点击充值会弹出下面的界面,表示充值接口接入正常; ![text2][../image/image3.png] 3.3、点击渠道用户中心,弹出下面的界面表示该接口接入正常; ![text3][../image/image4.png] #4、母包 4.1、接入公共 SDK 编译生成的 apk 即为打包工具使用的母包