Cocos2d-Lua(Quick-Cocos2d-x)集成第三方SDK(一)

在我们实际开发过程中,经常会遇到需要使用第三方SDK的情况。比如我们常用的:友盟,TalkingData之类的统计分析SDK;移动MM,电信爱游戏之类的计费SDK;个推,百度推送之类的推送SDK。诸如此类的在iOS平台也有一大堆。那么在使用Quick-Cocos2d-x的过程中怎么把它们接入到游戏中呢?我们这几篇文章就来介绍下。

  • 引擎版本: Quick-Cocos2d-x 3.3
  • 开发系统: Windows 7 64bit

目前接入方式

目前接入SDK的方式有很多种,我们这里只说下对Cocos2d-x常用的几种:

  1. 使用AnySDK来接入;
  2. 使用第三方SDK提供的Cocos2d-x版本来接入;
  3. 使用第三方SDK提供的Java或者OC版本。

AnySDK是Cocos2d-x官方提供的一套很完善的接入第三方SDK的工具。它接入简单、方便、快捷,而且支持众多的SDK,能够实现一键式的接入。官网请点击这里,另外它还有非常详尽的文档,请点击这里。如果是企业用户的话,推荐使用AnySDK,它本身已经支持了诸如斯凯、移动游戏基地、GooglePlay、91等渠道,也支持用户、支付、广告、分享统计和推送的大量SDK。对于打包和加固也基本上是一次配置,全程通用了。因为企业渠道的打包往往是几十上百个包,如果使用AnySDK,在一次配置完成之后,每次都只需要轻轻一点就能够在旁边喝茶。这样无疑为企业节约了大量的开发时间和人力成本。

而对于个人或者小团队来说,往往支持的渠道有限,限于开发成本的原因,需要支持的SDK比较少,而且对包的限制也会比较大,这种时候使用2,3种方式相对来说显得更为经济和简单,并且也更为灵活和方便。难点在于需要自己编写集成代码。对于第2种方法,如果是使用C++语言的话来编写游戏的话使用会很方便,如果是使用Lua的话,需要自己写一层C++到Lua的封装。而目前很多的第三方SDK都提供了Cocos2d-x的版本。大部分时候我们都只需要下载一个第三方SDK的C++版本。然后简单的集成一下,就可以在C++代码中直接调用了。

但是又的情况下第三方SDK C++版本对接口的支持可能不如对原生平台版本(Java或者OC)支持的完善,那么这个时候我们更多的可能会使用原生平台版本,中间自己提供一层接口来供C++调用,这也就是我们这里的第3种方式。

接入示例

接下来我们以友盟为例来讲下怎么使用。AnySDK的讲解我们在这里先不讲,大家可以参考官方网站上的文档。

接入Cocos2d-x版本的友盟

首先我们来看下怎么接入友盟的Cocos2d-x版本。

  1. 注册账号

    打开友盟官方网站:http://www.umeng.com/注册账号并且申请一个应用,如果所示:

    这里需要注意的是如果你是使用Cocos2d-x版本的话最好把那个“使用Cocos2dx插件”的选项勾上,避免产生不必要的错误

    信息填写完成后点击“提交并获取AppKey”,会显示一些创建出来的游戏的信息。

    这里的信息就是我们需要在游戏里使用的appkey。

  2. 下载SDK

    在账号注册完成后,我们打开友盟的SDK下载界面:http://dev.umeng.com/game_analytics/game-c2d/sdk-download,点击“SDK下载”,下载SDK到本地。

  3. 集成到C++里

    • Android

      • 将libMobClickCpp文件夹复制到[COCOS2DX_ROOT]/external目录下,并且将mobclickcpphelper.jar复制到Android工程的libs目录中,

      • 改你的工程Android.mk文件在LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static后添加LOCAL_WHOLE_STATIC_LIBRARIES += mobclickcpp_static,在$(call import-module,cocos2dx)后添加$(call import-module,libMobClickCpp)。如果你的工程没有使用libcurl库,还要在相应位置添加$(call import-module,cocos2dx/platform/third_party/android/prebuilt/libcurl)(cocos2d-x 3.0以上请替换为$(call import-module,curl/prebuilt/android))和LOCAL_WHOLE_STATIC_LIBRARIES += cocos_curl_static

      • 添加权限

      在AndroidMainfest.xml文件添加以下权限

      1
      2
      3
      4
      <uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" ></uses-permission>
      <uses-permission android:name= "android.permission.INTERNET" ></uses-permission>
      <uses-permission android:name= "android.permission.READ_PHONE_STATE" ></uses-permission>
      <uses-permission android:name= "android.permission.ACCESS_WIFI_STATE" ></uses-permission>
      1
      MobClickCppHelper.init( this );
      • 在游戏主main.cpp中加入如下代码
      4
      5
      6
      7
      8
      9
      10
      11
      #include "MobClickJniHelper.h"
      ...
      extern "C"
      {
      jint JNI_OnLoad(JavaVM *vm, void *reserved)
      {
      JniHelper::setJavaVM(vm);
      umeng::MobClickJniHelper::setJavaVM(vm);
      return JNI_VERSION_1_4;
      }
      }
    • iOS

      iOS的集成就简单很多了。

      • 所需文件: libMobClickCpp.a(请查看C++ Standard Library的设置,xcode默认的Compiler Default是libstdc++,如果您的项目正在使用libc++编译请使用libMobClickCppWithLibCpp.a) MobClickCpp.h

      • 请在你的工程目录结构中,右键选择Add->Existing Files…,选择这两个文件。或者将这两个文件拖入XCode工程目录结构中,在弹出的界面中勾选Copy items into destination group's folder(if needed),并确保Add To Targets勾选相应的target。 如果你的工程没有使用libcurl库,还要把[COCOS2DX_ROOT]/external/curl/prebuilt/ios/libcurl.a)按照上面的方法加入到工程中。

    集成到这里就算搞定了,接下来的就是使用了。使用的话可以直接参考官方的API文档。

好了,我们先说到这里,后面的章节我们将会将怎么把C++接口转成Lua接口,和怎么在Lua中直接调用Java版本的友盟。

相关文章

操作步骤 1、创建cocos2d-x工程 2、新建 Scene1.cpp Scene1.h Scene1.h代码 #ifndef __SCENE1_H__#defi...
开发环境:OS(WINDOWS 8.1 X64 企业版) cocos2d-x 2.2.1 vs2010 想给vs安装上cocos的模版,执行Install...
把创建项目做成一个批处理,当创建项目时可以省时省力很多。 操作步骤 1、在 E:cocos2d-x-2.2.1toolspr...
https://www.cnblogs.com/JiaoQing/p/3906780.html 四个响应函数 1 EventListenerPhysicsContact* evC...
转载于 http://www.cnblogs.com/kenkofox/p/3926797.html 熟悉js的dom事件或者flash事件的,基本都能立...
ScrollView(滚动容器)加载大量item时会导致游戏界面的卡顿,严重时整个界面会出现卡死的情况。最近项...