帮助文档

1     开发前准备

1.       sdk\flashAir\assets目录下的文件Copyassets中;

2.       sdk\flashAir\libs\ganga.android.ane拷贝到游戏项目的 libs 目录下;

3.       在项目属性的 Flex Build Path - Native Extension 下,添加对ganga.android.ane的引用;

4.       在项目属性的 Flex Build Packaging - Google Android - Native Extensions 下,在 Package 列为ganga.android.ane打上勾;

5.       在游戏项目的 xxx-app.xml 里添加SDK提供的Activity引用,

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

1.   <service  

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

3.           android:enabled="true"  

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

5.       <intent-filter>  

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

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

8.       </intent-filter>  

9.   </service>  

10.  <meta-data  

11.          android:name="com.snowfish.customer"  

12.          android:value="SNOWFISH">  

13.  </meta-data>  

14.  <meta-data  

15.          android:name="com.snowfish.channel"  

16.          android:value="SNOWFISH">  

17.  </meta-data>  

18.  <meta-data  

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

20.          android:value="2">  

21.  </meta-data>  

22.  <meta-data  

23.          android:name="com.snowfish.appid"  

24.          android:value="KEY">  

25.  </meta-data>  

26.  <meta-data  

27.          android:name="com.snowfish.channelid"  

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

29.  </meta-data>  

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

如:{12345678-12345678}

6.       修改 Application

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

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

 

2)若开发者自定义的Application。则自定义Application需要继承com.snowfish.cn.ganga.helper.SFOnlineApplicationAndroidManifest.xml修改如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

8.       在游戏项目的 xxx-app.xml 里添加

9.    <extensions>  

10.   <extensionID>  

11.           cn.ganga.ane.android  

12.   </extensionID>  

13.   </extensions> 

 

2     接口说明

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

以下2个接口任选一个接入,注意:只需调用一次

1publicfunctioninitSDK():void

该方法用于SDK的初始化,调用用例:

1.   SFOnlineHelper.getInstance().initSDK();  

2.   SFOnlineHelper.getInstance().onResume();  

3.   NativeApplication.nativeApplication.addEventListener(Event.EXITING, onDestroy);  

4.   NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);  

5.   NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,onDeActivate );  

6.                       SFOnlineHelper.getInstance().addEventListener(Constants.EVENT_TYPE_GANGA_CALLBACK,onCallbackEvent);  

7.       if(stage)//AIR内置对象  

8.       {// 添加切换到后台的监听  

9.           stage.addEventListener(ThrottleEvent.THROTTLE,pauseHandler);            //添加对back键的处理  

10.          stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);  

11.      }  

onCallbackEvent函数是对登陆、支付的回调的处理,具体用法参考demo

2publicfunctioninitSDKExtend():void

该方法用于SDK的初始化,带有初始化完成的回调函数

调用用例:

1.   SFOnlineHelper.getInstance().initSDKExtend();  

2.   SFOnlineHelper.getInstance().onResume();  

3.   NativeApplication.nativeApplication.addEventListener(Event.EXITING, onDestroy);  

4.   NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);  

5.   NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,onDeActivate );  

6.                       SFOnlineHelper.getInstance().addEventListener(Constants.EVENT_TYPE_GANGA_CALLBACK,onCallbackEvent);  

7.       if(stage)//AIR内置对象  

8.       {// 添加切换到后台的监听  

9.           stage.addEventListener(ThrottleEvent.THROTTLE,pauseHandler);            //添加对back键的处理  

10.          stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);  

11.      }  

 

onCallbackEvent函数是对初始化、登陆、支付的回调的处理,具体用法参考demo

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

publicfunction login(type:String):void

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

SFOnlineHelper.getInstance().login("Login");

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

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

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

参数

获取方式

类型

注释

appId

data.productCode

String

易接平台创建的游戏IDappId

请使用URLEncoder编码

channelId

data.channelId

String

易接平台标示的渠道SDK ID

请使用URLEncoder编码

userId

data.channelUserId

String

渠道SDK标示的用户ID

请使用URLEncoder编码

 

token

data.token

String

渠道SDK登录完成后的Session ID请使用URLEncoder编码

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

参考demo中的

protected function btnLoginCheck_clickHandler(event:MouseEvent):void

2.4 用户登出接口(可选接口)

public function logout():void

该方法为登出函数,调用用例:

SFOnlineHelper.getInstance().logout();

2.5 退出接口(必选接口)

public function exitSDK():void

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

调用用例

SFOnlineHelper.getInstance().exitSDK();

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

public function setRoleData(roleId: String,

           roleName:String,

           roleLevel: String,

           zoneId:String,

           zoneName: String):void

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

调用时间:在游戏登录验证成功后

参数描述:

参数名称

类型

注释

roleId

String

角色唯一标识

roleName

String

角色名

roleLevel

String

角色等级

zoneId

String

区域唯一标识

 

zoneName

String

区域名称

调用用例:

SFOnlineHelper.getInstance().setRoleData("1", "猎人", "100", "1", "阿狸一区");

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

