在我们实际开发过程中,经常会遇到需要使用第三方SDK的情况。比如我们常用的:友盟,TalkingData之类的统计分析SDK;移动MM,电信爱游戏之类的计费SDK;个推,百度推送之类的推送SDK。诸如此类的在iOS平台也有一大堆。那么在使用Quick-Cocos2d-x的过程中怎么把它们接入到游戏中呢?我们这几篇文章就来介绍下。
- 引擎版本: Quick-Cocos2d-x 3.3
- 开发系统: Windows 7 64bit
目前接入方式
目前接入SDK的方式有很多种,我们这里只说下对Cocos2d-x常用的几种:
- 使用AnySDK来接入;
- 使用第三方SDK提供的Cocos2d-x版本来接入;
- 使用第三方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版本。
-
注册账号
打开友盟官方网站:http://www.umeng.com/。注册账号并且申请一个应用,如果所示:
这里需要注意的是如果你是使用Cocos2d-x版本的话最好把那个“使用Cocos2dx插件”的选项勾上,避免产生不必要的错误。
信息填写完成后点击“提交并获取AppKey”,会显示一些创建出来的游戏的信息。
这里的信息就是我们需要在游戏里使用的appkey。
-
下载SDK
在账号注册完成后,我们打开友盟的SDK下载界面:http://dev.umeng.com/game_analytics/game-c2d/sdk-download,点击“SDK下载”,下载SDK到本地。
-
集成到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
- 添加权限
1234<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
567891011#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版本的友盟。