帮助文档

1      SDK使用准备

SDK开发包包括以下几个文件与目录:

SDK开发资源包SDK目录中包含SDK的资源文件,请复制SDK目录中的所有目录与文件,并拷贝至各自的游戏工程中,如下:

1.1 拷贝资源

1)      \sdk\java\assets目录下的文件拷贝到游戏对应目录下。

2)      \sdk\java\lib目录下的文件拷贝到游戏对应目录下。

1.2 添加SDK提供的lib引用

\sdk\java \libs目录下的文件拷贝到游戏对应目录下.并做如下图关联。

2-1

1.3 添加SDK提供的Activity引用

在游戏AndroidManifest.xml文件的application中添加由易接提供如下代码:

(可参考“网游\sdk\ AndroidManifest.xml "

<service

     android:name="com.snowfish.a.a.s.ABGSvc"

     android:enabled="true"

android:process="com.snowfish.a.a.bg">

<intent-filter>

     <actionandroid:name="com.snowfish.a.a.s.ABGSvc"/>

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

</intent-filter>

</service>

<meta-data

     android:name="com.snowfish.customer"

     android:value="SNOWFISH">

</meta-data>

<meta-data

     android:name="com.snowfish.channel"

     android:value="SNOWFISH">

</meta-data>

<meta-data

     android:name="com.snowfish.sdk.version"

     android:value="2">

</meta-data>

<meta-data

     android:name="com.snowfish.appid"

     android:value="KEY">

</meta-data>

<meta-data

     android:name="com.snowfish.channelid"

     android:value="{4ff036a1-3254eafe}">//此参数不做修改,保持默认就行,打包会自动替换

</meta-data>

         标红处的KEY值需要替换成在易接用户中心申请获取的APPID

格式如下:{12345678-12345678}

1.4 修改 Application

1)若无自定义Applicatiion,则修改AndroidManifest.xmlApplication如下:

<applicationandroid:name="com.snowfish.cn.ganga.helper.SFOnlineApplication"/>

 

2)若开发者自定义的Application。则自定义Application需要继承                       

com.snowfish.cn.ganga.helper.SFOnlineApplication

AndroidManifest.xml修改如下:

<applicationandroid:name="自定义Application"/>

1.5 添加SDK需要的use-permision

在游戏的AndroidManifest.xml中添加use-permision如下:

      (可参考“网游\sdk\ AndroidManifest.xml "

 

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permissionandroid:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>

<uses-permissionandroid:name="android.permission.GET_TASKS"/>

<uses-permissionandroid:name="android.permission.WAKE_LOCK"/>

<uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/>

 

1.6 增加闪屏Activity

1)      继承com.snowfish.cn.ganga.helper.SFOnlineSplashActivity并将该Activity设置为程序启动时的Activity

publicclassMySplashActivityextendsSFOnlineSplashActivity {

    publicintgetBackgroundColor() {

    // 返回闪屏的背景颜色

        returnColor.WHITE;

    }

    @Override

    publicvoidonSplashStop() {

    // 闪屏结束进入游戏

            Intent intent = newIntent(this, MainActivity.class);

           startActivity(intent);

           this.finish();

        }

}

2)  AndroidManifest.xml中关于该Activity的声明,要声明为启动Activity

<activity

       android:name="com.snowfish.cn.ganga.helper.MySplashActivity"

       android:configChanges="orientation|keyboardHidden|screenSize"

       android: screenOrientation ="portrait">

    <intent-filter>

       <actionandroid:name="android.intent.action.MAIN"/>

       <categoryandroid:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

</activity>

注意:闪屏的横竖屏需要cp自己在AndroidManifest.xml中的闪屏activity中,设置一下screenOrientation属性。

1.7 SDK避免模糊,防止计费时发生异常。

两种方式建议使用第二种方式:

1.  proguard-project.txt文件中增加如下代码:

-keep class com.snowfish.** { *; }

-dontwarn  com.unity3d.**
-keep class com.unity3d.**{*
}

 