public function pay(unitPrice: int,

           unitName: String,

           count: int,

           callBackInfo: String,

           callBackUrl: String):void

该接口用于定额支付的接口函数。合作伙伴在需要使用定额支付的时候使用该接口。

参数描述:

参数名称

类型

注释

itemName

String

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

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

unitPrice

int

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

count

int

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

callBackInfo

String

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

callBackUrl

String

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

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

 

调用用例:

SFOnlineHelper.getInstance().pay (100, "金币", 1, "购买金币",

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

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

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

public function charge(itemName:String,

                      unitPrice: int,

           count:int,

           callBackInfo:String,callBackUrl:String):void

该接口用于用户触发计费进行付费行为的入口函数,该接口用于非定额计费。

参数描述:

参数名称

类型

注释

itemName

String

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

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

unitPrice

int

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

count

int

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

callBackInfo

String

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

callBackUrl

String

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

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

 

调用用例:

SFOnlineHelper.getInstance().charge("金币", 100, 2, "购买金币", "http://192.168.0.224:8980/omsdk-cp/user/paylog/sync";

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

public function setData(key:String, value:Object):void

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

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

       roleId:当前登录的玩家角色ID,必须为数字

       roleName:当前登录的玩家角色名,不能为空,不能为null

       roleLevel:当前登录的玩家角色等级,必须为数字,且不能为0,若无,传入1

       zoneId:当前登录的游戏区服ID,必须为数字,且不能为0,若无,传入1

       zoneName:当前登录的游戏区服名称,不能为空,不能为null

       balance:用户游戏币余额,必须为数字,若无,传入0

       vip:当前用户VIP等级,必须为数字,若无,传入1

       partyName:当前角色所属帮派,不能为空,不能为null,若无,传入无帮派

roleCTime:单位为秒,创建角色的时间

roleLevelMTime:单位为秒,角色等级变化时间

 

@key键值定义和调用实例如下: 

var value : Object = JSON.stringify({"roleId":"1","roleName":"猎人","roleLevel":"100","zoneId":"1","zoneName":"阿狸一区","balance":"0","vip":"1","partyName":"无帮派","roleCTime":"21322222","roleLevelMTime":"54456556"},null,null);

 

key

接口描述

调用示例

createrole

创建新角色时调用

SFOnlineHelper.getInstance().

setData("createrole" , value);

levelup

玩家升级角色时调用

SFOnlineHelper.getInstance().

setData("levelup" ,  value);

enterServer

选择服务器进入时调用

SFOnlineHelper.getInstance().

setData("enterServer" ,  value);

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

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

public function extend(data:String,callbackCount:String):void

 

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

参数说明:/**扩展接口

             * data:需要传入的数据

             * callbackCount:扩展接口回调函数的数量,没有可以传“0

             */

调用用例:

SFOnlineHelper.getInstance().extend ("isOneKey","3")

2.11 获取Meta信息接口(可选接口)

public function getMetaData (key: String):void

该接口用于获取androidMeta信息接口,结果在onCallbackEvent中获取

调用用例:

SFOnlineHelper.getInstance().getMetaData("com.snowfish.appid");

2.12 回调消息处理(必选接口

参考Demo中的

public function onCallbackEvent(event:CallbackEvent):void

返回类型:varcallbackType:String = event.callbackType;

      返回数据:vardata:Object = event.data;

2.12.1初始化回调

名称

注释

Constants.CALLBACKTYPE_InitResponse

初始化结果返回

2.12.2登录回调

名称

注释

Constants.CALLBACKTYPE_LoginSuccess

登录成功(登录成功后做登录校验,只有登录校验成功才算真正的登录成功

Constants.CALLBACKTYPE_LoginFailed

登录失败

Constants.CALLBACKTYPE_Logout

登出

 

2.12.3登录验证结果返回

名称

注释

Constants.CALLBACKTYPE_ExecuteHttpGet

登录验证结果返回

调用以下函数后会返回登录验证的结果

SFOnlineHelper.getInstance().executeHttpGet(url);

2.12.4支付回调

名称

注释

Constants.CALLBACKTYPE_PaySuccess

支付成功

Constants.CALLBACKTYPE_PayFailed

支付失败

Constants.CALLBACKTYPE_PayonOderNo

返回支付订单号

2.12.5exit回调

名称

注释

Constants.CALLBACKTYE_Exit

Exit

 

退出类型的说明:

if(exitType == "onSDKExitSuccess"){

//SDK有退出方法及界面,退出成功, 此处可以调用游戏的退出函数         

                     }else if(exitType == "onSDKExitFail"){

                         //SDK有退出方法及界面,退出失败调用该函数

                        

                     }else if(exitType == "onNoExiterProvide"){

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

                        }

                    }

            }

           

2.12.6扩展接口2的返回值

名称

注释

Constants.CALLBACKTYPE_Expand_Return

extend返回结果

.2.12.7扩展接口2的回调处理

名称

注释

Constants.CALLBACKTYPE_Expand_Calback

extend的回调处理

2.12.8获取Meta信息回调

名称

注释

Constants.CALLBACKTYPE_GetMetaData

GetMetaData返回结果