帮助文档

1     易接COCOS lua使用准备

易接官网http://www.1sdk.cn/download.html下载SDK

解压后的目录及结构lua部分的说明如下:

                                             (图2.7-1

1.1 拷贝资源

1、将SDK\lua目录下frameworks\runtime-src\proj.android中的libsyijie文件夹拷贝到对应目录中。

2、将SDK\lua目录下src\YijieInterface.lua文件拷贝到对应目录中。

1.2 添加易接提供的Activity引用

在游戏frameworks\runtime-src\proj.android\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值是由易接用户中心申请获取格式如:{12345678-12345678}

1.3 修改 Application

在游戏frameworks\runtime-src\proj.android\AndroidManifest.xml文件中修改Application

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

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

 

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

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

1.4 添加易接需要的use-permision

在游戏frameworks\runtime-src\proj.android\AndroidManifest.xml中添加use-permision如下:

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

1.  <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STAT<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"/>  

1.5 增加易接闪屏Activity(必选接口)

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

1.  publicclassSplashActivityextendsSFOnlineSplashActivity {  

2.      publicintgetBackgroundColor() {  

3.      // 返回闪屏的背景颜色  

4.          returnColor.WHITE;  

5.          }  

6.      @Override  

7.      publicvoidonSplashStop() {  

8.      // 闪屏结束进入游戏  

9.      Intent intent = newIntent(this, AppActivity.class);  

10.         startActivity(intent);  

11.         this.finish();  

12.     }  

13. }  

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

1.  <activity  

2.  android:name="org.cocos2dx.lua.SplashActivity"  

3.  android:configChanges="orientation|keyboardHidden|screenSize">  

4.  <intent-filter>  

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

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

7.  </intent-filter>  

8.  </activity>  

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

1.6 拷贝易接SDK资源

修改frameworks\runtime-src\proj.android\build-cfg.json文件增加"copy_resources":数组中增加

1.  {  

2.  "from": "yijie/asssets/Sonnenblume",  

3.  "to": "Sonnenblume"  

4.  }  

修改后如下图。

2    接口调用说明

以下接口可以参考易接lua demo

2.1 易接Android Java部分初始化(必选接口)

找到游戏工程的主Activity,以Cocos2d-x引擎游戏为例,主Activity即是继承了cocos2dxActivityActivity 并在主ActivityonCreate()方法中新增如下代码来初始化易接SDK:修改proj.android/src/org/cocos2dx/lua/AppActivity.java文件

1.  @Override  

2.      protectedvoidonCreate(Bundle savedInstanceState) {  

3.          super.onCreate(savedInstanceState);  

4.          /*初始化Lua组件*/  

5.          SFLuaAdaper.init(this, newSFActionCallback() {  

6.                

7.              @Override  

8.              publicvoid callback(Runnable run) {  

9.                  AppActivity.this.runOnGLThread(run);  

10.             }  

11.         });  

12.     }  

13.   

14. @Override  

15.     protectedvoidonResume() {  

16.         super.onResume();  

17.         /*易接onResume*/  

18.         SFOnlineHelper.onResume(this);  

19.     }  

20.   

21.     @Override  

22.     protectedvoidonPause() {  

23.         super.onPause();  

24.         /*易接onPause*/  

25.         SFOnlineHelper.onPause(this);  

26.     }  

27.   

28.     @Override  

29.     protectedvoidonDestroy() {  

30.         super.onDestroy();  

31.         /*易接onDestroy*/  

32.         SFOnlineHelper.onDestroy(this);  

33.     }  

34.   

35.     @Override  

36.     protectedvoidonStop() {  

37.         super.onStop();  

38.         /*易接onStop*/  

39.         SFOnlineHelper.onStop(this);  

40.     }  

41.   

42. @Override  

43. protectedvoidonRestart() {  

44. super.onRestart ();  

45. /*易接onRestart*/  

46. SFOnlineHelper.onRestart(this);  

47.     } 

2.2 实例化易接SDK接口(必选接口)

1.  --获取易接接口  

2.  require "YijieInterface"  

3.  localyijie = YijieInterface.new()  

2.3 易接SDK初始化回调接口(必选接口)

1.  --注册SDK初始化回调  

2.  yijie:setSDKInitListener(sdkInitCallbackFunc)  

3.  --SDK初始化回调  

4.  local function sdkInitCallbackFunc(jPrama)  

5.      require "json"  

6.      local data = json.decode(jPrama);     

7.      if data["tag"] == "success" then --SDK初始化成功  

8.      elseif data["tag"] == "fail" then --SDK初始化失败  

9.       end       

10. end  

2.4 易接用户登陆登出接口(必选接口)

1.  --注册登陆回调  

2.  yijie:setLoginListener(loginCallback)  

3.    

4.  --调用登陆接口  

5.  yijie:login("login")  

6.  --调用登出接口  

7.  yijie:logout("logout")  

8.    

9.  --登陆回调  

10. functionloginCallback(jPrama)  

11.     require "json"  

12.     local data = json.decode(jPrama);  

13.     if data["result"] == "success" then--登录成功  

14.         localproductCode = data ["productCode"]  

15.         localchannelId = data ["channelId"]  

16.         localchannelUserId = data ["channelUserId"]  

17.         local token = data ["token"]  

18.         local id = data ["id"]  

19.         localuserName = data ["userName"]  

20.     elseif data["result"] == "fail" then--登陆失败        

21.     elseif data["result"] == "logout" then--登出回调          

22.     end  

23. end 

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

部分渠道SDK不支持定额支付接口,即:用户在支付界面时可以修改支付金额,所以游戏支付成功的标准一定以服务支付回调回来的金额为准

1.  yijie:pay(  

2.  price/*道具价格单位分*/,   

3.  name/*道具名称*//*注意:一定要确保道具名称唯一性,不能出现多个道具名称相同的现象*/,  

4.  /*个数默认为1*/,  

5.  "callbackinfo"/*此次支付透传参数*/,    

6.  "http://game.pay?id=1"/*游戏接收支付回调地址*//*注意:这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。*/,  

7.  payCallback);  

8.    

9.  --支付回调  

10. functionpayCallback(jPrama)  

11.     require "json"  

12.     local data = json.decode(jPrama);  

13.     if data["result"] == "success" then--支付成功  

14.     elseif data["result"] == "oderno" then--支付订单  

15.         print("支付订单号", data["remain"])  

16.     elseif data["result"] == "fail" then--支付失败  

17.     end  

18. end  

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

非定额支付接口,即:用户在支付界面时可以修改支付金额,所以游戏支付成功的标准一定以服务支付回调回来的金额为准

1.  yijie:charge (  

2.  "100"/*道具名称*//*注意:一定要确保道具名称唯一性,不能出现多个道具名称相同的现象*/,  

3.  100/*价格单位分*/,  

4.  1/*道具个数*/,   

5.  "test callbackinfo"/*此次支付透传参数*/,    

6.  "http://game.pay?id=1"/*游戏接收支付回调地址*//*注意:这里的回调地址可以填也可以为空字串,如果填了则以这里的回调地址为主,如果为空则以易接开发者中心设置的回调地址为准。*/,  

2.7 payCallback/*支付回调函数*/,); 设置角色基本数据(必选接口)

游戏登陆完成后根据用户选择的角色调用此接口,切记游戏内用户切换角色也需要调用

1.  yijie:setRoleData(  

2.  "001"/*角色唯一标识*/,   

3.  "法师"/*角色名*/,  

4.  "30"/*角色等级*/,  

5.  "1000"/*区域唯一标识*/,  

6.  "一区"/*区域名称*/);  

2.8 退出回调接口(必选接口)

在游戏退出按键上调用如下代码:

1.  yijie:exit(exitCallback);  

2.    

3.  --退出回调  

4.  functionexitCallback(jPrama)  

5.      require "json"  

6.      local data = json.decode(jPrama);     

7.      if data["result"] == "exit" then--退出游戏    

8.          os.exit()  

9.      elseif data["result"] == "noExit" then--继续游戏      

10.     elseif data["result"] == "noProvide" then--使用游戏自己的退出界面        

11.     end  

12. end  

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

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

1.  接口:yijie:setDataString(key,value)    

2.  参数描述:    

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

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

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

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

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

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

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

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

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

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

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

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

15. localjson = require "json"    

16.             local tab = {}    

17.             tab["roleId"]="1"    

18.             tab["roleName"]="猎人"    

19.             tab["roleLevel"]="100"    

20.             tab["zoneId"]="1"    

21.             tab["zoneName"]="阿狸一区"    

22.             tab["balance"]="0"    

23.             tab["vip"]="1"    

24.             tab["partyName"]="无帮派"    

25.             tab["roleCTime"]="21322222"    

26.             tab["roleLevelMTime"]="54456556"    

27. localjsonData = json.encode(tab)   

 

key

接口描述

调用示例

createrole

创建新角色时调用

yijie:setDataString("createrole ", jsonData);

levelup

玩家升级角色时调用

yijie:setDataString("levelup",jsonData);

enterServer

选择服务器进入时调用

yijie:setDataString("enterServer",jsonData);

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

2.10 扩展接口(可选接口)

1.  yijie:extend(data, count, callbackFunc)  

data是需要传入接口的数据,如果参数比较多,可以传json字符串

count需要注册多少个回调函数

callbackFunclua回调函数

使用示例:

1.  yijie:extend (“data”, 3, extendCallback)  

2.  functionextendCallback (jPrama)  

3.      require "json"  

4.      local data = json.decode(jPrama);  

5.      local index = data["result"]  

6.      local tag = data["tag"]  

7.  local value = data["value"]  

8.  end  

2.11 用户登陆验证(必选接口

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

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

参数

获取方式

类型

注释

appId

userInfo["productCode"]

String

易接平台创建的游戏IDappId

请使用URLEncoder编码

channelId

userInfo["channelId"]

String

易接平台标示的渠道SDK ID

请使用URLEncoder编码

userId

userInfo["channelUserId"]

String

渠道SDK标示的用户ID

请使用URLEncoder编码

 

token

userInfo["token"]

String

渠道SDK登录完成后的Session ID

请使用URLEncoder编码

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

调用用例:参考demo中的

functionloginCheck(userInfo)