2.  android\sdk\tools\proguard\proguard-android.txt文件中增加:

-keep class com.snowfish.** { *; }

-dontwarn  com.unity3d.**
-keep class com.unity3d.**{*
}

 

2     接口说明

2.1 SDK初始化接口(必选接口)

如下方法在游戏主Activity中调用。

1.  初始化函数,以下2个接口任选一个接入

1SFOnlineHelper.onCreate(Activity activity)

         该方法用于需要在游戏主Activity中的onCreate中调用,

注意:只需调用一次

调用用例:    SFOnlineHelper.onCreate(this);

2SFOnlineHelper.onCreate(Activity activity,finalSFOnlineInitListener initListener)

该方法用于需要在游戏主Activity中的onCreate中调用,带有初始化完成的回调函数

    调用用例:   

SFOnlineHelper.onCreate(this,newSFOnlineInitListener() {

            @Override

        publicvoidonResponse(String tag, String value) {

            if(tag.equalsIgnoreCase("success")){

 //初始化成功的回调

            }elseif(tag.equalsIgnoreCase("fail")){

 //初始化失败的回调,value:如果SDK返回了失败的原因,会给value赋值

            }

            }});

2.  SFOnlineHelper.onStop(Activity activity)

    该方法在游戏Activity中的onStop中调用

调用用例:    SFOnlineHelper.onStop(this);

3.  SFOnlineHelper.onDestroy(Activity activity)

    该方法在游戏Activity中的onDestroy中调用

调用用例:    SFOnlineHelper.onDestroy(this);

4.  SFOnlineHelper.onResume(Activity activity)

    该方法在游戏Activity中的onResume中调用

调用用例:    SFOnlineHelper.onResume(this);

5.  SFOnlineHelper.onPause (Activity activity)

    该方法在游戏Activity中的onPause中调用

调用用例:    SFOnlineHelper.onPause (this);

6.  SFOnlineHelper.onRestart (Activity activity)

    该方法在游戏Activity中的onRestart中调用

调用用例:    SFOnlineHelper.onRestart (this);

2.2 用户登陆登出接口(必选接口)

1.   SFOnlineHelper.login(Activity context, Object customParams)

    该方法用于登录,调用用例:

         SFOnlineHelper.login(activity, "Login");

 

2.   SFOnlineHelper.logout(Activity context, Object customParams)

    该方法用于登出,调用用例:

     SFOnlineHelper.logout(activity, "LoginOut");

 

3.   SFOnlineHelper.setLoginListener(

Activity context,SFOnlineLoginListener listener)

         该方法为登录的监听函数需要在调用login函数之前调用,调用用例:  

    SFOnlineHelper.setLoginListener(activity, newSFOnlineLoginListener() {

            @Override

            publicvoidonLoginSuccess(SFOnlineUseruser, Object customParams) {

                //登陆成功回调

            }

           

            @Override

            publicvoidonLoginFailed(String reason, Object customParams) {

                //登陆失败回调

            }

 

            @Override

            publicvoidonLogout(Object customParams) {

 //登出回调

            }

           

           

        });

2.3 登陆验证接口(必选接口)

由于有些SDK要求SDK登录成功以后必须做登录验证,为接入规范,必须接入登录验证,只有登录验证成功才算真正的登录成功。

渠道sdk登录成功以后,客户端做登录验证请求的时候只需要把以下四个参数拼接进去就行了。

参数

获取方式

类型

注释

appId

user.getProductCode()

String

易接平台创建的游戏IDappId

请使用URLEncoder编码

channelId

user.getChannelId()

String

易接平台标示的渠道SDK ID

请使用URLEncoder编码

userId

user.getChannelUserId()

String

渠道SDK标示的用户ID

请使用URLEncoder编码

 

token

user.getToken()

String

渠道SDK登录完成后的Session ID

请使用URLEncoder编码

特别提醒:部分渠道这些参数会包含特殊值如‘+’,空格之类的,故不能直接使用URL参数传输到游戏服务器请求校验,请对四个参数分别使用URLEncoder进行编码

调用用例:参考demo中的

publicstatic voidLoginCheck (final SFOnlineUser user)

2.4 设置角色基本数据(必选接口)

1.  SFOnlineHelper.setRoleData(Context context, StringroleId StringroleName, StringroleLevel, StringzoneId, StringzoneName)

部分渠道如UC渠道,要对游戏人物数据进行统计,而且为接入规范,

所以为必选接口

             调用时间:在游戏登录验证成功后,进入游戏界面时上报角色信息 调用

参数描述:

参数名称

类型

注释

context

Context

上下文Activity

roleId

String

角色唯一标识

roleName

String

角色名

roleLevel

String

角色的等级

zoneId

String

角色所在区域唯一标识

 

zoneName

String

角色所在区域名称

2.5 退出接口(必选接口)

SFOnlineHelper.exit(

Activity context, SFOnlineExitListener listener)     

当游戏退出前必须调用该方法,进行清理工作。如果游戏直接退出,而不调用该方法,可能会出现未知错误,导致程序崩溃,一般游戏在按返回键退出时调用此接口。

调用用例:

SFOnlineHelper.exit(context, newSFOnlineExitListener() {

            /*  onSDKExit

             *  @description 当SDK有退出方法及界面,回调该函数

             *  @paramboolSDK是否退出标志位

             */

            @Override

            publicvoidonSDKExit(booleanbool) {

                if (bool){

                    //SDK已经退出,此处可以调用游戏的退出函数

                    }

            }

            /*  onNoExiterProvide

             *  @description SDK没有退出方法及界面,回调该函数,可在此使用游戏退出界面

*/

            @Override

            publicvoidonNoExiterProvide() {

            }

        });

2.6 定额计费接口(必选接口)

1.  SFOnlineHelper.pay (Contextcontext, intunitPrice, StringunitName,int count, StringcallBackInfo, StringcallBackUrl,

SFOnlinePayResultListenerpayResultListener)

该接口用于定额支付的接口函数。

参数描述:

参数名称

类型

注释

context

Context

上下文Activity

unitPrice

int

游戏道具价格,单位为人民币分

itemName

String

虚拟货币名称(商品名称)

注意:虚拟币名称在游戏内一定要确保唯一性!!!!不能出现多个虚拟币名称相同。

count

int

用户选择购买道具界面的默认道具数量。(总价为 count*unitPrice

callBackInfo

String

由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等)

callBackUrl

String

将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

注意:这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。

payResultListener

SFOnlinePayResultListener

支付回调接口

 

调用用例:

   SFOnlineHelper.pay(MainActivity.this, 100, "金币", 1, "购买金币",

           "http://192.168.0.224:8980/omsdk-cp/user/paylog/sync",

           newSFOnlinePayResultListener() {

                         @Override

                         publicvoidonSuccess(String remain) {

 

                         }

                         @Override

                         publicvoidonFailed(String remain) {

                           

                         }

                     });

 

说明:网游的支付结果请以服务器端的同步结果为准,因为某些SDK客户端没有支付结果的回调。

2.7 非定额计费接口(可选接口)

1.  SFOnlineHelper.charge(Context context, String itemName, int unitPrice,int count,String callBackInfo, String callBackUrl,SFOnlinePayResultListenerpay ResultListener)

该接口用于用户触发计费进行付费行为的入口函数。合作伙伴可以在需要计费的地方调用此接口进行计费。该接口用于非定额计费。

参数描述:

 

参数名称

类型

注释

context

Context

上下文Activity

itemName

String

虚拟货币名称(商品名称

注意:虚拟币名称在游戏内一定要确保唯一性!!!!不能出现多个虚拟币名称相同。

unitPrice

int

游戏道具价格,单位为人民币分

count

int

用户选择购买道具界面的默认道具数量.(总价为count*unitPrice)

callBackInfo

String

由游戏开发者定义传入的字符串,会与支付结果一同发送给游戏服务器,游戏服务器可通过该字段判断交易的详细内容(金额角色等)

callBackUrl

String

将支付结果通知给游戏服务器时的通知地址url,交易结束后,系统会向该url发送http请求,通知交易的结果金额callbackInfo等信息

注意:这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。

payResultListener

SFOnlinePayResultListener

支付回调接口

 

调用用例:

SFOnlineHelper.charge(MainActivity.this,"金币", 100, 1, "购买金币",

           "http://192.168.0.224:8980/omsdk-cp/user/paylog/sync",

       newSFOnlinePayResultListener() {

                         @Override

                         publicvoidonSuccess(String remain) {

                         }

                         @Override

                         publicvoidonFailed(String remain) {   

                         }

                     });

2.8 扩展接口1(必选接口)

SFOnlineHelper.setData(Context context,String key,Object value)

 

扩展接口,部分渠道要求在创建新角色,或者升级角色时、选择服务器时要上报角色信息,为接入规范,所以为必选接口。

接口:SFOnlineHelper.setData(Context context,String key, Object value);

参数描述:

@value请按要求传入json格式的字符串,JSONObject键值定义如下

JSONObjectroleInfo = new JSONObject();

roleInfo.put("roleId", "1");//当前登录的玩家角色ID,必须为数字

roleInfo.put("roleName", "猎人");//当前登录的玩家角色名,不能为空,不能为null

roleInfo.put("roleLevel", "100");//当前登录的玩家角色等级,必须为数字,且不能为0,若无,传入1

roleInfo.put("zoneId", "1");//当前登录的游戏区服ID,必须为数字,且不能为0,若无,传入1

roleInfo.put("zoneName", "阿狸一区");//当前登录的游戏区服名称,不能为空,不能为null

roleInfo.put("balance", "0");  //用户游戏币余额,必须为数字,若无,传入0

roleInfo.put("vip", "1");//当前用户VIP等级,必须为数字,若无,传入1

roleInfo.put("partyName", "无帮派");//当前角色所属帮派,不能为空,不能为null,若无,传入“无帮派”

roleInfo.put("roleCTime", "21322222");       //单位为秒,创建角色的时间

roleInfo.put("roleLevelMTime", "54456556");    //单位为秒,角色等级变化时间

@key键值定义如下:    

key

接口描述

调用示例

createrole

创建新角色时调用

SFOnlineHelper.setData(context,"createrole",roleInfo.toString());

levelup

玩家升级角色时调用

SFOnlineHelper.setData(context,"levelup",roleInfo.toString());

enterServer

选择服务器进入时调用

SFOnlineHelper.setData(context,"enterServer",roleInfo.toString());

注意:除了上面描述的3个键值必接以外,还有一些渠道必须要特殊处理,具体可参考易接网游母包接入注意事项(必看).docx”这个文档。如果不按照“易接网游母包接入注意事项(必看).docx”这个文档去处理,会导致渠道审核不通过,影响游戏上线时间!!!!

2.9 扩展接口2(可选接口)

SFOnlineHelper.extend(Activity activity,String data,Map<String, Object> callback)

扩展接口,有些SDK要求必须接入统计接口或者其它特殊的接口,并且有返回值或者回调的函数,用户可以使用此接口调用,具体可以参考易接工具上的SDK的参数填写帮助。

参数说明如下:  

/**

      * @param activity                 上下文Activity

      * @param data     需要传入的数据

* @param ,Map<String, Object>回调函数的HashMap,如果没有可以传null

String:回调函数的索引:

callback1callback2callback3........以此类推

      *                              ObjectSFExpandListener类型:回调函数的定义

*/

调用用例:

HashMap callback = new HashMap<String, SFExpandListener>();

       SFExpandListener lis1 = new SFExpandListener() {        

           @Override

           public void onResponse(String tag, String value) {

             

           }

       };

       callback.put("callback1", lis1);

       //  callback.put("callback2", lis2);

        // callback.put("callback3", lis3);

 

    String r = SFOnlineHelper.extend((Activity) mContext, "isOneKey", callback);